package conformancetests; import static org.junit.Assert.assertEquals; import java.util.Arrays; import java.util.HashSet; import org.junit.Before; import org.junit.Test; import org.semanticweb.owlapi.apibinding.OWLManager; import org.semanticweb.owlapi.io.StringDocumentSource; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLClass; import org.semanticweb.owlapi.model.OWLDataFactory; import org.semanticweb.owlapi.model.OWLObjectProperty; import org.semanticweb.owlapi.model.OWLOntology; import org.semanticweb.owlapi.model.OWLOntologyCreationException; import org.semanticweb.owlapi.reasoner.InferenceType; import org.semanticweb.owlapi.reasoner.NodeSet; import org.semanticweb.owlapi.reasoner.OWLReasoner; import testbase.TestBase; @SuppressWarnings("javadoc") public class ProcessesTestCase extends TestBase { private OWLReasoner jfact1; private OWLReasoner jfact2; private OWLDataFactory df = OWLManager.getOWLDataFactory(); private OWLOntology o1; private OWLOntology o2; private OWLObjectProperty topObject = df.getOWLTopObjectProperty(); private OWLClass composition = df.getOWLClass(IRI .create("urn:mereology#Composition")); private OWLClass abstractEntity = df.getOWLClass(IRI .create("urn:mereology#Abstract_Entity")); private OWLClass whole = df.getOWLClass(IRI.create("urn:mereology#Whole")); private OWLClass pair = df.getOWLClass(IRI.create("urn:mereology#Pair")); private OWLClass part = df.getOWLClass(IRI.create("urn:mereology#Part")); private OWLClass serviceModel = df.getOWLClass(IRI .create("urn:Service#ServiceModel")); private OWLClass compositeProcess = df.getOWLClass(IRI .create("urn:Process#CompositeProcess")); private OWLObjectProperty composedOf = df.getOWLObjectProperty(IRI .create("urn:Process#composedOf")); private OWLClass simpleProcess = df.getOWLClass(IRI .create("urn:Process#SimpleProcess")); private OWLClass atomicProcess = df.getOWLClass(IRI .create("urn:Process#AtomicProcess")); private OWLClass process = df .getOWLClass(IRI.create("urn:Process#Process")); private String input1 = "Prefix(owl:=<http://www.w3.org/2002/07/owl#>)\n" + "Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)\n" + "Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)\n" + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n" + "Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)\n" + "Ontology(\n" + "Declaration(Class(<urn:mereology#Abstract_Entity>))\n" + "Declaration(Class(<urn:mereology#Composition>))\n" + "Declaration(Class(<urn:mereology#Pair>))\n" + "Declaration(Class(<urn:mereology#Part>))\n" + "Declaration(Class(<urn:mereology#Whole>))\n" + "Declaration(Class(owl:Thing))\n" + "Declaration(ObjectProperty(<urn:mereology#strict_part>))\n" + "Declaration(ObjectProperty(<urn:mereology#strict_part_of>))\n" + "Declaration(AnnotationProperty(rdfs:comment))\n" + "Declaration(AnnotationProperty(owl:versionInfo))\n" + "SubClassOf(<urn:mereology#Abstract_Entity> owl:Thing)\n" + "SubClassOf(<urn:mereology#Pair> <urn:mereology#Abstract_Entity>)\n" + "SubClassOf(<urn:mereology#Pair> ObjectExactCardinality(2 <urn:mereology#strict_part> <urn:mereology#Part>))\n" + "EquivalentClasses(<urn:mereology#Part> ObjectSomeValuesFrom(<urn:mereology#strict_part_of> <urn:mereology#Whole>))\n" + "SubClassOf(<urn:mereology#Part> <urn:mereology#Abstract_Entity>)\n" + "SubClassOf(<urn:mereology#Whole> <urn:mereology#Abstract_Entity>)\n" + "SubObjectPropertyOf(<urn:mereology#strict_part> owl:topObjectProperty)\n" + "InverseObjectProperties(<urn:mereology#strict_part_of> <urn:mereology#strict_part>)\n" + "SubObjectPropertyOf(<urn:mereology#strict_part_of> owl:topObjectProperty))"; private String input2 = "Prefix(owl:=<http://www.w3.org/2002/07/owl#>)\n" + "Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)\n" + "Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)\n" + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n" + "Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)\n" + "Ontology(\n" + "Declaration(Class(<urn:Process#AtomicProcess>))\n" + "Declaration(Class(<urn:Process#CompositeProcess>))\n" + "Declaration(Class(<urn:Process#Process>))\n" + "Declaration(Class(<urn:Process#SimpleProcess>))\n" + "Declaration(Class(<urn:Service#ServiceModel>))\n" + "Declaration(ObjectProperty(<urn:Process#composedOf>))\n" + "SubClassOf(<urn:Process#AtomicProcess> <urn:Process#Process>)\n" + "EquivalentClasses(<urn:Process#CompositeProcess> ObjectIntersectionOf(ObjectExactCardinality(1 <urn:Process#composedOf>) <urn:Process#Process>))\n" + "SubClassOf(<urn:Process#CompositeProcess> <urn:Process#Process>)\n" + "EquivalentClasses(<urn:Process#Process> ObjectUnionOf(<urn:Process#CompositeProcess> <urn:Process#AtomicProcess>))\n" + "SubClassOf(<urn:Process#Process> <urn:Service#ServiceModel>)\n" + "SubClassOf(<urn:Process#SimpleProcess> <urn:Process#Process>)\n" + "ObjectPropertyDomain(<urn:Process#composedOf> <urn:Process#CompositeProcess>))"; @SuppressWarnings("null") @Before public void setUp() throws OWLOntologyCreationException { o1 = OWLManager.createOWLOntologyManager() .loadOntologyFromOntologyDocument( new StringDocumentSource(input1)); o2 = OWLManager.createOWLOntologyManager() .loadOntologyFromOntologyDocument( new StringDocumentSource(input2)); jfact1 = factory().createReasoner(o1); jfact1.precomputeInferences(InferenceType.CLASS_HIERARCHY); jfact2 = factory().createReasoner(o2); jfact2.precomputeInferences(InferenceType.CLASS_HIERARCHY); } @SuppressWarnings({ "rawtypes", "unchecked" }) private static void equal(NodeSet<?> node, Object... objects) { assertEquals(new HashSet(Arrays.asList(objects)), node.getFlattened()); } @Test public void shouldTestgetgetSuperClasses_Part_true() { NodeSet<OWLClass> result = jfact1.getSuperClasses(part, true); equal(result, abstractEntity); } @Test public void shouldTestgetgetSuperClasses_Part_true2() { NodeSet<OWLClass> result = jfact2.getSuperClasses(simpleProcess, true); equal(result, process); result = jfact2.getSuperClasses(atomicProcess, true); equal(result, process); result = jfact2.getSuperClasses(process, true); equal(result, serviceModel); } @Test public void shouldTestgetgetSubClasses_top_true() { NodeSet<OWLClass> result = jfact1.getSubClasses(df.getOWLThing(), true); equal(result, abstractEntity, composition); result = jfact2.getSubClasses(df.getOWLThing(), true); equal(result, serviceModel); } @Test public void shouldTestgetObjectPropertyDomains_top_false() { NodeSet<OWLClass> result = jfact1.getObjectPropertyDomains(topObject, false); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyDomains_top_false2() { NodeSet<OWLClass> result = jfact2.getObjectPropertyDomains(topObject, false); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyDomains_top_false3() { NodeSet<OWLClass> result = jfact2.getObjectPropertyDomains(composedOf, true); equal(result, compositeProcess); } @Test public void shouldTestgetObjectPropertyRanges_top_false() { NodeSet<OWLClass> result = jfact1.getObjectPropertyRanges(topObject, false); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyRanges_top_false2() { NodeSet<OWLClass> result = jfact2.getObjectPropertyRanges(topObject, false); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyDomains_top_true() { NodeSet<OWLClass> result = jfact1.getObjectPropertyDomains(topObject, true); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyDomains_top_true2() { NodeSet<OWLClass> result = jfact2.getObjectPropertyDomains(topObject, true); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyRanges_top_true() { NodeSet<OWLClass> result = jfact1.getObjectPropertyRanges(topObject, true); equal(result, df.getOWLThing()); } @Test public void shouldTestgetObjectPropertyRanges_top_true2() { NodeSet<OWLClass> result = jfact2.getObjectPropertyRanges(topObject, true); equal(result, df.getOWLThing()); } @Test public void shouldTestgetgetSubClasses_AbstractEntity_false() { NodeSet<OWLClass> result = jfact1.getSubClasses(abstractEntity, false); equal(result, whole, pair, df.getOWLNothing(), part); result = jfact2.getSubClasses(serviceModel, false); equal(result, simpleProcess, atomicProcess, compositeProcess, df.getOWLNothing(), process); } @Test public void shouldTestgetgetSubClasses_AbstractEntity_true() { NodeSet<OWLClass> result = jfact1.getSubClasses(abstractEntity, true); equal(result, whole, pair, part); result = jfact2.getSubClasses(serviceModel, true); equal(result, process); } @Test public void shouldTestgetgetSuperClasses_Part_false() { NodeSet<OWLClass> result = jfact1.getSuperClasses(part, false); equal(result, df.getOWLThing(), abstractEntity); } @Test public void shouldTestgetgetSuperClasses_Part_false3() { NodeSet<OWLClass> result = jfact2.getSuperClasses(process, false); equal(result, df.getOWLThing(), serviceModel); } @Test public void shouldTestgetgetSuperClasses_Part_false4() { NodeSet<OWLClass> result = jfact2.getSuperClasses(compositeProcess, false); equal(result, df.getOWLThing(), serviceModel, process); } }