
1package conformancetests;2/* This file is part of the JFact DL reasoner3 Copyright 2011-2013 by Ignazio Palmisano, Dmitry Tsarkov, University of Manchester4 This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.5 This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.6 You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA*/7import org.junit.Test;8import testbase.TestBase;9@SuppressWarnings("javadoc")10public class OWL2 extends TestBase {11    @Test12    public void testowl2_rl_anonymous_individual() {13        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:j.0=\"http://owl2.test/rules#\">\n"14                + "  <owl:Ontology />\n"15                + "  <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#op\"/>\n"16                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules#I\"/>\n"17                + "  <owl:NamedIndividual>\n"18                + "    <j.0:op rdf:resource=\"http://owl2.test/rules#I\"/></owl:NamedIndividual></rdf:RDF>";19        String conclusion = "";20        String id = "owl2_rl_anonymous_individual";21        TestClasses tc = TestClasses.valueOf("CONSISTENCY");22        String d = "OWL 2 RL allows anonymous individual.";23        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);24        r.setReasonerFactory(factory());25        r.run();26    }27    @Test28    public void testowl2_rl_invalid_leftside_allvaluesfrom() {29        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"30                + "  <owl:Ontology />\n"31                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C\"/>\n"32                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C1\"/>\n"33                + "  <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#op\"/>\n"34                + "  <owl:Restriction>\n"35                + "    <owl:allValuesFrom rdf:resource=\"http://owl2.test/rules#C1\"/>\n"36                + "    <owl:onProperty rdf:resource=\"http://owl2.test/rules#op\"/>\n"37                + "    <rdfs:subClassOf rdf:resource=\"http://owl2.test/rules#C\"/></owl:Restriction></rdf:RDF>";38        String conclusion = "";39        String id = "owl2_rl_invalid_leftside_allvaluesfrom";40        TestClasses tc = TestClasses.valueOf("CONSISTENCY");41        String d = "OWL 2 RL does not allow left side allValuesFrom in a subClassOf axiom.";42        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);43        r.setReasonerFactory(factory());44        r.run();45    }46    @Test47    public void testowl2_rl_invalid_leftside_maxcard() {48        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"49                + "  <owl:Ontology />\n"50                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C\"/>\n"51                + "  <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#op\"/>\n"52                + "  <owl:Restriction>\n"53                + "    <rdfs:subClassOf rdf:resource=\"http://owl2.test/rules#C\"/>\n"54                + "    <owl:maxCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\">2</owl:maxCardinality>\n"55                + "    <owl:onProperty rdf:resource=\"http://owl2.test/rules#op\"/></owl:Restriction></rdf:RDF>";56        String conclusion = "";57        String id = "owl2_rl_invalid_leftside_maxcard";58        TestClasses tc = TestClasses.valueOf("CONSISTENCY");59        String d = "Invalid OWL 2 RL due to maxCardinality usage.";60        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);61        r.setReasonerFactory(factory());62        r.run();63    }64    @Test65    public void testowl2_rl_invalid_oneof() {66        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"67                + "  <owl:Ontology />\n"68                + "  <owl:Class rdf:about=\"http://owl2.test/rules#Cb\">\n"69                + "    <owl:oneOf rdf:parseType=\"Collection\">\n"70                + "      <owl:Thing rdf:about=\"http://owl2.test/rules#X\"/>\n"71                + "      <owl:Thing rdf:about=\"http://owl2.test/rules#Y\"/></owl:oneOf></owl:Class>\n"72                + "</rdf:RDF>";73        String conclusion = "";74        String id = "owl2_rl_invalid_oneof";75        TestClasses tc = TestClasses.valueOf("CONSISTENCY");76        String d = "OWL 2 RL does not permit owl:oneOf to define a named class (it can be used as a subclass expression).";77        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);78        r.setReasonerFactory(factory());79        r.run();80    }81    @Test82    public void testowl2_rl_invalid_owlreal() {83        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"84                + "  <owl:Ontology />\n"85                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C_Sub\">\n"86                + "    <rdfs:subClassOf>\n"87                + "      <owl:Restriction>\n"88                + "        <owl:allValuesFrom rdf:resource=\"http://www.w3.org/2002/07/owl#real\"/>\n"89                + "        <owl:onProperty>\n"90                + "          <owl:DatatypeProperty rdf:about=\"http://owl2.test/rules#p\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf>\n"91                + "  </owl:Class></rdf:RDF>";92        String conclusion = "";93        String id = "owl2_rl_invalid_owlreal";94        TestClasses tc = TestClasses.valueOf("CONSISTENCY");95        String d = "Invalid OWL 2 RL because owl:real is used.";96        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);97        r.setReasonerFactory(factory());98        r.run();99    }100    @Test101    public void testowl2_rl_invalid_rightside_somevaluesfrom() {102        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"103                + "  <owl:Ontology />\n"104                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C_Sub\">\n"105                + "    <rdfs:subClassOf>\n"106                + "      <owl:Restriction>\n"107                + "        <owl:someValuesFrom>\n"108                + "          <owl:Class rdf:about=\"http://owl2.test/rules#C1\"/></owl:someValuesFrom>\n"109                + "        <owl:onProperty>\n"110                + "          <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#p\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf>\n"111                + "  </owl:Class></rdf:RDF>";112        String conclusion = "";113        String id = "owl2_rl_invalid_rightside_somevaluesfrom";114        TestClasses tc = TestClasses.valueOf("CONSISTENCY");115        String d = "This is not a valid OWL 2 RL because someValuesFrom shows up on the right hand side of a SubClassOf axiom.";116        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);117        r.setReasonerFactory(factory());118        r.run();119    }120    @Test121    public void testowl2_rl_invalid_rightside_unionof() {122        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"123                + "  <owl:Ontology />\n"124                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C_Sub\">\n"125                + "    <rdfs:subClassOf>\n"126                + "      <owl:Class>\n"127                + "        <owl:unionOf rdf:parseType=\"Collection\">\n"128                + "          <owl:Class rdf:about=\"http://owl2.test/rules#C1\"/>\n"129                + "          <owl:Class rdf:about=\"http://owl2.test/rules#C2\"/></owl:unionOf></owl:Class></rdfs:subClassOf>\n"130                + "  </owl:Class></rdf:RDF>";131        String conclusion = "";132        String id = "owl2_rl_invalid_rightside_unionof";133        TestClasses tc = TestClasses.valueOf("CONSISTENCY");134        String d = "Incorrect OWL 2 RL syntax. unionOf shows up at the right hand side of a SubClassOf axiom.";135        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);136        r.setReasonerFactory(factory());137        r.run();138    }139    @Test140    public void testowl2_rl_invalid_unionof() {141        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"142                + "  <owl:Ontology />\n"143                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C\">\n"144                + "    <owl:unionOf rdf:parseType=\"Collection\">\n"145                + "      <owl:Class rdf:about=\"http://owl2.test/rules#C1\"/>\n"146                + "      <owl:Class rdf:about=\"http://owl2.test/rules#C2\"/></owl:unionOf></owl:Class>\n"147                + "</rdf:RDF>";148        String conclusion = "";149        String id = "owl2_rl_invalid_unionof";150        TestClasses tc = TestClasses.valueOf("CONSISTENCY");151        String d = "OWL 2 RL does not allow owl:unionOf to define a named class (it can be used as a subclass expression).";152        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);153        r.setReasonerFactory(factory());154        r.run();155    }156    @Test157    public void testowl2_rl_rules_fp_differentFrom() {158        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:j.0=\"http://owl2.test/rules/\">\n"159                + "  <owl:Ontology />\n"160                + "  <owl:FunctionalProperty rdf:about=\"http://owl2.test/rules/fp\">\n"161                + "    <rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#ObjectProperty\"/></owl:FunctionalProperty>\n"162                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y2\">\n"163                + "    <j.0:fp>\n"164                + "      <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X2\"/></j.0:fp></owl:NamedIndividual>\n"165                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X1\">\n"166                + "    <owl:differentFrom rdf:resource=\"http://owl2.test/rules/X2\"/></owl:NamedIndividual>\n"167                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y1\">\n"168                + "    <j.0:fp rdf:resource=\"http://owl2.test/rules/X1\"/></owl:NamedIndividual></rdf:RDF>";169        String conclusion = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"170                + "  <owl:Ontology />\n"171                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y2\"/>\n"172                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y1\">\n"173                + "    <owl:differentFrom rdf:resource=\"http://owl2.test/rules/Y2\"/></owl:NamedIndividual></rdf:RDF>";174        String id = "owl2_rl_rules_fp_differentFrom";175        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");176        String d = "This test checks the interaction between an OWL functional property and differentFrom assertions.";177        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);178        r.setReasonerFactory(factory());179        r.run();180    }181    @Test182    public void testowl2_rl_rules_ifp_differentFrom() {183        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:j.0=\"http://owl2.test/rules/\">\n"184                + "  <owl:Ontology />\n"185                + "  <owl:InverseFunctionalProperty rdf:about=\"http://owl2.test/rules/ifp\">\n"186                + "    <rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#ObjectProperty\"/></owl:InverseFunctionalProperty>\n"187                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y2\">\n"188                + "    <j.0:ifp>\n"189                + "      <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X2\"/></j.0:ifp></owl:NamedIndividual>\n"190                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X1\"/>\n"191                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/Y1\">\n"192                + "    <owl:differentFrom rdf:resource=\"http://owl2.test/rules/Y2\"/>\n"193                + "    <j.0:ifp rdf:resource=\"http://owl2.test/rules/X1\"/></owl:NamedIndividual></rdf:RDF>";194        String conclusion = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"195                + "  <owl:Ontology />\n"196                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X1\">\n"197                + "    <owl:differentFrom>\n"198                + "      <owl:NamedIndividual rdf:about=\"http://owl2.test/rules/X2\"/></owl:differentFrom></owl:NamedIndividual>\n"199                + "</rdf:RDF>";200        String id = "owl2_rl_rules_ifp_differentFrom";201        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");202        String d = "This test checks the interaction between inverse functional property and differentFrom assertions.";203        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);204        r.setReasonerFactory(factory());205        r.run();206    }207    @Test208    public void testowl2_rl_valid_mincard() {209        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:j.0=\"http://owl2.test/rules#\">\n"210                + "  <owl:Ontology rdf:about=\"http://org.semanticweb.ontologies/Ontology1232054810511161000\"/>\n"211                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C\">\n"212                + "    <rdfs:subClassOf>\n"213                + "      <owl:Restriction>\n"214                + "        <owl:minCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\">1</owl:minCardinality>\n"215                + "        <owl:onProperty>\n"216                + "          <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#OP\"/></owl:onProperty></owl:Restriction></rdfs:subClassOf></owl:Class>\n"217                + "  <owl:Class rdf:about=\"http://www.w3.org/2002/07/owl#Thing\"/>\n"218                + "  <j.0:C rdf:about=\"http://owl2.test/rules#c\">\n"219                + "    <rdf:type rdf:resource=\"http://www.w3.org/2002/07/owl#Thing\"/></j.0:C></rdf:RDF>";220        String conclusion = "";221        String id = "owl2_rl_valid_mincard";222        TestClasses tc = TestClasses.valueOf("CONSISTENCY");223        String d = "OWL 2 RL does not allow min cardinality";224        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);225        r.setReasonerFactory(factory());226        r.run();227    }228    @Test229    public void testowl2_rl_valid_oneof() {230        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"231                + "  <owl:Ontology />\n"232                + "  <owl:Class rdf:about=\"http://owl2.test/rules#Cb\"/>\n"233                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules#X\"/>\n"234                + "  <owl:NamedIndividual rdf:about=\"http://owl2.test/rules#Y\"/>\n"235                + "  <rdf:Description>\n"236                + "    <rdfs:subClassOf rdf:resource=\"http://owl2.test/rules#Cb\"/>\n"237                + "    <owl:oneOf rdf:parseType=\"Collection\">\n"238                + "      <owl:NamedIndividual rdf:about=\"http://owl2.test/rules#X\"/>\n"239                + "      <owl:NamedIndividual rdf:about=\"http://owl2.test/rules#Y\"/></owl:oneOf></rdf:Description>\n"240                + "</rdf:RDF>";241        String conclusion = "";242        String id = "owl2_rl_valid_oneof";243        TestClasses tc = TestClasses.valueOf("CONSISTENCY");244        String d = "A valid usage of oneOf in OWL 2 RL";245        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);246        r.setReasonerFactory(factory());247        r.run();248    }249    @Test250    public void testowl2_rl_valid_rightside_allvaluesfrom() {251        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"252                + "  <owl:Ontology />\n"253                + "  <owl:Class rdf:about=\"http://owl2.test/rules#C\">\n"254                + "    <rdfs:subClassOf>\n"255                + "      <owl:Restriction>\n"256                + "        <owl:onProperty>\n"257                + "          <owl:ObjectProperty rdf:about=\"http://owl2.test/rules#op\"/></owl:onProperty>\n"258                + "        <owl:allValuesFrom>\n"259                + "          <owl:Class rdf:about=\"http://owl2.test/rules#C1\"/></owl:allValuesFrom></owl:Restriction></rdfs:subClassOf>\n"260                + "  </owl:Class></rdf:RDF>";261        String conclusion = "";262        String id = "owl2_rl_valid_rightside_allvaluesfrom";263        TestClasses tc = TestClasses.valueOf("CONSISTENCY");264        String d = "Valid RL usage of allValuesFrom.";265        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);266        r.setReasonerFactory(factory());267        r.run();268    }269    @Test270    public void testNew_Feature_AnnotationAnnotations_001() {271        String premise = "<?xml version=\"1.0\"?>\n"272                + "<rdf:RDF\n"273                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs= \"http://www.w3.org/2000/01/rdf-schema#\">\n"274                + '\n'275                + "<owl:Ontology rdf:about=\"http://example.org/\"/>\n"276                + '\n'277                + "<rdf:Description rdf:about=\"http://example.org/\">\n"278                + "  <rdfs:label>An example ontology</rdfs:label></rdf:Description>\n"279                + '\n'280                + "<owl:Annotation>\n"281                + "  <owl:annotatedSource rdf:resource=\"http://example.org/\" />\n"282                + "  <owl:annotatedProperty rdf:resource=\"http://www.w3.org/2000/01/rdf-schema#label\" />\n"283                + "  <owl:annotatedTarget>An example ontology</owl:annotatedTarget>\n"284                + "  <author>Mike Smith</author>\n" + "</owl:Annotation>\n"285                + '\n' + "<owl:AnnotationProperty rdf:about=\"author\" />\n"286                + "<owl:NamedIndividual rdf:about=\"i\" />\n" + '\n'287                + "</rdf:RDF>";288        String conclusion = "";289        String id = "New_Feature_AnnotationAnnotations_001";290        TestClasses tc = TestClasses.valueOf("CONSISTENCY");291        String d = "Demonstrates annotation of an annotation.  Adapted from an example in the Mapping to RDF Graphs document.";292        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);293        r.setReasonerFactory(factory());294        r.run();295    }296    @Test297    public void testNew_Feature_AsymmetricProperty_001() {298        String premise = "<?xml version=\"1.0\"?>\n"299                + "<rdf:RDF\n"300                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"301                + '\n' + "<owl:Ontology/>\n" + '\n'302                + "<owl:ObjectProperty rdf:about=\"parentOf\" />\n"303                + "<owl:AsymmetricProperty rdf:about=\"parentOf\" />\n" + '\n'304                + "<rdf:Description rdf:about=\"Peter\">\n"305                + "  <parentOf rdf:resource=\"Stewie\" />\n"306                + "</rdf:Description>\n" + '\n'307                + "<rdf:Description rdf:about=\"Stewie\">\n"308                + "  <parentOf rdf:resource=\"Peter\" />\n"309                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";310        String conclusion = "";311        String id = "New_Feature_AsymmetricProperty_001";312        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");313        String d = "Demonstrates use of an asymmetric object property axiom to cause a trivial inconsistency based on the example in the Structural Specification and Functional-Style Syntax document.";314        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);315        r.setReasonerFactory(factory());316        r.run();317    }318    @Test319    public void testNew_Feature_AxiomAnnotations_001() {320        String premise = "<?xml version=\"1.0\"?>\n"321                + "<rdf:RDF\n"322                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">\n"323                + '\n'324                + "<owl:Ontology/>\n"325                + '\n'326                + "<owl:Class rdf:about=\"Child\" />\n"327                + "<owl:Class rdf:about=\"Person\" />\n"328                + '\n'329                + "<rdf:Description rdf:about=\"Child\">\n"330                + "  <rdfs:subClassOf rdf:resource=\"Person\" /></rdf:Description>\n"331                + '\n'332                + "<owl:Axiom>\n"333                + "  <owl:annotatedSource rdf:resource=\"Child\" />\n"334                + "  <owl:annotatedProperty rdf:resource=\"http://www.w3.org/2000/01/rdf-schema#subClassOf\" />\n"335                + "  <owl:annotatedTarget rdf:resource=\"Person\" />\n"336                + "  <rdfs:comment>Children are people.</rdfs:comment></owl:Axiom>\n"337                + '\n' + "</rdf:RDF>";338        String conclusion = "";339        String id = "New_Feature_AxiomAnnotations_001";340        TestClasses tc = TestClasses.valueOf("CONSISTENCY");341        String d = "Demonstrates axiom annotation based on an example in the Mapping to RDF Graphs document.  The axiom being annotated here generates a main triple when mapped to RDF.";342        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);343        r.setReasonerFactory(factory());344        r.run();345    }346    @Test347    public void testNew_Feature_BottomDataProperty_001() {348        String premise = "<?xml version=\"1.0\"?>\n"349                + "<rdf:RDF\n"350                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"351                + '\n'352                + "<owl:Ontology/>\n"353                + '\n'354                + "<rdf:Description rdf:about=\"i\">\n"355                + "  <rdf:type>\n"356                + "    <owl:Restriction>\n"357                + "      <owl:onProperty rdf:resource=\"http://www.w3.org/2002/07/owl#bottomDataProperty\" />\n"358                + "      <owl:someValuesFrom rdf:resource=\"http://www.w3.org/2000/01/rdf-schema#Literal\" /></owl:Restriction></rdf:type>\n"359                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";360        String conclusion = "";361        String id = "New_Feature_BottomDataProperty_001";362        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");363        String d = "Demonstrates use of the bottom data property to create an inconsistency.";364        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);365        r.setReasonerFactory(factory());366        r.run();367    }368    @Test369    public void testNew_Feature_BottomObjectProperty_001() {370        String premise = "<?xml version=\"1.0\"?>\n"371                + "<rdf:RDF\n"372                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"373                + '\n'374                + "<owl:Ontology/>\n"375                + '\n'376                + "<rdf:Description rdf:about=\"i\">\n"377                + "  <rdf:type>\n"378                + "    <owl:Restriction>\n"379                + "      <owl:onProperty rdf:resource=\"http://www.w3.org/2002/07/owl#bottomObjectProperty\" />\n"380                + "      <owl:someValuesFrom rdf:resource=\"http://www.w3.org/2002/07/owl#Thing\" /></owl:Restriction></rdf:type>\n"381                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";382        String conclusion = "";383        String id = "New_Feature_BottomObjectProperty_001";384        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");385        String d = "Demonstrates use of the bottom object property to create an inconsistency.";386        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);387        r.setReasonerFactory(factory());388        r.run();389    }390    @Test391    public void testNew_Feature_DisjointObjectProperties_001() {392        String premise = "<?xml version=\"1.0\"?>\n"393                + "<rdf:RDF\n"394                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"395                + '\n'396                + "<owl:Ontology/>\n"397                + '\n'398                + "<owl:ObjectProperty rdf:about=\"hasFather\" />\n"399                + "<owl:ObjectProperty rdf:about=\"hasMother\" />\n"400                + '\n'401                + "<rdf:Description rdf:about=\"hasFather\">\n"402                + "  <owl:propertyDisjointWith rdf:resource=\"hasMother\" /></rdf:Description>\n"403                + '\n' + "<rdf:Description rdf:about=\"Stewie\">\n"404                + "  <hasFather rdf:resource=\"Peter\" />\n"405                + "</rdf:Description>\n" + '\n'406                + "<rdf:Description rdf:about=\"Stewie\">\n"407                + "  <hasMother rdf:resource=\"Lois\" />\n"408                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";409        String conclusion = "<?xml version=\"1.0\"?>\n"410                + "<rdf:RDF\n"411                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"412                + '\n'413                + "<owl:Ontology/>\n"414                + '\n'415                + "<rdf:Description rdf:about=\"Peter\">\n"416                + "  <owl:differentFrom rdf:resource=\"Lois\" /></rdf:Description>\n"417                + '\n' + "</rdf:RDF>";418        String id = "New_Feature_DisjointObjectProperties_001";419        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");420        String d = "Demonstrates use of a disjoint object properties axiom to infer that two individuals are different based on the example in the Structural Specification and Functional-Style Syntax document.";421        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);422        r.setReasonerFactory(factory());423        r.run();424    }425    @Test426    public void testNew_Feature_DisjointObjectProperties_002() {427        String premise = "<?xml version=\"1.0\"?>\n"428                + "<rdf:RDF\n"429                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"430                + '\n'431                + "<owl:Ontology/>\n"432                + '\n'433                + "<owl:ObjectProperty rdf:about=\"hasFather\" />\n"434                + "<owl:ObjectProperty rdf:about=\"hasMother\" />\n"435                + "<owl:ObjectProperty rdf:about=\"hasChild\" />\n"436                + '\n'437                + "<owl:AllDisjointProperties>\n"438                + "  <owl:members rdf:parseType=\"Collection\">\n"439                + "    <rdf:Description rdf:about=\"hasFather\" />\n"440                + "    <rdf:Description rdf:about=\"hasMother\" />\n"441                + "    <rdf:Description rdf:about=\"hasChild\" /></owl:members></owl:AllDisjointProperties>\n"442                + '\n'443                + "<rdf:Description rdf:about=\"Stewie\">\n"444                + "  <hasFather rdf:resource=\"Peter\" />\n"445                + "</rdf:Description>\n"446                + '\n'447                + "<rdf:Description rdf:about=\"Stewie\">\n"448                + "  <hasMother rdf:resource=\"Lois\" />\n"449                + "</rdf:Description>\n"450                + '\n'451                + "<rdf:Description rdf:about=\"Stewie\">\n"452                + "  <hasChild rdf:resource=\"StewieJr\" />\n"453                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";454        String conclusion = "<?xml version=\"1.0\"?>\n"455                + "<rdf:RDF\n"456                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"457                + '\n'458                + "<owl:Ontology/>\n"459                + '\n'460                + "<owl:AllDifferent>\n"461                + "  <owl:distinctMembers rdf:parseType=\"Collection\">\n"462                + "    <rdf:Description rdf:about=\"Peter\" />\n"463                + "    <rdf:Description rdf:about=\"Lois\" />\n"464                + "    <rdf:Description rdf:about=\"StewieJr\" /></owl:distinctMembers></owl:AllDifferent>\n"465                + '\n' + "</rdf:RDF>";466        String id = "New_Feature_DisjointObjectProperties_002";467        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");468        String d = "A modification of test New-Feature-DisjointObjectProperties-001 to demonstrate a ternary disjoint object properties axiom.";469        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);470        r.setReasonerFactory(factory());471        r.run();472    }473    @Test474    public void testNew_Feature_DisjointUnion_001() {475        String premise = "<?xml version=\"1.0\"?>\n"476                + "<rdf:RDF\n"477                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"478                + '\n'479                + "<owl:Ontology/>\n"480                + '\n'481                + "<owl:Class rdf:about=\"Child\" />\n"482                + "<owl:Class rdf:about=\"Boy\" />\n"483                + "<owl:Class rdf:about=\"Girl\" />\n"484                + '\n'485                + "<rdf:Description rdf:about=\"Child\">\n"486                + "  <owl:disjointUnionOf rdf:parseType=\"Collection\">\n"487                + "    <rdf:Description rdf:about=\"Boy\" />\n"488                + "    <rdf:Description rdf:about=\"Girl\" /></owl:disjointUnionOf></rdf:Description>\n"489                + '\n'490                + "<Child rdf:about=\"Stewie\" />\n"491                + "<rdf:Description rdf:about=\"Stewie\">\n"492                + "  <rdf:type>\n"493                + "    <owl:Class>\n"494                + "      <owl:complementOf rdf:resource=\"Girl\" /></owl:Class></rdf:type>\n"495                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";496        String conclusion = "<?xml version=\"1.0\"?>\n"497                + "<rdf:RDF\n"498                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"499                + '\n' + "<owl:Ontology/>\n" + '\n'500                + "<owl:Class rdf:about=\"Boy\" />\n" + '\n'501                + "<Boy rdf:about=\"Stewie\" />\n" + '\n' + "</rdf:RDF>";502        String id = "New_Feature_DisjointUnion_001";503        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");504        String d = "Demonstrates a disjoint union axiom based on the example in the Structural Specification and Functional-Style Syntax document.";505        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);506        r.setReasonerFactory(factory());507        r.run();508    }509    @Test510    public void testNew_Feature_IrreflexiveProperty_001() {511        String premise = "<?xml version=\"1.0\"?>\n"512                + "<rdf:RDF\n"513                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"514                + '\n' + "<owl:Ontology/>\n" + '\n'515                + "<owl:ObjectProperty rdf:about=\"marriedTo\" />\n"516                + "<owl:IrreflexiveProperty rdf:about=\"marriedTo\" />\n"517                + '\n' + "<rdf:Description rdf:about=\"Peter\">\n"518                + "  <marriedTo rdf:resource=\"Peter\" />\n"519                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";520        String conclusion = "";521        String id = "New_Feature_IrreflexiveProperty_001";522        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");523        String d = "Demonstrates use of an irreflexive object property axiom to cause a trivial inconsistency based on the example in the Structural Specification and Functional-Style Syntax document.";524        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);525        r.setReasonerFactory(factory());526        r.run();527    }528    @Test529    public void testNew_Feature_NegativeDataPropertyAssertion_001() {530        String premise = "<?xml version=\"1.0\"?>\n"531                + "<rdf:RDF\n"532                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"533                + '\n'534                + "<owl:Ontology/>\n"535                + '\n'536                + "<owl:DatatypeProperty rdf:about=\"hasAge\" />\n"537                + '\n'538                + "<owl:NegativePropertyAssertion>\n"539                + "  <owl:sourceIndividual rdf:resource=\"Meg\" />\n"540                + "  <owl:assertionProperty rdf:resource=\"hasAge\" />\n"541                + "  <owl:targetValue rdf:datatype=\"http://www.w3.org/2001/XMLSchema#integer\">5</owl:targetValue></owl:NegativePropertyAssertion>\n"542                + '\n'543                + "<rdf:Description rdf:about=\"Meg\">\n"544                + "  <hasAge rdf:datatype=\"http://www.w3.org/2001/XMLSchema#integer\">5</hasAge></rdf:Description>\n"545                + '\n' + "</rdf:RDF>";546        String conclusion = "";547        String id = "New_Feature_NegativeDataPropertyAssertion_001";548        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");549        String d = "Demonstrates use of a negative data property assertion to create a trivial inconsistency based on an example in the Structural Specification and Functional-Style Syntax document.";550        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);551        r.setReasonerFactory(factory());552        r.run();553    }554    @Test555    public void testNew_Feature_NegativeObjectPropertyAssertion_001() {556        String premise = "<?xml version=\"1.0\"?>\n"557                + "<rdf:RDF\n"558                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"559                + '\n'560                + "<owl:Ontology/>\n"561                + '\n'562                + "<owl:ObjectProperty rdf:about=\"hasSon\" />\n"563                + '\n'564                + "<owl:NegativePropertyAssertion>\n"565                + "  <owl:sourceIndividual rdf:resource=\"Peter\" />\n"566                + "  <owl:assertionProperty rdf:resource=\"hasSon\" />\n"567                + "  <owl:targetIndividual rdf:resource=\"Meg\" /></owl:NegativePropertyAssertion>\n"568                + '\n' + "<rdf:Description rdf:about=\"Peter\">\n"569                + "  <hasSon rdf:resource=\"Meg\" />\n"570                + "</rdf:Description>\n" + "</rdf:RDF>";571        String conclusion = "";572        String id = "New_Feature_NegativeObjectPropertyAssertion_001";573        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");574        String d = "Demonstrates use of a negative object property assertion to create a trivial inconsistency based on an example in the Structural Specification and Functional-Style Syntax document.";575        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);576        r.setReasonerFactory(factory());577        r.run();578    }579    @Test580    @Changed581    public void testNew_Feature_ObjectPropertyChain_001() {582        String premise = "<?xml version=\"1.0\"?>\n"583                + "<rdf:RDF\n"584                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"585                + "<owl:Ontology/><owl:ObjectProperty rdf:about=\"hasMother\" />\n"586                + "<owl:ObjectProperty rdf:about=\"hasSister\" />\n"587                + "<owl:ObjectProperty rdf:about=\"hasAunt\" />\n"588                + "<rdf:Description rdf:about=\"hasAunt\">\n"589                + "  <owl:propertyChainAxiom rdf:parseType=\"Collection\">\n"590                + "    <rdf:Description rdf:about=\"hasMother\" />\n"591                + "    <rdf:Description rdf:about=\"hasSister\" /></owl:propertyChainAxiom></rdf:Description>\n"592                + "<rdf:Description rdf:about=\"Stewie\">\n"593                + "  <hasMother rdf:resource=\"Lois\" />\n"594                + "</rdf:Description>\n"595                + "<rdf:Description rdf:about=\"Lois\">\n"596                + "  <hasSister rdf:resource=\"Carol\" />\n"597                + "</rdf:Description>\n" + "</rdf:RDF>";598        String conclusion = "<?xml version=\"1.0\"?>\n"599                + "<rdf:RDF\n"600                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"601                + "<owl:Ontology/>\n"602                + "<owl:ObjectProperty rdf:about=\"hasAunt\" />\n"603                + "<rdf:Description rdf:about=\"Stewie\"><hasAunt rdf:resource=\"Carol\" /></rdf:Description></rdf:RDF>";604        String id = "New_Feature_ObjectPropertyChain_001";605        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");606        String d = "Demonstrates an object property chain in a subproperty axiom based on the example in the Structural Specification and Functional-Style Syntax document.";607        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);608        r.setReasonerFactory(factory());609        r.run();610    }611    @Test612    public void testNew_Feature_ObjectPropertyChain_BJP_004() {613        String premise = "<?xml version=\"1.0\"?>\n"614                + "<rdf:RDF\n"615                + "    xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdfs= \"http://www.w3.org/2000/01/rdf-schema#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"616                + '\n'617                + "<owl:Ontology/>\n"618                + '\n'619                + "    <rdf:Description rdf:about=\"p\">\n"620                + "        <owl:propertyChainAxiom rdf:parseType=\"Collection\">\n"621                + "            <owl:ObjectProperty rdf:about=\"p\"/>\n"622                + "            <owl:ObjectProperty rdf:about=\"q\"/></owl:propertyChainAxiom></rdf:Description>\n"623                + "    \n" + "    <rdf:Description rdf:about=\"a\">\n"624                + "        <q rdf:resource=\"b\"/>\n"625                + "    </rdf:Description>\n" + "    \n"626                + "    <rdf:Description rdf:about=\"b\">\n"627                + "        <q rdf:resource=\"c\"/>\n"628                + "    </rdf:Description>\n" + "   \n" + "</rdf:RDF>";629        String conclusion = "<rdf:RDF\n"630                + "    xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"631                + '\n' + "   <owl:Ontology/>\n"632                + "   <owl:ObjectProperty rdf:about=\"p\"/>\n"633                + "   <owl:TransitiveProperty rdf:about=\"p\"/>\n"634                + "</rdf:RDF>";635        String id = "New_Feature_ObjectPropertyChain_BJP_004";636        TestClasses tc = TestClasses.valueOf("NEGATIVE_IMPL");637        String d = "A test of an interaction between a role chain +hierarchy and transitivity axioms.";638        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);639        r.setReasonerFactory(factory());640        r.run();641    }642    @Test643    public void testNew_Feature_ObjectQCR_001() {644        String premise = "<?xml version=\"1.0\"?>\n"645                + "<rdf:RDF\n"646                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"647                + '\n'648                + "<owl:Ontology/>\n"649                + '\n'650                + "<owl:ObjectProperty rdf:about=\"fatherOf\" />\n"651                + "<owl:Class rdf:about=\"Man\" />\n"652                + '\n'653                + "<rdf:Description rdf:about=\"Peter\">\n"654                + "  <fatherOf rdf:resource=\"Stewie\" />\n"655                + "  <fatherOf rdf:resource=\"Chris\" />\n"656                + "</rdf:Description>\n"657                + '\n'658                + "<Man rdf:about=\"Stewie\" />\n"659                + "<Man rdf:about=\"Chris\" />\n"660                + '\n'661                + "<rdf:Description rdf:about=\"Stewie\">\n"662                + "  <owl:differentFrom rdf:resource=\"Chris\" /></rdf:Description>\n"663                + '\n' + "</rdf:RDF>";664        String conclusion = "<?xml version=\"1.0\"?>\n"665                + "<rdf:RDF\n"666                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"667                + '\n'668                + "<owl:Ontology/>\n"669                + '\n'670                + "<owl:ObjectProperty rdf:about=\"fatherOf\" />\n"671                + "<owl:Class rdf:about=\"Man\" />\n"672                + '\n'673                + "<rdf:Description rdf:about=\"Peter\">\n"674                + "  <rdf:type>\n"675                + "    <owl:Restriction>\n"676                + "      <owl:onProperty rdf:resource=\"fatherOf\" />\n"677                + "      <owl:minQualifiedCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\">2</owl:minQualifiedCardinality>\n"678                + "      <owl:onClass rdf:resource=\"Man\" /></owl:Restriction></rdf:type>\n"679                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";680        String id = "New_Feature_ObjectQCR_001";681        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");682        String d = "Demonstrates a qualified minimum cardinality object property restriction based on example in the Structural Specification and Functional-Style Syntax document.";683        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);684        r.setReasonerFactory(factory());685        r.run();686    }687    @Test688    public void testNew_Feature_ObjectQCR_002() {689        String premise = "<?xml version=\"1.0\"?>\n"690                + "<rdf:RDF\n"691                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"692                + '\n'693                + "<owl:Ontology/>\n"694                + '\n'695                + "<owl:ObjectProperty rdf:about=\"fatherOf\" />\n"696                + "<owl:Class rdf:about=\"Woman\" />\n"697                + '\n'698                + "<rdf:Description rdf:about=\"Peter\">\n"699                + "  <fatherOf rdf:resource=\"Stewie\" />\n"700                + "  <fatherOf rdf:resource=\"Meg\" /></rdf:Description>\n"701                + '\n'702                + "<Woman rdf:about=\"Meg\" />\n"703                + '\n'704                + "<rdf:Description rdf:about=\"Peter\">\n"705                + "  <rdf:type>\n"706                + "    <owl:Restriction>\n"707                + "      <owl:onProperty rdf:resource=\"fatherOf\" />\n"708                + "      <owl:maxQualifiedCardinality rdf:datatype=\"http://www.w3.org/2001/XMLSchema#nonNegativeInteger\">1</owl:maxQualifiedCardinality>\n"709                + "      <owl:onClass rdf:resource=\"Woman\" /></owl:Restriction></rdf:type>\n"710                + "</rdf:Description>\n"711                + '\n'712                + "<rdf:Description rdf:about=\"Stewie\">\n"713                + "  <owl:differentFrom rdf:resource=\"Meg\" /></rdf:Description>\n"714                + '\n' + "</rdf:RDF>";715        String conclusion = "<?xml version=\"1.0\"?>\n"716                + "<rdf:RDF\n"717                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"718                + '\n'719                + "<owl:Ontology/>\n"720                + '\n'721                + "<owl:Class rdf:about=\"Woman\" />\n"722                + '\n'723                + "<rdf:Description rdf:about=\"Stewie\">\n"724                + "  <rdf:type>\n"725                + "    <owl:Class>\n"726                + "      <owl:complementOf rdf:resource=\"Woman\" /></owl:Class></rdf:type>\n"727                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";728        String id = "New_Feature_ObjectQCR_002";729        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");730        String d = "Demonstrates a qualified maximum cardinality object property restriction adapted from example in the Structural Specification and Functional-Style Syntax document.";731        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);732        r.setReasonerFactory(factory());733        r.run();734    }735    @Test736    public void testFS2RDF_different_individuals_2_ar() {737        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns=\"http://example.org/\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"738                + "  <owl:Ontology/>\n"739                + "  <rdf:Description rdf:about=\"http://example.org/a\">\n"740                + "    <owl:differentFrom rdf:resource=\"http://example.org/b\"/></rdf:Description></rdf:RDF>";741        String conclusion = "";742        String id = "FS2RDF_different_individuals_2_ar";743        TestClasses tc = TestClasses.valueOf("CONSISTENCY");744        String d = "Functional syntax to RDFXML translation of ontology consisting of a 2 argument DifferentIndividuals";745        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);746        r.setReasonerFactory(factory());747        r.run();748    }749    @Test750    public void testFS2RDF_different_individuals_3_ar() {751        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns=\"http://example.org/\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"752                + "  <owl:Ontology/>\n"753                + "  <owl:AllDifferent>\n"754                + "    <owl:distinctMembers rdf:parseType=\"Collection\">\n"755                + "      <rdf:Description rdf:about=\"http://example.org/a\"/>\n"756                + "      <rdf:Description rdf:about=\"http://example.org/b\"/>\n"757                + "      <rdf:Description rdf:about=\"http://example.org/c\"/></owl:distinctMembers></owl:AllDifferent>\n"758                + "</rdf:RDF>";759        String conclusion = "";760        String id = "FS2RDF_different_individuals_3_ar";761        TestClasses tc = TestClasses.valueOf("CONSISTENCY");762        String d = "Functional syntax to RDFXML translation of ontology consisting of a 3 argument DifferentIndividuals";763        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);764        r.setReasonerFactory(factory());765        r.run();766    }767    @Test768    public void testFS2RDF_no_builtin_prefixes_ar() {769        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns=\"http://example.org/\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"770                + "  <owl:Ontology/>\n"771                + "  <rdf:Description rdf:about=\"http://example.org/d\">\n"772                + "    <owl:sameAs rdf:resource=\"http://example.org/e\"/></rdf:Description>\n"773                + "  <rdf:Description rdf:about=\"http://example.org/a\">\n"774                + "    <owl:sameAs>\n"775                + "      <rdf:Description rdf:about=\"http://example.org/b\">\n"776                + "        <owl:sameAs>\n"777                + "          <rdf:Description rdf:about=\"http://example.org/c\">\n"778                + "            <owl:sameAs rdf:resource=\"http://example.org/d\"/></rdf:Description></owl:sameAs></rdf:Description></owl:sameAs></rdf:Description>\n"779                + "</rdf:RDF>";780        String conclusion = "";781        String id = "FS2RDF_no_builtin_prefixes_ar";782        TestClasses tc = TestClasses.valueOf("CONSISTENCY");783        String d = "Functional syntax to RDFXML checking that there aren't builtin prefixes for xsd, rdf, rdfs, owl";784        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);785        r.setReasonerFactory(factory());786        r.run();787    }788    @Test789    public void testFS2RDF_same_individual_2_ar() {790        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns=\"http://example.org/\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"791                + "  <owl:Ontology/>\n"792                + "  <rdf:Description rdf:about=\"http://example.org/a\">\n"793                + "    <owl:sameAs rdf:resource=\"http://example.org/b\"/></rdf:Description></rdf:RDF>";794        String conclusion = "";795        String id = "FS2RDF_same_individual_2_ar";796        TestClasses tc = TestClasses.valueOf("CONSISTENCY");797        String d = "Functional syntax to RDFXML translation of ontology consisting of a 2 argument SameIndividual";798        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);799        r.setReasonerFactory(factory());800        r.run();801    }802    @Test803    public void testbnode2somevaluesfrom() {804        String premise = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\" xmlns:ex=\"http://example.org/\"\n"805                + "  xml:base=\"http://example.org/\">\n"806                + "  <owl:Ontology/>\n"807                + "  <owl:ObjectProperty rdf:about=\"p\"/>\n"808                + "   \n"809                + "  <owl:Thing rdf:about=\"a\">\n"810                + "    <ex:p><rdf:Description rdf:nodeID=\"x\"/></ex:p> </owl:Thing></rdf:RDF>";811        String conclusion = "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"   xmlns:ex=\"http://example.org/\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\"\n"812                + "          xml:base=\"http://example.org/\">\n"813                + "  <owl:Ontology/>\n"814                + "  <owl:ObjectProperty rdf:about=\"p\"/>\n"815                + "  <owl:Thing rdf:about=\"a\">\n"816                + "        <rdf:type>\n"817                + "            <owl:Restriction>\n"818                + "                <owl:onProperty rdf:resource=\"p\"/>\n"819                + "                <owl:someValuesFrom rdf:resource=\"http://www.w3.org/2002/07/owl#Thing\"/></owl:Restriction></rdf:type></owl:Thing></rdf:RDF>";820        String id = "bnode2somevaluesfrom";821        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");822        String d = "Shows that a BNode is an existential variable.";823        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);824        r.setReasonerFactory(factory());825        r.run();826    }827    @Test828    public void testchain2trans1() {829        String premise = "<rdf:RDF \n"830                + "     xml:base=\"http://example.org/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"831                + '\n'832                + "    <owl:Ontology rdf:about=\"http://owl.semanticweb.org/page/Special:GetOntology/Chain2trans?m=p\"/>\n"833                + "    <owl:ObjectProperty rdf:about=\"#p\"/>\n"834                + '\n'835                + "    <rdf:Description rdf:about=\"#p\">\n"836                + "        <owl:propertyChainAxiom rdf:parseType=\"Collection\">\n"837                + "            <rdf:Description rdf:about=\"#p\"/>\n"838                + "            <rdf:Description rdf:about=\"#p\"/></owl:propertyChainAxiom></rdf:Description>\n"839                + "</rdf:RDF>";840        String conclusion = "<?xml version=\"1.0\"?>\n"841                + "<rdf:RDF \n"842                + "     xml:base=\"http://example.org/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:owl=\"http://www.w3.org/2002/07/owl#\">\n"843                + "    <owl:Ontology rdf:about=\"http://owl.semanticweb.org/page/Special:GetOntology/Chain2trans?m=c\"/>\n"844                + "    <owl:TransitiveProperty rdf:about=\"#p\"/>\n"845                + "</rdf:RDF>";846        String id = "chain2trans1";847        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");848        String d = "A role chain can be a synonym for transitivity.";849        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);850        r.setReasonerFactory(factory());851        r.run();852    }853    @Test854    public void testConsistent_dateTime() {855        String premise = "Prefix(:=<http://example.org/>)\n"856                + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n"857                + "Ontology(\n"858                + "  Declaration(NamedIndividual(:a))\n"859                + "  Declaration(DataProperty(:dp))\n"860                + "  Declaration(Class(:A))\n"861                + "  SubClassOf(:A \n"862                + "    DataSomeValuesFrom(:dp DatatypeRestriction(\n"863                + "      xsd:dateTime \n"864                + "      xsd:minInclusive \"2008-10-08T20:44:11.656+01:00\"^^xsd:dateTime)\n"865                + "    )\n"866                + "  ) \n"867                + "  SubClassOf(:A \n"868                + "    DataAllValuesFrom(:dp DatatypeRestriction(\n"869                + "      xsd:dateTime \n"870                + "      xsd:maxInclusive \"2008-10-08T20:44:11.656+01:00\"^^xsd:dateTime)\n"871                + "    )\n" + "  )\n" + "  ClassAssertion(:A :a)\n" + ')';872        String conclusion = "";873        String id = "Consistent_dateTime";874        TestClasses tc = TestClasses.valueOf("CONSISTENCY");875        String d = "The datatype restrictions leave exactly one dateTime value as dp filler for the individual a, so the ontology is consistent.";876        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);877        r.setReasonerFactory(factory());878        r.run();879    }880    @Test881    public void testconsistent_integer_filler() {882        String premise = "Prefix(:=<http://example.org/>)\n"883                + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n"884                + "Ontology(\n" + "  Declaration(NamedIndividual(:a))\n"885                + "  Declaration(DataProperty(:dp))\n"886                + "  Declaration(Class(:A))\n"887                + "  SubClassOf(:A DataHasValue(:dp \"18\"^^xsd:integer)) \n"888                + "  ClassAssertion(:A :a) \n"889                + "  ClassAssertion(DataAllValuesFrom(:dp xsd:integer) :a)\n"890                + ')';891        String conclusion = "";892        String id = "consistent_integer_filler";893        TestClasses tc = TestClasses.valueOf("CONSISTENCY");894        String d = "The individual a is in the extension of the class A, which implies that it has a hasAge filler of 18 as integer, which is consistent with the all values from integer assertion for a.";895        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);896        r.setReasonerFactory(factory());897        r.run();898    }899    @Test900    public void testDatatype_DataComplementOf_001() {901        String premise = "<?xml version=\"1.0\"?>\n"902                + "<rdf:RDF\n"903                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" xmlns:rdfs= \"http://www.w3.org/2000/01/rdf-schema#\" >\n"904                + '\n'905                + "<owl:Ontology/>\n"906                + '\n'907                + "<owl:DatatypeProperty rdf:about=\"p\" />\n"908                + '\n'909                + "<rdf:Description rdf:about=\"p\">\n"910                + "  <rdfs:range>\n"911                + "    <rdfs:Datatype>\n"912                + "      <owl:datatypeComplementOf rdf:resource=\"http://www.w3.org/2001/XMLSchema#positiveInteger\" /></rdfs:Datatype></rdfs:range></rdf:Description>\n"913                + '\n'914                + "<rdf:Description rdf:about=\"i\">\n"915                + "  <p rdf:datatype=\"http://www.w3.org/2001/XMLSchema#negativeInteger\">-1</p>\n"916                + "  <p rdf:datatype=\"http://www.w3.org/2001/XMLSchema#string\">A string</p></rdf:Description>\n"917                + '\n' + "</rdf:RDF>";918        String conclusion = "";919        String id = "Datatype_DataComplementOf_001";920        TestClasses tc = TestClasses.valueOf("CONSISTENCY");921        String d = "Demonstrates that the complement of a datatype contains literals from other datatypes.";922        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);923        r.setReasonerFactory(factory());924        r.run();925    }926    @Test927    public void testDifferent_types_in_Datatype_Restrictions_and_Complement() {928        String premise = "Prefix(:=<http://example.org/>)\n"929                + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n"930                + "Ontology(\n" + "  Declaration(NamedIndividual(:a))\n"931                + "  Declaration(DataProperty(:dp))\n"932                + "  Declaration(Class(:A))\n"933                + "  SubClassOf(:A DataAllValuesFrom(:dp \n"934                + "    DataOneOf(\"3\"^^xsd:integer \"4\"^^xsd:int))\n"935                + "  ) \n" + "  SubClassOf(:A DataAllValuesFrom(:dp \n"936                + "    DataOneOf(\"2\"^^xsd:short \"3\"^^xsd:integer))\n"937                + "  )\n" + "  ClassAssertion(:A :a)\n"938                + "  ClassAssertion(DataSomeValuesFrom(:dp\n"939                + "    DataComplementOf(DataOneOf(\"3\"^^xsd:integer))) :a\n"940                + "  )\n" + ')';941        String conclusion = "";942        String id = "Different_types_in_Datatype_Restrictions_and_Complement";943        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");944        String d = "The individual a must have dp fillers that are in the sets {3, 4} and {2, 3} (different types are used, but shorts and ints are integers), but at the same time 3 is not allowed as a dp filler for a, which causes the inconsistency.";945        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);946        r.setReasonerFactory(factory());947        r.run();948    }949    @Test950    public void testinconsistent_integer_filler() {951        String premise = "Prefix(:=<http://example.org/>)\n"952                + "Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\n"953                + "Ontology(\n"954                + "  Declaration(NamedIndividual(:a))\n"955                + "  Declaration(DataProperty(:hasAge))\n"956                + "  Declaration(Class(:Eighteen))\n"957                + "  SubClassOf(DataHasValue(:hasAge \"18\"^^xsd:integer) :Eighteen) \n"958                + "  ClassAssertion(DataHasValue(:hasAge \"18\"^^xsd:integer) :a) \n"959                + "  ClassAssertion(ObjectComplementOf(:Eighteen) :a)\n" + ')';960        String conclusion = "";961        String id = "inconsistent_integer_filler";962        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");963        String d = "The individual has an asserted hasAge filler of 18 as integer. At the same time it is an instance of the negation of the class Eighteen, which implies that all hasAge fillers for a are not 18.";964        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);965        r.setReasonerFactory(factory());966        r.run();967    }968    @Test969    public void testDisjointClasses_001() {970        String premise = "<?xml version=\"1.0\"?>\n"971                + "<rdf:RDF\n"972                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"973                + '\n'974                + "<owl:Ontology/>\n"975                + '\n'976                + "<owl:Class rdf:about=\"Boy\" />\n"977                + "<owl:Class rdf:about=\"Girl\" />\n"978                + '\n'979                + "<rdf:Description rdf:about=\"Boy\">\n"980                + "  <owl:disjointWith rdf:resource=\"Girl\" /></rdf:Description>\n"981                + '\n' + "<Boy rdf:about=\"Stewie\" />\n" + "</rdf:RDF>";982        String conclusion = "<?xml version=\"1.0\"?>\n"983                + "<rdf:RDF\n"984                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"985                + '\n'986                + "<owl:Ontology/>\n"987                + '\n'988                + "<owl:Class rdf:about=\"Girl\" />\n"989                + '\n'990                + "<rdf:Description rdf:about=\"Stewie\">\n"991                + "  <rdf:type>\n"992                + "    <owl:Class>\n"993                + "      <owl:complementOf rdf:resource=\"Girl\" /></owl:Class></rdf:type>\n"994                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";995        String id = "DisjointClasses_001";996        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");997        String d = "Demonstrates a binary disjoint classes axiom based on example in the Structural Specification and Functional-Style Syntax document.";998        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);999        r.setReasonerFactory(factory());1000        r.run();1001    }1002    @Test1003    public void testDisjointClasses_002() {1004        String premise = "<?xml version=\"1.0\"?>\n"1005                + "<rdf:RDF\n"1006                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"1007                + '\n'1008                + "<owl:Ontology/>\n"1009                + '\n'1010                + "<owl:Class rdf:about=\"Boy\" />\n"1011                + "<owl:Class rdf:about=\"Girl\" />\n"1012                + '\n'1013                + "<rdf:Description rdf:about=\"Boy\">\n"1014                + "  <owl:disjointWith rdf:resource=\"Girl\" /></rdf:Description>\n"1015                + '\n' + "<Boy rdf:about=\"Stewie\" />\n"1016                + "<Girl rdf:about=\"Stewie\" />\n" + '\n' + "</rdf:RDF>";1017        String conclusion = "";1018        String id = "DisjointClasses_002";1019        TestClasses tc = TestClasses.valueOf("INCONSISTENCY");1020        String d = "Demonstrates a binary disjoint classes axiom and class assertions causing an inconsistency based on example in the Structural Specification and Functional-Style Syntax document.";1021        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);1022        r.setReasonerFactory(factory());1023        r.run();1024    }1025    @Test1026    public void testDisjointClasses_003() {1027        String premise = "<?xml version=\"1.0\"?>\n"1028                + "<rdf:RDF\n"1029                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"1030                + '\n' + "<owl:Ontology/>\n" + '\n'1031                + "<owl:Class rdf:about=\"Boy\" />\n"1032                + "<owl:Class rdf:about=\"Girl\" />\n"1033                + "<owl:Class rdf:about=\"Dog\" />\n" + '\n'1034                + "<owl:AllDisjointClasses>\n"1035                + "  <owl:members rdf:parseType=\"Collection\">\n"1036                + "    <rdf:Description rdf:about=\"Boy\" />\n"1037                + "    <rdf:Description rdf:about=\"Girl\" />\n"1038                + "    <rdf:Description rdf:about=\"Dog\" />\n"1039                + "  </owl:members></owl:AllDisjointClasses>\n" + '\n'1040                + "<Boy rdf:about=\"Stewie\" />\n" + '\n' + "</rdf:RDF>";1041        String conclusion = "<?xml version=\"1.0\"?>\n"1042                + "<rdf:RDF\n"1043                + "  xml:base  = \"http://example.org/\" xmlns     = \"http://example.org/\" xmlns:owl = \"http://www.w3.org/2002/07/owl#\" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n"1044                + '\n'1045                + "<owl:Ontology/>\n"1046                + '\n'1047                + "<owl:Class rdf:about=\"Girl\" />\n"1048                + "<owl:Class rdf:about=\"Dog\" />\n"1049                + '\n'1050                + "<rdf:Description rdf:about=\"Stewie\">\n"1051                + "  <rdf:type>\n"1052                + "    <owl:Class>\n"1053                + "      <owl:complementOf rdf:resource=\"Girl\" /></owl:Class></rdf:type>\n"1054                + "</rdf:Description>\n"1055                + '\n'1056                + "<rdf:Description rdf:about=\"Stewie\">\n"1057                + "  <rdf:type>\n"1058                + "    <owl:Class>\n"1059                + "      <owl:complementOf rdf:resource=\"Dog\" /></owl:Class></rdf:type>\n"1060                + "</rdf:Description>\n" + '\n' + "</rdf:RDF>";1061        String id = "DisjointClasses_003";1062        TestClasses tc = TestClasses.valueOf("POSITIVE_IMPL");1063        String d = "A modification of test DisjointClasses-001 to demonstrate a ternary disjoint classes axiom.";1064        JUnitRunner r = new JUnitRunner(premise, conclusion, id, tc, d);1065        r.setReasonerFactory(factory());1066        r.run();1067    }1068}...
