Skip to content

Commit 8450ce7

Browse files
trojczakRafał Trójczak
andauthored
28 suppressing named individuals (#37)
* Add documentation update and upgrade the project version Co-authored-by: Rafał Trójczak <Rafal.Trojczak@makolab.com>
1 parent a4869c0 commit 8450ce7

17 files changed

+1619
-1290
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ java -jar rdf-toolkit.jar --source C:/source_ontologies/example.rdf --target C:/
9191
turtle (Turtle)
9292
-sip,--short-iri-priority <arg> set what takes priority when shortening IRIs: prefix
9393
[default], base-iri
94+
-sni,--suppress-named-individuals suppresses all instances of owl:NamedIndividual
9495
-t,--target <arg> target (output) RDF file
9596
-tc,--trailing-comment <arg> sets the text of the trailing comment in the ontology. Can
9697
be repeated for a multi-line comment

pom.xml

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66

77
<groupId>org.edmcouncil</groupId>
88
<artifactId>rdf-toolkit</artifactId>
9-
<version>1.13.0</version>
9+
<version>1.14.0</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1313
<maven.compiler.source>11</maven.compiler.source>
1414
<maven.compiler.target>11</maven.compiler.target>
15+
16+
<!-- Versions -->
17+
<logback.version>1.4.4</logback.version>
18+
<junit.jupiter.version>5.9.0</junit.jupiter.version>
1519
</properties>
1620

1721
<repositories>
@@ -82,19 +86,25 @@
8286
<dependency>
8387
<groupId>ch.qos.logback</groupId>
8488
<artifactId>logback-classic</artifactId>
85-
<version>1.2.11</version>
89+
<version>${logback.version}</version>
8690
</dependency>
8791

8892
<dependency>
8993
<groupId>org.junit.jupiter</groupId>
9094
<artifactId>junit-jupiter-api</artifactId>
91-
<version>5.9.0</version>
95+
<version>${junit.jupiter.version}</version>
9296
<scope>test</scope>
9397
</dependency>
9498
<dependency>
9599
<groupId>org.junit.jupiter</groupId>
96100
<artifactId>junit-jupiter-engine</artifactId>
97-
<version>5.9.0</version>
101+
<version>${junit.jupiter.version}</version>
102+
<scope>test</scope>
103+
</dependency>
104+
<dependency>
105+
<groupId>org.junit.jupiter</groupId>
106+
<artifactId>junit-jupiter-params</artifactId>
107+
<version>${junit.jupiter.version}</version>
98108
<scope>test</scope>
99109
</dependency>
100110
</dependencies>
@@ -252,7 +262,6 @@
252262
</execution>
253263
</executions>
254264
</plugin>
255-
256265
</plugins>
257266
</build>
258267
</project>

src/main/java/org/edmcouncil/rdf_toolkit/RdfFormatter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424

2525
package org.edmcouncil.rdf_toolkit;
2626

27+
import java.io.PrintWriter;
28+
import java.io.StringWriter;
2729
import org.edmcouncil.rdf_toolkit.runner.RdfToolkitRunner;
2830
import org.slf4j.Logger;
2931
import org.slf4j.LoggerFactory;
30-
import java.io.PrintWriter;
31-
import java.io.StringWriter;
3232

3333
/**
3434
* RDF formatter that formats in a consistent order, friendly for version control systems.
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
/*
2+
* The MIT License (MIT)
3+
*
4+
* Copyright (c) 2015 Enterprise Data Management Council
5+
*
6+
* Permission is hereby granted, free of charge, to any person obtaining a copy
7+
* of this software and associated documentation files (the "Software"), to deal
8+
* in the Software without restriction, including without limitation the rights
9+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+
* copies of the Software, and to permit persons to whom the Software is
11+
* furnished to do so, subject to the following conditions:
12+
*
13+
* The above copyright notice and this permission notice shall be included in all
14+
* copies or substantial portions of the Software.
15+
*
16+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22+
* SOFTWARE.
23+
*/
24+
package org.edmcouncil.rdf_toolkit.runner;
25+
26+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.HELP;
27+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.VERSION;
28+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.EXIT;
29+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.PRINT_AND_EXIT;
30+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.PRINT_USAGE_AND_EXIT;
31+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.RUN_ON_DIRECTORY;
32+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.RUN_ON_FILE;
33+
34+
import com.jcabi.manifests.Manifests;
35+
import java.io.FileNotFoundException;
36+
import org.apache.commons.cli.CommandLine;
37+
import org.apache.commons.cli.CommandLineParser;
38+
import org.apache.commons.cli.DefaultParser;
39+
import org.apache.commons.cli.HelpFormatter;
40+
import org.apache.commons.cli.Options;
41+
import org.apache.commons.cli.ParseException;
42+
import org.eclipse.rdf4j.model.ValueFactory;
43+
import org.eclipse.rdf4j.sail.memory.model.MemValueFactory;
44+
import org.edmcouncil.rdf_toolkit.RdfFormatter;
45+
import org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption;
46+
import org.edmcouncil.rdf_toolkit.runner.exception.RdfToolkitOptionHandlingException;
47+
48+
public class CommandLineArgumentsHandler {
49+
50+
private final Options options;
51+
private final ValueFactory valueFactory;
52+
53+
public CommandLineArgumentsHandler() {
54+
this.options = CommandLineOption.prepareOptions();
55+
this.valueFactory = new MemValueFactory();
56+
}
57+
58+
public RdfToolkitOptions handleArguments(String[] args)
59+
throws RdfToolkitOptionHandlingException, FileNotFoundException, ParseException {
60+
var rdfToolkitOptions = new RdfToolkitOptions(args);
61+
62+
// Parse the command line options.
63+
CommandLineParser parser = new DefaultParser();
64+
CommandLine line = parser.parse(options, args);
65+
rdfToolkitOptions.setCommandLine(line);
66+
67+
var optionHandler = new OptionHandler(rdfToolkitOptions);
68+
69+
// Print out version, if requested.
70+
if (line.hasOption(VERSION.getShortOpt())) {
71+
rdfToolkitOptions.setOutput(getVersion());
72+
rdfToolkitOptions.setRunningMode(PRINT_AND_EXIT);
73+
return rdfToolkitOptions;
74+
}
75+
76+
// Print out help, if requested.
77+
if (line.hasOption(HELP.getShortOpt())) {
78+
usage(options);
79+
rdfToolkitOptions.setRunningMode(EXIT);
80+
return rdfToolkitOptions;
81+
}
82+
83+
optionHandler.handleRunningOnDirectory(line, rdfToolkitOptions);
84+
if (rdfToolkitOptions.getRunningMode() == PRINT_USAGE_AND_EXIT) {
85+
usage(options);
86+
return rdfToolkitOptions;
87+
}
88+
if (rdfToolkitOptions.getRunningMode() == RUN_ON_DIRECTORY) {
89+
return rdfToolkitOptions;
90+
}
91+
92+
var sourceFile = optionHandler.handleSourceFile();
93+
optionHandler.handleTargetFile();
94+
optionHandler.handleBaseIri(valueFactory);
95+
optionHandler.handleIriReplacementOptions();
96+
optionHandler.handleUseDtdSubset();
97+
optionHandler.handleInlineBlankNodes();
98+
optionHandler.handleInferBaseIri();
99+
optionHandler.handleLeadingComments();
100+
optionHandler.handleTrailingComments();
101+
optionHandler.handleStringDataTyping();
102+
optionHandler.handleOverrideStringLanguage();
103+
optionHandler.handleIndent();
104+
optionHandler.handleSourceFormat(sourceFile);
105+
optionHandler.handleTargetFormat();
106+
optionHandler.handleShortUriPref();
107+
optionHandler.handleLineEnd();
108+
optionHandler.handleOmitXmlnsNamespace();
109+
optionHandler.handleSuppressNamedIndividuals();
110+
111+
rdfToolkitOptions.setRunningMode(RUN_ON_FILE);
112+
113+
return rdfToolkitOptions;
114+
}
115+
116+
private void usage(Options options) {
117+
HelpFormatter formatter = new HelpFormatter();
118+
formatter.setWidth(100);
119+
formatter.printHelp(getVersion(), options);
120+
}
121+
122+
private String getVersion() {
123+
String implementationTitle = Manifests.read("Implementation-Title");
124+
String implementationVersion = Manifests.read("Implementation-Version");
125+
return String.format(
126+
"%s (%s version %s)",
127+
RdfFormatter.class.getSimpleName(),
128+
implementationTitle,
129+
implementationVersion);
130+
}
131+
}

src/main/java/org/edmcouncil/rdf_toolkit/runner/OptionHandler.java

Lines changed: 47 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -21,30 +21,32 @@
2121
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2222
* SOFTWARE.
2323
*/
24+
2425
package org.edmcouncil.rdf_toolkit.runner;
2526

26-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.BASE_IRI;
27-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.INDENT;
28-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.INFER_BASE_IRI;
29-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.INLINE_BLANK_NODES;
30-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.LEADING_COMMENT;
31-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.LINE_END;
32-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.OMIT_XMLNS_NAMESPACE;
33-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.OVERRIDE_STRING_LANGUAGE;
34-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.SHORT_IRI_PRIORITY;
35-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.SOURCE;
36-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.SOURCE_DIRECTORY;
37-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.SOURCE_DIRECTORY_PATTERN;
38-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.SOURCE_FORMAT;
39-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.STRING_DATA_TYPING;
40-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.TARGET;
41-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.TARGET_DIRECTORY;
42-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.TARGET_DIRECTORY_PATTERN;
43-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.TARGET_FORMAT;
44-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.TRAILING_COMMENT;
45-
import static org.edmcouncil.rdf_toolkit.runner.CommandLineOption.USE_DTD_SUBSET;
46-
import static org.edmcouncil.rdf_toolkit.runner.RunningMode.PRINT_USAGE_AND_EXIT;
47-
import static org.edmcouncil.rdf_toolkit.runner.RunningMode.RUN_ON_DIRECTORY;
27+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.BASE_IRI;
28+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.INDENT;
29+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.INFER_BASE_IRI;
30+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.INLINE_BLANK_NODES;
31+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.LEADING_COMMENT;
32+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.LINE_END;
33+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.OMIT_XMLNS_NAMESPACE;
34+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.OVERRIDE_STRING_LANGUAGE;
35+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SHORT_IRI_PRIORITY;
36+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SOURCE;
37+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SOURCE_DIRECTORY;
38+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SOURCE_DIRECTORY_PATTERN;
39+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SOURCE_FORMAT;
40+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.STRING_DATA_TYPING;
41+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.SUPPRESS_NAMED_INDIVIDUALS;
42+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.TARGET;
43+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.TARGET_DIRECTORY;
44+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.TARGET_DIRECTORY_PATTERN;
45+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.TARGET_FORMAT;
46+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.TRAILING_COMMENT;
47+
import static org.edmcouncil.rdf_toolkit.runner.constant.CommandLineOption.USE_DTD_SUBSET;
48+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.PRINT_USAGE_AND_EXIT;
49+
import static org.edmcouncil.rdf_toolkit.runner.constant.RunningMode.RUN_ON_DIRECTORY;
4850
import org.apache.commons.cli.CommandLine;
4951
import org.eclipse.rdf4j.model.IRI;
5052
import org.eclipse.rdf4j.model.ValueFactory;
@@ -60,9 +62,7 @@
6062
import java.io.File;
6163
import java.io.FileInputStream;
6264
import java.io.FileNotFoundException;
63-
import java.io.FileOutputStream;
6465
import java.io.InputStream;
65-
import java.io.OutputStream;
6666

6767
public class OptionHandler {
6868

@@ -159,29 +159,29 @@ public File handleSourceFile() throws RdfToolkitOptionHandlingException, FileNot
159159

160160
public void handleRunningOnDirectory(CommandLine commandLine, RdfToolkitOptions rdfToolkitOptions) {
161161
// Check if the command-line options suggest that a directory of files is to be formatted
162-
if (commandLine.hasOption(SOURCE_DIRECTORY.getShortOpt()) ||
163-
commandLine.hasOption(SOURCE_DIRECTORY_PATTERN.getShortOpt()) ||
164-
commandLine.hasOption(TARGET_DIRECTORY.getShortOpt()) ||
165-
commandLine.hasOption(TARGET_DIRECTORY_PATTERN.getShortOpt())) {
162+
if (commandLine.hasOption(SOURCE_DIRECTORY.getShortOpt())
163+
|| commandLine.hasOption(SOURCE_DIRECTORY_PATTERN.getShortOpt())
164+
|| commandLine.hasOption(TARGET_DIRECTORY.getShortOpt())
165+
|| commandLine.hasOption(TARGET_DIRECTORY_PATTERN.getShortOpt())) {
166166
// Assume user wants to process a directory of files.
167-
if (!commandLine.hasOption(SOURCE_DIRECTORY.getShortOpt()) ||
168-
!commandLine.hasOption(SOURCE_DIRECTORY_PATTERN.getShortOpt()) ||
169-
!commandLine.hasOption(TARGET_DIRECTORY.getShortOpt()) ||
170-
!commandLine.hasOption(TARGET_DIRECTORY_PATTERN.getShortOpt())) {
171-
LOGGER.error("Directory processing options must all be used together: -sd (--source-directory), " +
172-
"-sdp (--source-directory-pattern), -td (--target-directory), -tdp (--target-directory-pattern)");
167+
if (!commandLine.hasOption(SOURCE_DIRECTORY.getShortOpt())
168+
|| !commandLine.hasOption(SOURCE_DIRECTORY_PATTERN.getShortOpt())
169+
|| !commandLine.hasOption(TARGET_DIRECTORY.getShortOpt())
170+
|| !commandLine.hasOption(TARGET_DIRECTORY_PATTERN.getShortOpt())) {
171+
LOGGER.error("Directory processing options must all be used together: -sd (--source-directory), "
172+
+ "-sdp (--source-directory-pattern), -td (--target-directory), -tdp (--target-directory-pattern)");
173173
rdfToolkitOptions.setRunningMode(PRINT_USAGE_AND_EXIT);
174174
}
175-
if (commandLine.hasOption(SOURCE.getShortOpt()) ||
176-
commandLine.hasOption(TARGET.getShortOpt())) {
177-
LOGGER.error("Source (-s or --source) and target (-t or --target) options cannot be used together with " +
178-
"directory processing options.");
175+
if (commandLine.hasOption(SOURCE.getShortOpt())
176+
|| commandLine.hasOption(TARGET.getShortOpt())) {
177+
LOGGER.error("Source (-s or --source) and target (-t or --target) options cannot be used together with "
178+
+ "directory processing options.");
179179
rdfToolkitOptions.setRunningMode(PRINT_USAGE_AND_EXIT);
180180
}
181-
if (!commandLine.hasOption(SOURCE_FORMAT.getShortOpt()) ||
182-
!commandLine.hasOption(TARGET_FORMAT.getShortOpt())) {
183-
LOGGER.error("Source format (-sfmt or --source-format) and target format (-tfmt or --target-format) options " +
184-
"must be provided when using directory processing options.");
181+
if (!commandLine.hasOption(SOURCE_FORMAT.getShortOpt())
182+
|| !commandLine.hasOption(TARGET_FORMAT.getShortOpt())) {
183+
LOGGER.error("Source format (-sfmt or --source-format) and target format (-tfmt or --target-format) options "
184+
+ "must be provided when using directory processing options.");
185185
rdfToolkitOptions.setRunningMode(PRINT_USAGE_AND_EXIT);
186186
}
187187

@@ -386,4 +386,9 @@ public void handleOmitXmlnsNamespace() {
386386
boolean omitXmlnsNamespace = commandLine.hasOption(OMIT_XMLNS_NAMESPACE.getShortOpt());
387387
rdfToolkitOptions.setOmitXmlnsNamespace(omitXmlnsNamespace);
388388
}
389+
390+
public void handleSuppressNamedIndividuals() {
391+
boolean suppressNamedIndividuals = commandLine.hasOption(SUPPRESS_NAMED_INDIVIDUALS.getShortOpt());
392+
rdfToolkitOptions.setSuppressNamedIndividuals(suppressNamedIndividuals);
393+
}
389394
}

src/main/java/org/edmcouncil/rdf_toolkit/runner/RdfToolkitOptions.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import static org.edmcouncil.rdf_toolkit.util.Constants.OVERRIDE_STRING_LANGUAGE;
3434
import static org.edmcouncil.rdf_toolkit.util.Constants.SHORT_URI_PREF;
3535
import static org.edmcouncil.rdf_toolkit.util.Constants.STRING_DATA_TYPE_OPTION;
36+
import static org.edmcouncil.rdf_toolkit.util.Constants.SUPPRESS_NAMED_INDIVIDUALS;
3637
import static org.edmcouncil.rdf_toolkit.util.Constants.TRAILING_COMMENTS;
3738
import static org.edmcouncil.rdf_toolkit.util.Constants.USE_DTD_SUBSET;
3839

@@ -44,6 +45,7 @@
4445
import org.eclipse.rdf4j.model.IRI;
4546
import org.eclipse.rdf4j.rio.RDFFormat;
4647
import org.edmcouncil.rdf_toolkit.io.format.TargetFormats;
48+
import org.edmcouncil.rdf_toolkit.runner.constant.RunningMode;
4749
import org.edmcouncil.rdf_toolkit.util.ShortIriPreferences;
4850
import org.edmcouncil.rdf_toolkit.util.StringDataTypeOptions;
4951

@@ -74,6 +76,7 @@ public class RdfToolkitOptions {
7476
private String overrideStringLanguage;
7577
private String lineEnd;
7678
private boolean omitXmlnsNamespace;
79+
private boolean suppressNamedIndividuals;
7780

7881
public RdfToolkitOptions(String[] args) {
7982
this.args = args;
@@ -104,6 +107,7 @@ public Map<String, Object> getOptions() {
104107
options.put(OVERRIDE_STRING_LANGUAGE, getOverrideStringLanguage());
105108
options.put(LINE_END, getLineEnd());
106109
options.put(OMIT_XMLNS_NAMESPACE, getOmitXmlnsNamespace());
110+
options.put(SUPPRESS_NAMED_INDIVIDUALS, getSuppressNamedIndividuals());
107111
return options;
108112
}
109113

@@ -290,4 +294,12 @@ public boolean getOmitXmlnsNamespace() {
290294
public void setOmitXmlnsNamespace(boolean omitXmlnsNamespace) {
291295
this.omitXmlnsNamespace = omitXmlnsNamespace;
292296
}
297+
298+
public boolean getSuppressNamedIndividuals() {
299+
return suppressNamedIndividuals;
300+
}
301+
302+
public void setSuppressNamedIndividuals(boolean suppressNamedIndividuals) {
303+
this.suppressNamedIndividuals = suppressNamedIndividuals;
304+
}
293305
}

0 commit comments

Comments
 (0)