diff --git a/pom.xml b/pom.xml
index 7a70ea48..ef8b73ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,6 +5,10 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
+
+ 3.0.5
+
+
org.sonatype.oss
oss-parent
@@ -21,7 +25,7 @@
net.sourceforge.owlapi
org.semanticweb.hermit
- 1.4.1.514-SNAPSHOT
+ 1.4.3.517
bundle
HermiT
@@ -52,10 +56,6 @@
UTF-8
-
- 2.2.1
-
-
release
@@ -71,7 +71,7 @@
org.apache.maven.plugins
maven-gpg-plugin
- 1.4
+ 1.6
sign-artifacts
@@ -85,7 +85,7 @@
org.apache.maven.plugins
maven-source-plugin
- 2.1.2
+ 3.0.1
attach-sources
@@ -98,7 +98,7 @@
org.sonatype.plugins
nexus-staging-maven-plugin
- 1.6.5
+ 1.6.7
true
ossrh
@@ -116,7 +116,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.3
+ 3.6.0
1.8
1.8
@@ -125,11 +125,9 @@
org.apache.maven.plugins
maven-surefire-plugin
- 2.6
+ 2.19.1
-
- **/structural/*java
**/BlockingValidatorTest.java
@@ -138,12 +136,12 @@
org.apache.maven.plugins
maven-jar-plugin
- 2.6
+ 3.0.2
org.apache.maven.plugins
maven-source-plugin
- 2.2
+ 3.0.1
attach-source
@@ -156,7 +154,7 @@
org.apache.maven.plugins
maven-javadoc-plugin
- 3.0.0
+ 3.0.1
public
@@ -205,7 +203,9 @@
!org.apache.*,
+ !gnu.getopt,
!javax.*,
+ javax.xml.stream.*,
!org.codehaus.*,
!org.jaxen*,
org.protege.editor.owl.*;version="4.3",
@@ -236,7 +236,7 @@
net.sourceforge.owlapi
owlapi-distribution
- 5.1.3
+ 5.1.7
org.apache.ws.commons.axiom
@@ -293,6 +293,16 @@
+
+ gnu.getopt
+ java-getopt
+ 1.0.13
+
+
+ net.sf.trove4j
+ trove4j
+ 3.0.3
+
diff --git a/src/main/java/org/semanticweb/HermiT/Prefixes.java b/src/main/java/org/semanticweb/HermiT/Prefixes.java
index 060f8378..90d07d05 100644
--- a/src/main/java/org/semanticweb/HermiT/Prefixes.java
+++ b/src/main/java/org/semanticweb/HermiT/Prefixes.java
@@ -14,9 +14,9 @@
You should have received a copy of the GNU Lesser General Public License
along with HermiT. If not, see .
-*/
-package org.semanticweb.HermiT;
-
+*/
+package org.semanticweb.HermiT;
+
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
@@ -29,119 +29,121 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
-/**
- * This class is responsible for abbreviating IRIs. The resulting IRIs can be either
- * 1) <uri> or
- * 2) prefix-name:local-name where prefix-name can be empty.
- * Forms 1 and 2 are dependent upon a set of prefix declarations that associates prefix names with prefix IRIs.
- * A IRI abbreviated using form 2 that uses an unregistered prefix is invalid---expanding it will result in an exception.
- * Neither prefixes nor local names may contain colon characters. The grammar used for various parts of the IRIs is as follows:
- * PN_CHARS_BASE ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] |
- * [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
- * PN_CHARS ::= PN_CHARS_BASE | '_' | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
- * PN_LOCAL ::= ( PN_CHARS_BASE | '_' | [0-9] ) ( ( PN_CHARS | '.' )* PN_CHARS )?
- * PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | '.' )* PN_CHARS )?
- */
-public class Prefixes implements Serializable {
- private static final long serialVersionUID=-158185482289831766L;
-
- protected static final String PN_CHARS_BASE="[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]";
- protected static final String PN_CHARS="[A-Za-z0-9_\\u002D\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0300-\\u036F\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]";
+
+/**
+ * This class is responsible for abbreviating IRIs. The resulting IRIs can be either
+ * 1) <uri> or
+ * 2) prefix-name:local-name where prefix-name can be empty.
+ * Forms 1 and 2 are dependent upon a set of prefix declarations that associates prefix names with prefix IRIs.
+ * A IRI abbreviated using form 2 that uses an unregistered prefix is invalid---expanding it will result in an exception.
+ * Neither prefixes nor local names may contain colon characters. The grammar used for various parts of the IRIs is as follows:
+ * PN_CHARS_BASE ::= [A-Z] | [a-z] | [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x02FF] | [#x0370-#x037D] | [#x037F-#x1FFF] |
+ * [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+ * PN_CHARS ::= PN_CHARS_BASE | '_' | '-' | [0-9] | #x00B7 | [#x0300-#x036F] | [#x203F-#x2040]
+ * PN_LOCAL ::= ( PN_CHARS_BASE | '_' | [0-9] ) ( ( PN_CHARS | '.' )* PN_CHARS )?
+ * PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | '.' )* PN_CHARS )?
+ */
+public class Prefixes implements Serializable {
+ private static final long serialVersionUID=-158185482289831766L;
+
+ protected static final String PN_CHARS_BASE="[A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]";
+ protected static final String PN_CHARS="[A-Za-z0-9_\\u002D\\u00B7\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0300-\\u036F\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u203F-\\u2040\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]";
protected static final Pattern s_localNameChecker=Pattern.compile("("+PN_CHARS_BASE+"|_|[0-9])(("+PN_CHARS+"|[.])*("+PN_CHARS+"))?");
/**semantic prefixes*/
- public static final Map s_semanticWebPrefixes = semanticPrefixes();
- static Map semanticPrefixes() {
- Map semanticWebPrefixes=new ConcurrentHashMap<>();
- semanticWebPrefixes.put("rdf:","http://www.w3.org/1999/02/22-rdf-syntax-ns#");
- semanticWebPrefixes.put("rdfs:","http://www.w3.org/2000/01/rdf-schema#");
- semanticWebPrefixes.put("owl:","http://www.w3.org/2002/07/owl#");
- semanticWebPrefixes.put("xsd:","http://www.w3.org/2001/XMLSchema#");
- semanticWebPrefixes.put("swrl:","http://www.w3.org/2003/11/swrl#");
- semanticWebPrefixes.put("swrlb:","http://www.w3.org/2003/11/swrlb#");
- semanticWebPrefixes.put("swrlx:","http://www.w3.org/2003/11/swrlx#");
+ public static final Map s_semanticWebPrefixes = semanticPrefixes();
+ static Map semanticPrefixes() {
+ Map semanticWebPrefixes=new ConcurrentHashMap<>();
+ semanticWebPrefixes.put("rdf:","http://www.w3.org/1999/02/22-rdf-syntax-ns#");
+ semanticWebPrefixes.put("rdfs:","http://www.w3.org/2000/01/rdf-schema#");
+ semanticWebPrefixes.put("owl:","http://www.w3.org/2002/07/owl#");
+ semanticWebPrefixes.put("xsd:","http://www.w3.org/2001/XMLSchema#");
+ semanticWebPrefixes.put("swrl:","http://www.w3.org/2003/11/swrl#");
+ semanticWebPrefixes.put("swrlb:","http://www.w3.org/2003/11/swrlb#");
+ semanticWebPrefixes.put("swrlx:","http://www.w3.org/2003/11/swrlx#");
semanticWebPrefixes.put("ruleml:","http://www.w3.org/2003/11/ruleml#");
- return semanticWebPrefixes;
- }
-
- protected final Map m_prefixIRIsByPrefixName;
- protected final Map m_prefixNamesByPrefixIRI;
- protected Pattern m_prefixIRIMatchingPattern;
-
+ return semanticWebPrefixes;
+ }
+ /**standard prefixes*/
+ public static final Prefixes STANDARD_PREFIXES=new ImmutablePrefixes(s_semanticWebPrefixes);
+
+ protected final Map m_prefixIRIsByPrefixName;
+ protected final Map m_prefixNamesByPrefixIRI;
+ protected Pattern m_prefixIRIMatchingPattern;
+
/**Prefixes*/
- public Prefixes() {
- m_prefixIRIsByPrefixName=new TreeMap<>();
- m_prefixNamesByPrefixIRI=new TreeMap<>();
- buildPrefixIRIMatchingPattern();
- }
- protected void buildPrefixIRIMatchingPattern() {
- List list=new ArrayList<>(m_prefixNamesByPrefixIRI.keySet());
- // Sort the prefix IRIs, longest first
- Collections.sort(list,Comparator.comparing(String::length).reversed());
- StringBuilder pattern=new StringBuilder("^(");
- boolean didOne=false;
- for (String prefixIRI : list) {
- if (didOne)
- pattern.append("|(");
- else {
- pattern.append("(");
- didOne=true;
- }
- pattern.append(Pattern.quote(prefixIRI));
- pattern.append(")");
- }
- pattern.append(")");
- if (didOne)
- m_prefixIRIMatchingPattern=Pattern.compile(pattern.toString());
- else
- m_prefixIRIMatchingPattern=null;
- }
+ public Prefixes() {
+ m_prefixIRIsByPrefixName=new TreeMap<>();
+ m_prefixNamesByPrefixIRI=new TreeMap<>();
+ buildPrefixIRIMatchingPattern();
+ }
+ protected void buildPrefixIRIMatchingPattern() {
+ List list=new ArrayList<>(m_prefixNamesByPrefixIRI.keySet());
+ // Sort the prefix IRIs, longest first
+ Collections.sort(list,Comparator.comparing(String::length).reversed());
+ StringBuilder pattern=new StringBuilder("^(");
+ boolean didOne=false;
+ for (String prefixIRI : list) {
+ if (didOne)
+ pattern.append("|(");
+ else {
+ pattern.append("(");
+ didOne=true;
+ }
+ pattern.append(Pattern.quote(prefixIRI));
+ pattern.append(")");
+ }
+ pattern.append(")");
+ if (didOne)
+ m_prefixIRIMatchingPattern=Pattern.compile(pattern.toString());
+ else
+ m_prefixIRIMatchingPattern=null;
+ }
/**
* @param iri iri
* @return abbreviated iri
*/
- public String abbreviateIRI(String iri) {
- if (m_prefixIRIMatchingPattern!=null) {
- Matcher matcher=m_prefixIRIMatchingPattern.matcher(iri);
- if (matcher.find()) {
- String localName=iri.substring(matcher.end());
- if (isValidLocalName(localName)) {
- String prefix=m_prefixNamesByPrefixIRI.get(matcher.group(1));
- return prefix+localName;
- }
- }
- }
- return "<"+iri+">";
- }
- /**
- * Expands a full IRI from the abbreviated one, which is of one of the following forms:
- * 'prefix:name', where 'prefix' is a registered prefix name (can be empty), or
+ public String abbreviateIRI(String iri) {
+ if (m_prefixIRIMatchingPattern!=null) {
+ Matcher matcher=m_prefixIRIMatchingPattern.matcher(iri);
+ if (matcher.find()) {
+ String localName=iri.substring(matcher.end());
+ if (isValidLocalName(localName)) {
+ String prefix=m_prefixNamesByPrefixIRI.get(matcher.group(1));
+ return prefix+localName;
+ }
+ }
+ }
+ return "<"+iri+">";
+ }
+ /**
+ * Expands a full IRI from the abbreviated one, which is of one of the following forms:
+ * 'prefix:name', where 'prefix' is a registered prefix name (can be empty), or
* '<iri>', where 'iri' is an IRI.
* @param abbreviation input
- * @return expanded string
- */
- public String expandAbbreviatedIRI(String abbreviation) {
- if (abbreviation.length()>0 && abbreviation.charAt(0)=='<') {
- if (abbreviation.charAt(abbreviation.length()-1)!='>')
- throw new IllegalArgumentException("The string '"+abbreviation+"' is not a valid abbreviation: IRIs must be enclosed in '<' and '>'.");
- return abbreviation.substring(1,abbreviation.length()-1);
- }
- else {
- int pos=abbreviation.indexOf(':');
- if (pos!=-1) {
- String prefix=abbreviation.substring(0,pos+1);
- String prefixIRI=m_prefixIRIsByPrefixName.get(prefix);
- if (prefixIRI==null) {
- // Catch the common error of not quoting IRIs starting with http:
- if ("http:".equals(prefix))
- throw new IllegalArgumentException("The IRI '"+abbreviation+"' must be enclosed in '<' and '>' to be used as an abbreviation.");
- throw new IllegalArgumentException("The string '"+prefix+"' is not a registered prefix name.");
- }
- return prefixIRI+abbreviation.substring(pos+1);
- }
- else
- throw new IllegalArgumentException("The abbreviation '"+abbreviation+"' is not valid (it does not start with a colon).");
- }
+ * @return expanded string
+ */
+ public String expandAbbreviatedIRI(String abbreviation) {
+ if (abbreviation.length()>0 && abbreviation.charAt(0)=='<') {
+ if (abbreviation.charAt(abbreviation.length()-1)!='>')
+ throw new IllegalArgumentException("The string '"+abbreviation+"' is not a valid abbreviation: IRIs must be enclosed in '<' and '>'.");
+ return abbreviation.substring(1,abbreviation.length()-1);
+ }
+ else {
+ int pos=abbreviation.indexOf(':');
+ if (pos!=-1) {
+ String prefix=abbreviation.substring(0,pos+1);
+ String prefixIRI=m_prefixIRIsByPrefixName.get(prefix);
+ if (prefixIRI==null) {
+ // Catch the common error of not quoting IRIs starting with http:
+ if ("http:".equals(prefix))
+ throw new IllegalArgumentException("The IRI '"+abbreviation+"' must be enclosed in '<' and '>' to be used as an abbreviation.");
+ throw new IllegalArgumentException("The string '"+prefix+"' is not a registered prefix name.");
+ }
+ return prefixIRI+abbreviation.substring(pos+1);
+ }
+ else
+ throw new IllegalArgumentException("The abbreviation '"+abbreviation+"' is not valid (it does not start with a colon).");
+ }
}
/**
* Checks whether the given IRI can be expanded
@@ -166,33 +168,33 @@ public boolean canBeExpanded(String iri) {
* @param prefixIRI prefixIRI
* @return true if modification happened
*/
- public boolean declarePrefix(String prefixName,String prefixIRI) {
- boolean containsPrefix=declarePrefixRaw(prefixName,prefixIRI);
- buildPrefixIRIMatchingPattern();
- return containsPrefix;
- }
+ public boolean declarePrefix(String prefixName,String prefixIRI) {
+ boolean containsPrefix=declarePrefixRaw(prefixName,prefixIRI);
+ buildPrefixIRIMatchingPattern();
+ return containsPrefix;
+ }
protected boolean declarePrefixRaw(String prefixName,String prefixIRI) {
if (!prefixName.endsWith(":"))
- throw new IllegalArgumentException("Prefix name '"+prefixName+"' should end with a colon character.");
- String existingPrefixName=m_prefixNamesByPrefixIRI.get(prefixIRI);
- if (existingPrefixName!=null && !prefixName.equals(existingPrefixName))
- throw new IllegalArgumentException("The prefix IRI '"+prefixIRI+"' has already been associated with the prefix name '"+existingPrefixName+"'.");
- m_prefixNamesByPrefixIRI.put(prefixIRI,prefixName);
- return m_prefixIRIsByPrefixName.put(prefixName,prefixIRI)==null;
- }
+ throw new IllegalArgumentException("Prefix name '"+prefixName+"' should end with a colon character.");
+ String existingPrefixName=m_prefixNamesByPrefixIRI.get(prefixIRI);
+ if (existingPrefixName!=null && !prefixName.equals(existingPrefixName))
+ throw new IllegalArgumentException("The prefix IRI '"+prefixIRI+"' has already been associated with the prefix name '"+existingPrefixName+"'.");
+ m_prefixNamesByPrefixIRI.put(prefixIRI,prefixName);
+ return m_prefixIRIsByPrefixName.put(prefixName,prefixIRI)==null;
+ }
/**
* @param defaultPrefixIRI defaultPrefixIRI
* @return true if modification happened
*/
- public boolean declareDefaultPrefix(String defaultPrefixIRI) {
- return declarePrefix(":",defaultPrefixIRI);
- }
+ public boolean declareDefaultPrefix(String defaultPrefixIRI) {
+ return declarePrefix(":",defaultPrefixIRI);
+ }
/**
* @return iris by name
*/
- public Map getPrefixIRIsByPrefixName() {
- return java.util.Collections.unmodifiableMap(m_prefixIRIsByPrefixName);
- }
+ public Map getPrefixIRIsByPrefixName() {
+ return java.util.Collections.unmodifiableMap(m_prefixIRIsByPrefixName);
+ }
/**
* @param prefixName name
* @return iri
@@ -204,94 +206,94 @@ public String getPrefixIRI(String prefixName) {
* @param prefixIRI prefixIRI
* @return prefix name
*/
- public String getPrefixName(String prefixIRI) {
- return m_prefixNamesByPrefixIRI.get(prefixIRI);
- }
- /**
- * Registers HermiT's internal prefixes with this object.
- *
+ public String getPrefixName(String prefixIRI) {
+ return m_prefixNamesByPrefixIRI.get(prefixIRI);
+ }
+ /**
+ * Registers HermiT's internal prefixes with this object.
+ *
* @param individualIRIs the collection of IRIs used in individuals (used for registering nominal prefix names)
- * @param anonIndividualIRIs anonIndividualIRIs
- * @return 'true' if this object already contained one of the internal prefix names
- */
- public boolean declareInternalPrefixes(Collection individualIRIs, Collection anonIndividualIRIs) {
- boolean containsPrefix=false;
- if (declarePrefixRaw("def:","internal:def#"))
- containsPrefix=true;
- if (declarePrefixRaw("defdata:","internal:defdata#"))
- containsPrefix=true;
- if (declarePrefixRaw("nnq:","internal:nnq#"))
- containsPrefix=true;
- if (declarePrefixRaw("all:","internal:all#"))
- containsPrefix=true;
- if (declarePrefixRaw("swrl:","internal:swrl#"))
+ * @param anonIndividualIRIs anonIndividualIRIs
+ * @return 'true' if this object already contained one of the internal prefix names
+ */
+ public boolean declareInternalPrefixes(Collection individualIRIs, Collection anonIndividualIRIs) {
+ boolean containsPrefix=false;
+ if (declarePrefixRaw("def:","internal:def#"))
+ containsPrefix=true;
+ if (declarePrefixRaw("defdata:","internal:defdata#"))
+ containsPrefix=true;
+ if (declarePrefixRaw("nnq:","internal:nnq#"))
+ containsPrefix=true;
+ if (declarePrefixRaw("all:","internal:all#"))
+ containsPrefix=true;
+ if (declarePrefixRaw("swrl:","internal:swrl#"))
containsPrefix=true;
if (declarePrefixRaw("prop:","internal:prop#"))
- containsPrefix=true;
- int individualIRIsIndex=1;
- for (String iri : individualIRIs) {
- if (declarePrefixRaw("nom"+(individualIRIsIndex==1 ? "" : String.valueOf(individualIRIsIndex))+":","internal:nom#"+iri))
- containsPrefix=true;
- individualIRIsIndex++;
- }
- int anonymousIndividualIRIsIndex=1;
- for (String iri : anonIndividualIRIs) {
- if (declarePrefixRaw("anon"+(anonymousIndividualIRIsIndex==1 ? "" : String.valueOf(anonymousIndividualIRIsIndex))+":","internal:anon#"+iri))
- containsPrefix=true;
- anonymousIndividualIRIsIndex++;
- }
- if (declarePrefixRaw("nam:","internal:nam#"))
- containsPrefix=true;
- buildPrefixIRIMatchingPattern();
- return containsPrefix;
- }
- /**
- * Registers the well-known Semantic Web prefixes.
- *
- * @return 'true' if this object already contained one of the well-known prefixes
- */
- public boolean declareSemanticWebPrefixes() {
- boolean containsPrefix=false;
- for (Map.Entry entry : s_semanticWebPrefixes.entrySet())
- if (declarePrefixRaw(entry.getKey(),entry.getValue()))
- containsPrefix=true;
- buildPrefixIRIMatchingPattern();
- return containsPrefix;
- }
- /**
- * Registers all the prefixes from the supplied object.
- *
- * @param prefixes the object from which the prefixes are taken
- * @return 'true' if this object already contained one of the prefixes from the supplied object
- */
- public boolean addPrefixes(Prefixes prefixes) {
- boolean containsPrefix=false;
- for (Map.Entry entry : prefixes.m_prefixIRIsByPrefixName.entrySet())
- if (declarePrefixRaw(entry.getKey(),entry.getValue()))
- containsPrefix=true;
- buildPrefixIRIMatchingPattern();
- return containsPrefix;
+ containsPrefix=true;
+ int individualIRIsIndex=1;
+ for (String iri : individualIRIs) {
+ if (declarePrefixRaw("nom"+(individualIRIsIndex==1 ? "" : String.valueOf(individualIRIsIndex))+":","internal:nom#"+iri))
+ containsPrefix=true;
+ individualIRIsIndex++;
+ }
+ int anonymousIndividualIRIsIndex=1;
+ for (String iri : anonIndividualIRIs) {
+ if (declarePrefixRaw("anon"+(anonymousIndividualIRIsIndex==1 ? "" : String.valueOf(anonymousIndividualIRIsIndex))+":","internal:anon#"+iri))
+ containsPrefix=true;
+ anonymousIndividualIRIsIndex++;
+ }
+ if (declarePrefixRaw("nam:","internal:nam#"))
+ containsPrefix=true;
+ buildPrefixIRIMatchingPattern();
+ return containsPrefix;
+ }
+ /**
+ * Registers the well-known Semantic Web prefixes.
+ *
+ * @return 'true' if this object already contained one of the well-known prefixes
+ */
+ public boolean declareSemanticWebPrefixes() {
+ boolean containsPrefix=false;
+ for (Map.Entry entry : s_semanticWebPrefixes.entrySet())
+ if (declarePrefixRaw(entry.getKey(),entry.getValue()))
+ containsPrefix=true;
+ buildPrefixIRIMatchingPattern();
+ return containsPrefix;
+ }
+ /**
+ * Registers all the prefixes from the supplied object.
+ *
+ * @param prefixes the object from which the prefixes are taken
+ * @return 'true' if this object already contained one of the prefixes from the supplied object
+ */
+ public boolean addPrefixes(Prefixes prefixes) {
+ boolean containsPrefix=false;
+ for (Map.Entry entry : prefixes.m_prefixIRIsByPrefixName.entrySet())
+ if (declarePrefixRaw(entry.getKey(),entry.getValue()))
+ containsPrefix=true;
+ buildPrefixIRIMatchingPattern();
+ return containsPrefix;
}
@Override
public String toString() {
return m_prefixIRIsByPrefixName.toString();
- }
- /**
+ }
+ /**
* Determines whether the supplied IRI is used internally by HermiT.
* @param iri iri
- * @return true if internal
- */
- public static boolean isInternalIRI(String iri) {
- return iri.startsWith("internal:");
+ * @return true if internal
+ */
+ public static boolean isInternalIRI(String iri) {
+ return iri.startsWith("internal:");
}
- /**
+ /**
* Determines whether the supplied string is a valid local name.
* @param localName localName
- * @return true if valid
- */
- public static boolean isValidLocalName(String localName) {
- return s_localNameChecker.matcher(localName).matches();
- }
+ * @return true if valid
+ */
+ public static boolean isValidLocalName(String localName) {
+ return s_localNameChecker.matcher(localName).matches();
+ }
/**
* Expands a full IRI from the abbreviated one, which is of one of the following forms:
@@ -301,32 +303,25 @@ public static boolean isValidLocalName(String localName) {
* @return expanded string
*/
public static String expandAbbreviation(String abbreviation) {
- return ImmutablePrefixes.getStandardPrefixes().expandAbbreviatedIRI(abbreviation);
+ return Prefixes.STANDARD_PREFIXES.expandAbbreviatedIRI(abbreviation);
}
/**
* Immutable prefixes.
*/
- public static class ImmutablePrefixes extends Prefixes {
- private static final long serialVersionUID=8517988865445255837L;
+ public static class ImmutablePrefixes extends Prefixes {
+ private static final long serialVersionUID=8517988865445255837L;
- private static final Prefixes STANDARD_PREFIXES=new ImmutablePrefixes(s_semanticWebPrefixes);
-
- /** @return standard prefixes*/
- public static Prefixes getStandardPrefixes() {
- return STANDARD_PREFIXES;
- }
-
/**
* @param initialPrefixes prefixes
*/
- public ImmutablePrefixes(Map initialPrefixes) {
- for (Map.Entry entry : initialPrefixes.entrySet())
- super.declarePrefixRaw(entry.getKey(),entry.getValue());
- buildPrefixIRIMatchingPattern();
- }
+ public ImmutablePrefixes(Map initialPrefixes) {
+ for (Map.Entry entry : initialPrefixes.entrySet())
+ super.declarePrefixRaw(entry.getKey(),entry.getValue());
+ buildPrefixIRIMatchingPattern();
+ }
@Override
- protected boolean declarePrefixRaw(String prefixName,String prefixIRI) {
- throw new UnsupportedOperationException("The well-known standard Prefix instance cannot be modified.");
- }
- }
-}
+ protected boolean declarePrefixRaw(String prefixName,String prefixIRI) {
+ throw new UnsupportedOperationException("The well-known standard Prefix instance cannot be modified.");
+ }
+ }
+}
diff --git a/src/main/java/org/semanticweb/HermiT/debugger/DerivationHistory.java b/src/main/java/org/semanticweb/HermiT/debugger/DerivationHistory.java
index 17b6127b..3ff2fa1d 100644
--- a/src/main/java/org/semanticweb/HermiT/debugger/DerivationHistory.java
+++ b/src/main/java/org/semanticweb/HermiT/debugger/DerivationHistory.java
@@ -328,7 +328,7 @@ else if (dlPredicate instanceof Concept)
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
@@ -407,7 +407,7 @@ else if (tuple[0] instanceof Concept)
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
@@ -423,7 +423,7 @@ public abstract static class Derivation implements Serializable {
public abstract String toString(Prefixes prefixes);
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @return number of premises
diff --git a/src/main/java/org/semanticweb/HermiT/model/AnnotatedEquality.java b/src/main/java/org/semanticweb/HermiT/model/AnnotatedEquality.java
index 7281d4fb..6fa5bf4f 100644
--- a/src/main/java/org/semanticweb/HermiT/model/AnnotatedEquality.java
+++ b/src/main/java/org/semanticweb/HermiT/model/AnnotatedEquality.java
@@ -63,7 +63,7 @@ protected Object readResolve() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
@Override
public String toString(Prefixes prefixes) {
diff --git a/src/main/java/org/semanticweb/HermiT/model/Atom.java b/src/main/java/org/semanticweb/HermiT/model/Atom.java
index c6d97912..0fea48af 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Atom.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Atom.java
@@ -145,7 +145,7 @@ else if (m_dlPredicate instanceof AnnotatedEquality) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return s_interningManager.intern(this);
diff --git a/src/main/java/org/semanticweb/HermiT/model/Concept.java b/src/main/java/org/semanticweb/HermiT/model/Concept.java
index 5e6dacd0..bbf501f7 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Concept.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Concept.java
@@ -42,6 +42,6 @@ public abstract class Concept implements Serializable {
public abstract String toString(Prefixes prefixes);
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
diff --git a/src/main/java/org/semanticweb/HermiT/model/Constant.java b/src/main/java/org/semanticweb/HermiT/model/Constant.java
index 5578ef7d..823c7086 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Constant.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Constant.java
@@ -62,7 +62,7 @@ public boolean isAnonymous() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
@Override
public String toString(Prefixes prefixes) {
diff --git a/src/main/java/org/semanticweb/HermiT/model/DLClause.java b/src/main/java/org/semanticweb/HermiT/model/DLClause.java
index dfda10ca..3eb9b257 100644
--- a/src/main/java/org/semanticweb/HermiT/model/DLClause.java
+++ b/src/main/java/org/semanticweb/HermiT/model/DLClause.java
@@ -276,7 +276,7 @@ public String toString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected static final InterningManager s_interningManager = new InterningManager() {
diff --git a/src/main/java/org/semanticweb/HermiT/model/DLOntology.java b/src/main/java/org/semanticweb/HermiT/model/DLOntology.java
index bf37154b..366a2680 100644
--- a/src/main/java/org/semanticweb/HermiT/model/DLOntology.java
+++ b/src/main/java/org/semanticweb/HermiT/model/DLOntology.java
@@ -492,7 +492,7 @@ protected String getStatistics(Integer _numDeterministicClauses, Integer _numNon
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @param outputStream outputStream
diff --git a/src/main/java/org/semanticweb/HermiT/model/DataRange.java b/src/main/java/org/semanticweb/HermiT/model/DataRange.java
index 2c053495..945f2ea8 100644
--- a/src/main/java/org/semanticweb/HermiT/model/DataRange.java
+++ b/src/main/java/org/semanticweb/HermiT/model/DataRange.java
@@ -50,6 +50,6 @@ public int getArity() {
public abstract String toString(Prefixes prefixes);
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
diff --git a/src/main/java/org/semanticweb/HermiT/model/DescriptionGraph.java b/src/main/java/org/semanticweb/HermiT/model/DescriptionGraph.java
index 13f5fdbe..3275c18e 100644
--- a/src/main/java/org/semanticweb/HermiT/model/DescriptionGraph.java
+++ b/src/main/java/org/semanticweb/HermiT/model/DescriptionGraph.java
@@ -110,7 +110,7 @@ public String toString(Prefixes ns) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @return text representation
diff --git a/src/main/java/org/semanticweb/HermiT/model/Equality.java b/src/main/java/org/semanticweb/HermiT/model/Equality.java
index c74b858e..f936f3fc 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Equality.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Equality.java
@@ -48,7 +48,7 @@ public String toOrderedString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return INSTANCE;
diff --git a/src/main/java/org/semanticweb/HermiT/model/ExistsDescriptionGraph.java b/src/main/java/org/semanticweb/HermiT/model/ExistsDescriptionGraph.java
index adfb8a32..c3e033ca 100644
--- a/src/main/java/org/semanticweb/HermiT/model/ExistsDescriptionGraph.java
+++ b/src/main/java/org/semanticweb/HermiT/model/ExistsDescriptionGraph.java
@@ -59,7 +59,7 @@ public String toString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return s_interningManager.intern(this);
diff --git a/src/main/java/org/semanticweb/HermiT/model/Individual.java b/src/main/java/org/semanticweb/HermiT/model/Individual.java
index a0d32654..9b407f18 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Individual.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Individual.java
@@ -44,7 +44,7 @@ public boolean isAnonymous() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return s_interningManager.intern(this);
diff --git a/src/main/java/org/semanticweb/HermiT/model/Inequality.java b/src/main/java/org/semanticweb/HermiT/model/Inequality.java
index 5aa79482..4817f5e4 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Inequality.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Inequality.java
@@ -42,7 +42,7 @@ public String toString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return INSTANCE;
diff --git a/src/main/java/org/semanticweb/HermiT/model/NegatedAtomicRole.java b/src/main/java/org/semanticweb/HermiT/model/NegatedAtomicRole.java
index c301ae55..edd2e5d8 100644
--- a/src/main/java/org/semanticweb/HermiT/model/NegatedAtomicRole.java
+++ b/src/main/java/org/semanticweb/HermiT/model/NegatedAtomicRole.java
@@ -40,7 +40,7 @@ public AtomicRole getNegatedAtomicRole() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @param prefixes prefixes
diff --git a/src/main/java/org/semanticweb/HermiT/model/NodeIDLessEqualThan.java b/src/main/java/org/semanticweb/HermiT/model/NodeIDLessEqualThan.java
index ee331b81..1e6d6e25 100644
--- a/src/main/java/org/semanticweb/HermiT/model/NodeIDLessEqualThan.java
+++ b/src/main/java/org/semanticweb/HermiT/model/NodeIDLessEqualThan.java
@@ -41,7 +41,7 @@ public String toString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected Object readResolve() {
return INSTANCE;
diff --git a/src/main/java/org/semanticweb/HermiT/model/Role.java b/src/main/java/org/semanticweb/HermiT/model/Role.java
index 0f5ede5e..59f0e249 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Role.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Role.java
@@ -44,6 +44,6 @@ public abstract class Role implements Serializable {
public abstract String toString(Prefixes prefixes);
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
diff --git a/src/main/java/org/semanticweb/HermiT/model/Variable.java b/src/main/java/org/semanticweb/HermiT/model/Variable.java
index 0241687c..767984dd 100644
--- a/src/main/java/org/semanticweb/HermiT/model/Variable.java
+++ b/src/main/java/org/semanticweb/HermiT/model/Variable.java
@@ -38,7 +38,7 @@ public String getName() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
@Override
public String toString(Prefixes prefixes) {
diff --git a/src/main/java/org/semanticweb/HermiT/monitor/CountingMonitor.java b/src/main/java/org/semanticweb/HermiT/monitor/CountingMonitor.java
index a9c7833e..b3bdd10b 100644
--- a/src/main/java/org/semanticweb/HermiT/monitor/CountingMonitor.java
+++ b/src/main/java/org/semanticweb/HermiT/monitor/CountingMonitor.java
@@ -104,7 +104,7 @@ public void isSatisfiableFinished(ReasoningTaskDescription reasoningTaskDescript
records=new ArrayList<>();
m_testRecords.put(messagePattern, records);
}
- records.add(new TestRecord(m_time, m_reasoningTaskDescription.getTaskDescription(Prefixes.ImmutablePrefixes.getStandardPrefixes()), m_testResult));
+ records.add(new TestRecord(m_time, m_reasoningTaskDescription.getTaskDescription(Prefixes.STANDARD_PREFIXES), m_testResult));
m_overallTime+=m_time;
m_overallNumberOfBacktrackings+=m_numberOfBacktrackings;
m_numberOfNodes=m_tableau.getNumberOfNodesInTableau()-m_tableau.getNumberOfMergedOrPrunedNodes();
@@ -203,7 +203,7 @@ public int getNumberOfBlockedNodes() {
* @return test description
*/
public String getTestDescription() {
- return m_reasoningTaskDescription.getTaskDescription(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return m_reasoningTaskDescription.getTaskDescription(Prefixes.STANDARD_PREFIXES);
}
/**
* @return test result
diff --git a/src/main/java/org/semanticweb/HermiT/monitor/Timer.java b/src/main/java/org/semanticweb/HermiT/monitor/Timer.java
index 48256175..1f8eb1ae 100644
--- a/src/main/java/org/semanticweb/HermiT/monitor/Timer.java
+++ b/src/main/java/org/semanticweb/HermiT/monitor/Timer.java
@@ -50,7 +50,7 @@ protected void start() {
}
@Override
public void isSatisfiableStarted(ReasoningTaskDescription reasoningTaskDescription) {
- m_output.print(reasoningTaskDescription.getTaskDescription(Prefixes.ImmutablePrefixes.getStandardPrefixes())+" ...");
+ m_output.print(reasoningTaskDescription.getTaskDescription(Prefixes.STANDARD_PREFIXES)+" ...");
m_output.flush();
start();
}
diff --git a/src/main/java/org/semanticweb/HermiT/structural/OWLClausification.java b/src/main/java/org/semanticweb/HermiT/structural/OWLClausification.java
index 8c8b57fa..a1be2c14 100644
--- a/src/main/java/org/semanticweb/HermiT/structural/OWLClausification.java
+++ b/src/main/java/org/semanticweb/HermiT/structural/OWLClausification.java
@@ -779,7 +779,7 @@ public Object visit(OWLDataComplementOf object) {
}
@Override
public Object visit(OWLDataOneOf object) {
- Set constants=new HashSet<>();
+ Set constants=new LinkedHashSet<>();
object.values().forEach(l-> constants.add((Constant)l.accept(this)));
Constant[] constantsArray=new Constant[constants.size()];
constants.toArray(constantsArray);
diff --git a/src/main/java/org/semanticweb/HermiT/tableau/DatatypeManager.java b/src/main/java/org/semanticweb/HermiT/tableau/DatatypeManager.java
index a7709721..8b8043b4 100644
--- a/src/main/java/org/semanticweb/HermiT/tableau/DatatypeManager.java
+++ b/src/main/java/org/semanticweb/HermiT/tableau/DatatypeManager.java
@@ -665,7 +665,7 @@ boolean isSymmetricClique() {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @param prefixes prefixes
@@ -809,7 +809,7 @@ protected static boolean equals(List first,List second) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
/**
* @param prefixes prefixes
diff --git a/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunction.java b/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunction.java
index f2ac5b1d..7143b32e 100644
--- a/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunction.java
+++ b/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunction.java
@@ -224,6 +224,6 @@ else if (dlPredicate instanceof AnnotatedEquality) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
}
diff --git a/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunctionHeader.java b/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunctionHeader.java
index ecf71af8..d1aa4859 100644
--- a/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunctionHeader.java
+++ b/src/main/java/org/semanticweb/HermiT/tableau/GroundDisjunctionHeader.java
@@ -141,7 +141,7 @@ public String toString(Prefixes prefixes) {
}
@Override
public String toString() {
- return toString(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return toString(Prefixes.STANDARD_PREFIXES);
}
protected static class DisjunctIndexWithBacktrackings {
diff --git a/src/main/java/org/semanticweb/HermiT/tableau/ReasoningTaskDescription.java b/src/main/java/org/semanticweb/HermiT/tableau/ReasoningTaskDescription.java
index 010b7985..490f739b 100644
--- a/src/main/java/org/semanticweb/HermiT/tableau/ReasoningTaskDescription.java
+++ b/src/main/java/org/semanticweb/HermiT/tableau/ReasoningTaskDescription.java
@@ -86,7 +86,7 @@ public String getMessagePattern() {
}
@Override
public String toString() {
- return getTaskDescription(Prefixes.ImmutablePrefixes.getStandardPrefixes());
+ return getTaskDescription(Prefixes.STANDARD_PREFIXES);
}
/**
diff --git a/src/main/resources/plugin.xml b/src/main/resources/plugin.xml
index 8d9ffa01..5f01f007 100644
--- a/src/main/resources/plugin.xml
+++ b/src/main/resources/plugin.xml
@@ -1,8 +1,8 @@
-
-
+
+
diff --git a/src/test/java/org/semanticweb/HermiT/AbstractOntologyTest.java b/src/test/java/org/semanticweb/HermiT/AbstractOntologyTest.java
index aa1cd600..bf185bc5 100644
--- a/src/test/java/org/semanticweb/HermiT/AbstractOntologyTest.java
+++ b/src/test/java/org/semanticweb/HermiT/AbstractOntologyTest.java
@@ -170,28 +170,6 @@ protected void assertEquals(Set axioms, String controlResourceName1, S
assertTrue(isOK);
}
- /**
- * prints the content of control set and the actual set in case they are
- * different and causes a JUnit test failure
- */
- protected void assertEquals(Set actual, Set control) {
- if (!actual.equals(control)) {
- System.out.println("Test " + this.getName() + " failed!");
- System.out.println("Control set (" + control.size() + " elements):");
- System.out.println("------------------------------------------");
- for (T object : control)
- System.out.println(object.toString());
- System.out.println("------------------------------------------");
- System.out.println("Actual set (" + actual.size() + " elements):");
- System.out.println("------------------------------------------");
- for (Object object : actual)
- System.out.println(object.toString());
- System.out.println("------------------------------------------");
- System.out.flush();
- assertTrue(false);
- }
- }
-
protected OWLClass C(String uri) {
return m_dataFactory.getOWLClass(IRI.create(uri));
}
@@ -242,7 +220,7 @@ protected OWLLiteral PL(String lexicalForm, String languageTag) {
protected OWLLiteral TL(String lexicalForm, String datatypeURI) {
return m_dataFactory.getOWLLiteral(lexicalForm,
- m_dataFactory.getOWLDatatype(IRI.create(Prefixes.expandAbbreviation(datatypeURI))));
+ m_dataFactory.getOWLDatatype(IRI.create(Prefixes.STANDARD_PREFIXES.expandAbbreviatedIRI(datatypeURI))));
}
protected OWLAnonymousIndividual AI(String id) {
diff --git a/src/test/java/org/semanticweb/HermiT/structural/AbstractStructuralTest.java b/src/test/java/org/semanticweb/HermiT/structural/AbstractStructuralTest.java
index ce6ce011..a184a5c9 100644
--- a/src/test/java/org/semanticweb/HermiT/structural/AbstractStructuralTest.java
+++ b/src/test/java/org/semanticweb/HermiT/structural/AbstractStructuralTest.java
@@ -1,8 +1,10 @@
package org.semanticweb.HermiT.structural;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -11,7 +13,6 @@
import junit.framework.AssertionFailedError;
-import org.junit.Ignore;
import org.semanticweb.HermiT.AbstractOntologyTest;
import org.semanticweb.HermiT.Configuration;
import org.semanticweb.HermiT.Prefixes;
@@ -21,14 +22,9 @@
import org.semanticweb.HermiT.model.DescriptionGraph;
import org.semanticweb.HermiT.model.Individual;
import org.semanticweb.owlapi.model.IRI;
-@Ignore
@SuppressWarnings("javadoc")
public abstract class AbstractStructuralTest extends AbstractOntologyTest {
- public AbstractStructuralTest(String name) {
- super(name);
- }
-
protected static void assertContainsAll(String testName, Collection actual, String[] control) {
try {
assertEquals(control.length, actual.size());
@@ -36,7 +32,7 @@ protected static void assertContainsAll(String testName, Collection actu
isOK = true;
for (int i = 0; isOK && i < control.length; i++)
isOK = actual.contains(control[i]);
- assertTrue(isOK);
+ assertTrue("Expected \n"+Arrays.toString(control)+ "\n but was \n"+actual.toString(), isOK);
} catch (AssertionFailedError e) {
System.out.println("Test " + testName + " failed!");
System.out.println("Control set (" + control.length + " elements):");
diff --git a/src/test/java/org/semanticweb/HermiT/structural/AllTests.java b/src/test/java/org/semanticweb/HermiT/structural/AllTests.java
deleted file mode 100644
index 6787c549..00000000
--- a/src/test/java/org/semanticweb/HermiT/structural/AllTests.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.semanticweb.HermiT.structural;
-
-import org.junit.Ignore;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-@Ignore
-@SuppressWarnings("javadoc")
-public class AllTests extends TestCase {
-
- public static Test suite() {
- TestSuite suite = new TestSuite("Test for the normalization and clasification code used with the OWLAPI. ");
- // $JUnit-BEGIN$
- suite.addTestSuite(NormalizationTest.class);
- suite.addTestSuite(ClausificationTest.class);
- suite.addTestSuite(ClausificationDatatypesTest.class);
- // $JUnit-END$
- return suite;
- }
-
-}
diff --git a/src/test/java/org/semanticweb/HermiT/structural/ClausificationDatatypesTest.java b/src/test/java/org/semanticweb/HermiT/structural/ClausificationDatatypesTest.java
index 42012cec..a85851df 100644
--- a/src/test/java/org/semanticweb/HermiT/structural/ClausificationDatatypesTest.java
+++ b/src/test/java/org/semanticweb/HermiT/structural/ClausificationDatatypesTest.java
@@ -1,28 +1,21 @@
package org.semanticweb.HermiT.structural;
import java.util.List;
-
-import org.junit.Ignore;
-@Ignore
@SuppressWarnings("javadoc")
public class ClausificationDatatypesTest extends AbstractStructuralTest {
- public ClausificationDatatypesTest(String name) {
- super(name);
- }
-
public void testDataPropertiesHasValue1() throws Exception {
String axioms = "Declaration(Class(:Eighteen)) Declaration(DataProperty(:hasAge)) SubClassOf(:Eighteen DataHasValue(:hasAge \"18\"^^xsd:integer))";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("atLeast(1 :hasAge { \"18\"^^xsd:int })(X) :- :Eighteen(X)"));
+ assertContainsAll(this.getName(), clauses, S("atLeast(1 :hasAge { \"18\"^^xsd:integer })(X) :- :Eighteen(X)"));
}
public void testDataPropertiesHasValue2() throws Exception {
String axioms = "Declaration(Class(:Eighteen)) Declaration(DataProperty(:hasAge)) SubClassOf(DataHasValue(:hasAge \"18\"^^xsd:integer) :Eighteen)";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S(":Eighteen(X) v not({ \"18\"^^xsd:int })(Y) :- :hasAge(X,Y)"));
+ assertContainsAll(this.getName(), clauses, S(":Eighteen(X) v not({ \"18\"^^xsd:integer })(Y) :- :hasAge(X,Y)"));
}
public void testDataPropertiesAll1() throws Exception {
@@ -57,7 +50,7 @@ public void testDataPropertiesDataOneOf1() throws Exception {
String axioms = "Declaration(Class(:A)) Declaration(DataProperty(:dp)) SubClassOf(:A DataAllValuesFrom(:dp DataOneOf(\"Peter\"^^xsd:string \"19\"^^xsd:integer)))";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("{ \"Peter\" \"19\"^^xsd:int }(Y) :- :A(X), :dp(X,Y)"));
+ assertContainsAll(this.getName(), clauses, S("{ \"19\"^^xsd:integer \"Peter\"^^xsd:string }(Y) :- :A(X), :dp(X,Y)"));
}
public void testDataPropertiesDataOneOf2() throws Exception {
@@ -65,7 +58,7 @@ public void testDataPropertiesDataOneOf2() throws Exception {
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
assertContainsAll(this.getName(), clauses,
- S(":A(X) v atLeast(1 :dp not({ \"19\"^^xsd:int \"18\"^^xsd:int }))(X) :- owl:Thing(X)"));
+ S(":A(X) v atLeast(1 :dp not({ \"18\"^^xsd:integer \"19\"^^xsd:integer }))(X) :- owl:Thing(X)"));
}
public void testDataPropertiesDataOneOf3() throws Exception {
@@ -73,28 +66,28 @@ public void testDataPropertiesDataOneOf3() throws Exception {
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
assertContainsAll(this.getName(), clauses,
- S(":A(X) v atLeast(1 :dp not({ \"18\"^^xsd:int \"abc\" }))(X) :- owl:Thing(X)"));
+ S(":A(X) v atLeast(1 :dp not({ \"18\"^^xsd:integer \"abc\"^^xsd:string }))(X) :- owl:Thing(X)"));
}
public void testDataPropertiesDataOneOf4() throws Exception {
String axioms = "Declaration(Class(:A)) Declaration(DataProperty(:dp)) SubClassOf(:A DataAllValuesFrom(:dp DataOneOf(\"18\"^^xsd:integer \"abc\"^^xsd:string)))";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("{ \"18\"^^xsd:int \"abc\" }(Y) :- :A(X), :dp(X,Y)"));
+ assertContainsAll(this.getName(), clauses, S("{ \"18\"^^xsd:integer \"abc\"^^xsd:string }(Y) :- :A(X), :dp(X,Y)"));
}
public void testDataPropertiesDataComplementOf1() throws Exception {
String axioms = "Declaration(Class(:A)) Declaration(DataProperty(:dp)) SubClassOf(:A DataAllValuesFrom(:dp DataComplementOf(DataComplementOf(DataOneOf(\"18\"^^xsd:integer \"19\"^^xsd:integer)))))";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("{ \"19\"^^xsd:int \"18\"^^xsd:int }(Y) :- :A(X), :dp(X,Y)"));
+ assertContainsAll(this.getName(), clauses, S("{ \"18\"^^xsd:integer \"19\"^^xsd:integer }(Y) :- :A(X), :dp(X,Y)"));
}
public void testDataPropertiesDataComplementOf2() throws Exception {
String axioms = "Declaration(Class(:A)) Declaration(DataProperty(:dp)) SubClassOf(:A DataAllValuesFrom(:dp DataComplementOf(DataOneOf(\"18\"^^xsd:integer \"19\"^^xsd:integer))))";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("not({ \"19\"^^xsd:int \"18\"^^xsd:int })(Y) :- :A(X), :dp(X,Y)"));
+ assertContainsAll(this.getName(), clauses, S("not({ \"18\"^^xsd:integer \"19\"^^xsd:integer })(Y) :- :A(X), :dp(X,Y)"));
}
public void testDataPropertiesMax1() throws Exception {
@@ -252,15 +245,25 @@ public void testDataComplementOf3() throws Exception {
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
assertContainsAll(this.getName(), clauses,
- S("not({ \"4.3\"^^xsd:double \"5\"^^xsd:int })(X) v not({ \"5\"^^xsd:int })(X) :- defdata:0(X)",
- "defdata:0(Y) :- :dp(X,Y)"));
+ S("defdata:0(Y) :- :dp(X,Y)",
+ "not({ "
+ + "\"4.3\"^^xsd:double"
+ + " \"5\"^^xsd:nonNegativeInteger"
+ + " })(X)"
+ + " v " +
+ "not({ \"5\"^^xsd:integer })(X)"
+ + " :- defdata:0(X)"));
}
public void testDataComplementOf4() throws Exception {
String axioms = "SubClassOf(DataAllValuesFrom(:dp DataComplementOf(DataIntersectionOf(DataOneOf(\"5\"^^xsd:nonNegativeInteger \"4.3\"^^xsd:double) DataOneOf(\"5\"^^xsd:integer)))) :A)";
loadOntologyWithAxioms(axioms);
List clauses = getDLClauses();
- assertContainsAll(this.getName(), clauses, S("{ \"4.3\"^^xsd:double \"5\"^^xsd:int }(X) :- defdata:0(X)",
- "{ \"5\"^^xsd:int }(X) :- defdata:0(X)", ":A(X) v atLeast(1 :dp defdata:0)(X) :- owl:Thing(X)"));
+ assertContainsAll(this.getName(), clauses, S("{ "
+ + "\"4.3\"^^xsd:double"
+ + " "
+ + "\"5\"^^xsd:nonNegativeInteger"
+ + " }(X) :- defdata:0(X)",
+ "{ \"5\"^^xsd:integer }(X) :- defdata:0(X)", ":A(X) v atLeast(1 :dp defdata:0)(X) :- owl:Thing(X)"));
}
}
diff --git a/src/test/java/org/semanticweb/HermiT/structural/ClausificationTest.java b/src/test/java/org/semanticweb/HermiT/structural/ClausificationTest.java
index 2f83aa10..c88d324f 100644
--- a/src/test/java/org/semanticweb/HermiT/structural/ClausificationTest.java
+++ b/src/test/java/org/semanticweb/HermiT/structural/ClausificationTest.java
@@ -8,21 +8,13 @@
import java.util.List;
import java.util.Set;
-import org.junit.Ignore;
import org.semanticweb.HermiT.Configuration;
+import org.semanticweb.HermiT.model.Atom;
import org.semanticweb.HermiT.model.DLClause;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLHasKeyAxiom;
-@Ignore
@SuppressWarnings("javadoc")
public class ClausificationTest extends AbstractStructuralTest {
- static {
- System.setProperty("entityExpansionLimit", String.valueOf(Integer.MAX_VALUE));
- }
-
- public ClausificationTest(String name) {
- super(name);
- }
public void testBasic() throws Exception {
assertClausification("res/basic-input.xml", "res/basic-control.txt");
@@ -72,22 +64,23 @@ public void testHasKeys() {
m_dataFactory.getOWLDataProperty(IRI.create("int:dp_test")));
DLClause clause = clausifier.clausifyKey(key);
Set bAtoms = new HashSet<>();
- bAtoms.add("(X)");
+ bAtoms.add("(X1)");
bAtoms.add("(X2)");
- bAtoms.add("(X)");
+ bAtoms.add("(X1)");
bAtoms.add("(X2)");
- bAtoms.add("(X,Y0)");
- bAtoms.add("(X2,Y0)");
- bAtoms.add("(Y0)");
- bAtoms.add("(X,Y1)");
- bAtoms.add("(X2,Y2)");
+ bAtoms.add("(X1,Y1)");
+ bAtoms.add("(X2,Y1)");
+ bAtoms.add("(Y1)");
+ bAtoms.add("(X1,Y2)");
+ bAtoms.add("(X2,Y3)");
assertTrue(bAtoms.size() == clause.getBodyLength());
for (int i = 0; i < clause.getBodyLength(); i++) {
- assertTrue(bAtoms.contains(clause.getBodyAtom(i).toString()));
+ String string = clause.getBodyAtom(i).toString();
+ assertTrue(string, bAtoms.contains(string));
}
Set hAtoms = new HashSet<>();
- hAtoms.add("X == X2");
- hAtoms.add("Y1 != Y2");
+ hAtoms.add("X1 == X2");
+ hAtoms.add("Y2 != Y3");
assertTrue(hAtoms.size() == clause.getHeadLength());
for (int i = 0; i < clause.getHeadLength(); i++) {
assertTrue(hAtoms.contains(clause.getHeadAtom(i).toString()));
diff --git a/src/test/java/org/semanticweb/HermiT/structural/NormalizationTest.java b/src/test/java/org/semanticweb/HermiT/structural/NormalizationTest.java
index 763484e7..19c4abad 100644
--- a/src/test/java/org/semanticweb/HermiT/structural/NormalizationTest.java
+++ b/src/test/java/org/semanticweb/HermiT/structural/NormalizationTest.java
@@ -1,25 +1,18 @@
package org.semanticweb.HermiT.structural;
-import static org.semanticweb.owlapi.util.OWLAPIStreamUtils.asList;
-
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.TreeSet;
-import org.junit.Ignore;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLDataPropertyExpression;
import org.semanticweb.owlapi.model.OWLHasKeyAxiom;
import org.semanticweb.owlapi.model.OWLObjectPropertyExpression;
-@Ignore
@SuppressWarnings("javadoc")
public class NormalizationTest extends AbstractStructuralTest {
- public NormalizationTest(String name) {
- super(name);
- }
-
public void testDataPropertiesHasValue1() throws Exception {
assertNormalization(
"Declaration(Class(:Eighteen)) Declaration(DataProperty(:hasAge)) SubClassOf(:Eighteen DataHasValue(:hasAge \"18\"^^xsd:integer))",
@@ -175,16 +168,21 @@ public void testKeys1() throws Exception {
public void testKeys2() throws Exception {
Set normalizedAxiomsStrings = getNormalizedAxiomsString(
"HasKey(ObjectIntersectionOf(:A :B) (:r) (:dp))");
- Set control1 = new HashSet<>();
+ Set control1 = new TreeSet<>();
control1.add("SubClassOf(owl:Thing ObjectUnionOf(<" + NS + "A> ObjectComplementOf()))");
- control1.add("SubClassOf(owl:Thing ObjectUnionOf(<" + NS + "B> ObjectComplementOf())))");
- control1.add("HasKey( (<" + NS + "r> ) ())");
+ control1.add("SubClassOf(owl:Thing ObjectUnionOf(<" + NS + "B> ObjectComplementOf()))");
+ control1.add("HasKey( (<" + NS + "r> ) (<" + NS + "dp> ))");
Set control2 = new HashSet<>();
control2.add("SubClassOf(owl:Thing ObjectUnionOf(<" + NS + "B> ObjectComplementOf()))");
control2.add("SubClassOf(owl:Thing ObjectUnionOf(<" + NS + "A> ObjectComplementOf()))");
- control2.add("HasKey( (<" + NS + "r> ) ())");
+ control2.add("HasKey( (<" + NS + "r> ) (<" + NS + "dp> ))");
if (!normalizedAxiomsStrings.equals(control1) && !normalizedAxiomsStrings.equals(control2))
- fail();
+ if(!normalizedAxiomsStrings.equals(control1)) {
+ assertEquals(normalizedAxiomsStrings.toString(), control1.toString());
+ }
+ if(!normalizedAxiomsStrings.equals(control2)) {
+ assertEquals(normalizedAxiomsStrings.toString(), control2.toString());
+ }
}
public void testTopObjectPropertyInSuperPosition() throws Exception {
@@ -210,7 +208,7 @@ protected Set getNormalizedAxioms() {
for (List inclusion : axiomHolder.m_dataPropertyInclusions)
axioms.add(m_dataFactory.getOWLSubDataPropertyOfAxiom(inclusion.get(0), inclusion.get(1)));
for (OWLHasKeyAxiom axiom : axiomHolder.m_hasKeys)
- axioms.add(m_dataFactory.getOWLHasKeyAxiom(axiom.getClassExpression(),asList(axiom.propertyExpressions())));
+ axioms.add(m_dataFactory.getOWLHasKeyAxiom(axiom.getClassExpression(), axiom.getPropertyExpressions()));
axioms.addAll(axiomHolder.m_facts);
return axioms;
}
@@ -218,7 +216,7 @@ protected Set getNormalizedAxioms() {
protected Set getNormalizedAxiomsString(String axiomsString) throws Exception {
loadOntologyWithAxioms(axiomsString);
Set normalizedAxioms = getNormalizedAxioms();
- Set normalizedAxiomsString = new HashSet<>();
+ Set normalizedAxiomsString = new TreeSet<>();
for (OWLAxiom axiom : normalizedAxioms)
normalizedAxiomsString.add(axiom.toString());
return normalizedAxiomsString;
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/basic-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/basic-control.txt
index 7c8a61a5..c07513ff 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/basic-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/basic-control.txt
@@ -1,5 +1,9 @@
:d(X) :- :r(X,Y), def:0(Y)
-def:0(X) :- all:0_1(X)
-all:0_1(X) :- :s(X,Y), all:0_0(Y)
-all:0_0(X) :- :s(X,Y), all:0_0(Y)
-all:0_0(X) :- :c(X)
\ No newline at end of file
+def:0(X) :- all:0(X)
+all:0(X) :- all:2(X)
+all:2(X) :- :s(X,Y), all:3(Y)
+all:0(X) :- :s(X,Y), all:1(Y)
+all:3(X) :- all:1(X)
+all:1(X) :- all:0(X)
+all:3(X) :- all:2(X)
+all:1(X) :- :c(X)
\ No newline at end of file
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/has-self-1-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/has-self-1-control.txt
index 6cd0c3ca..a11bfdc3 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/has-self-1-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/has-self-1-control.txt
@@ -1,4 +1,4 @@
-def:1(X) :- :r(X,Y)
-:r(X,X) :- def:0(X)
-def:0(:a)
-not def:1(:a)
\ No newline at end of file
+def:0(X) :- :r(X,Y)
+:r(X,X) :- def:1(X)
+def:1(:a)
+not def:0(:a)
\ No newline at end of file
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-1-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-1-control.txt
index c1fe451d..13ffcbed 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-1-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-1-control.txt
@@ -1,6 +1,6 @@
nom:i1(:i1)
nom:i2(:i2)
-:r(X,Y) v :r(X,Y1) :- :c(X), nom:i1(Y), nom:i2(Y1)
+:r(X,Z) v :r(X,Z1) :- :c(X), nom:i1(Z), nom:i2(Z1)
atLeast(1 :s not(def:0))(X) :- :d(X)
def:0(:i1)
def:0(:i2)
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-2-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-2-control.txt
index aaa9fc66..fb86b064 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-2-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-2-control.txt
@@ -1,9 +1,9 @@
- :- :h(X), :r(X,Y), def:0(Y)
+Y == Z v Y == Z1 :- :f(X), :r(X,Y), nom:i1(Z), nom:i2(Z1)
+:r(X,Z) v :r(X,Z1) :- :c(X), nom:i1(Z), nom:i2(Z1)
:- :g(X), :r(X,Y), nom:i1(Y)
-:r(X,Y) v :r(X,Y1) :- :c(X), nom:i1(Y), nom:i2(Y1)
-Y == Y1 v Y == Y2 :- :f(X), :r(X,Y), nom:i1(Y1), nom:i2(Y2)
:e(X) v [Y1 == Y2]@atMost(2 :r :d)(X) v [Y1 == Y3]@atMost(2 :r :d)(X) v [Y2 == Y3]@atMost(2 :r :d)(X) :- Y1 <= Y2, Y2 <= Y3, :d(X), :d(Y1), :d(Y2), :d(Y3), :r(X,Y1), :r(X,Y2), :r(X,Y3), NodeIDsAscendingOrEqual(Y1,Y2,Y3)
-nom:i2(:i2)
-def:0(:i2)
+ :- :h(X), :r(X,Y), def:0(Y)
def:0(:i1)
-nom:i1(:i1)
\ No newline at end of file
+nom:i2(:i2)
+nom:i1(:i1)
+def:0(:i2)
\ No newline at end of file
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-3-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-3-control.txt
index 5ffd8116..c2ddfc08 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-3-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-3-control.txt
@@ -1,4 +1,4 @@
-:r(Y,X) v :r(Y1,X) :- :c(X), nom:i1(Y), nom:i2(Y1)
:e(X) v [Y1 == Y2]@atMost(2 :r :d)(X) v [Y1 == Y3]@atMost(2 :r :d)(X) v [Y2 == Y3]@atMost(2 :r :d)(X) :- Y1 <= Y2, Y2 <= Y3, :d(X), :d(Y1), :d(Y2), :d(Y3), :r(X,Y1), :r(X,Y2), :r(X,Y3), NodeIDsAscendingOrEqual(Y1,Y2,Y3)
+:r(Z,X) v :r(Z1,X) :- :c(X), nom:i1(Z), nom:i2(Z1)
nom:i2(:i2)
nom:i1(:i1)
\ No newline at end of file
diff --git a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-4-control.txt b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-4-control.txt
index 1b3db256..af079c8e 100644
--- a/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-4-control.txt
+++ b/src/test/resources/org/semanticweb/HermiT/structural/res/nominals-4-control.txt
@@ -1,2 +1,2 @@
-:hasSugar(X,Y) :- :Chianti(X), nom:Dry(Y)
+:hasSugar(X,Z) :- :Chianti(X), nom:Dry(Z)
nom:Dry(:Dry)
\ No newline at end of file