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}...