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