/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jena.reasoner.rulesys.test; import junit.framework.*; import java.io.IOException; import org.apache.jena.rdf.model.* ; import org.apache.jena.reasoner.* ; import org.apache.jena.reasoner.rulesys.* ; import org.apache.jena.util.FileManager ; import org.apache.jena.vocabulary.RDF ; import org.apache.jena.vocabulary.ReasonerVocabulary ; /** * Test suite to test experimental versions of the OWL reasoner, not * included in the master regression test suite. */ public class TestTrialOWLRules extends TestCase { /** The name of the manifest file to test */ protected String manifest; /** Flag to control whether tracing and logging enabled */ protected static boolean enableTracing = false; /** Flag to control whether to print performance stats as we go */ protected static boolean printStats = true; /** Configuration spec for the reasoner under test */ protected static Resource configuration; static { Model m = ModelFactory.createDefaultModel(); configuration = m.createResource(GenericRuleReasonerFactory.URI); configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid"); configuration.addProperty(ReasonerVocabulary.PROPruleSet, "etc/owl-fb-test.rules"); configuration.addProperty(ReasonerVocabulary.PROPenableOWLTranslation, "true" ); } /** * Boilerplate for junit */ public TestTrialOWLRules( String manifest ) { super( manifest ); this.manifest = manifest; } /** * Boilerplate for junit. * This is its own test suite */ public static TestSuite suite() { TestSuite suite = new TestSuite(); // Basic property and equivalence tests suite.addTest(new TestTrialOWLRules("SymmetricProperty/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest003.rdf")); suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest003.rdf")); suite.addTest(new TestTrialOWLRules("rdf-charmod-uris/Manifest.rdf")); suite.addTest(new TestTrialOWLRules("I5.5/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("I5.5/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("I5.5/Manifest003.rdf")); suite.addTest(new TestTrialOWLRules("I5.5/Manifest004.rdf")); suite.addTest(new TestTrialOWLRules("inverseOf/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("TransitiveProperty/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest001.rdf")); // bx - long suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest002.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest003.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest005.rdf")); // bx - timeout suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest001.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest002.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest003.rdf")); suite.addTest(new TestTrialOWLRules("I4.6/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("I4.6/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("I5.1/Manifest001.rdf")); // bx - v. long but terminates suite.addTest(new TestTrialOWLRules("I5.24/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("I5.24/Manifest002-mod.rdf")); suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest006.rdf")); suite.addTest(new TestTrialOWLRules("intersectionOf/Manifest001.rdf")); // bx - takes a long time // Disjointness tests suite.addTest(new TestTrialOWLRules("differentFrom/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("disjointWith/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("disjointWith/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("AllDifferent/Manifest001.rdf")); // bx gets lost // Restriction tests suite.addTest(new TestTrialOWLRules("allValuesFrom/Manifest001.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("allValuesFrom/Manifest002.rdf")); // bx - slow suite.addTest(new TestTrialOWLRules("someValuesFrom/Manifest002.rdf")); // bx - slow suite.addTest(new TestTrialOWLRules("maxCardinality/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("maxCardinality/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest005-mod.rdf")); suite.addTest(new TestTrialOWLRules("I5.24/Manifest004-mod.rdf")); // bx - long suite.addTest(new TestTrialOWLRules("localtests/Manifest001.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("localtests/Manifest002.rdf")); // bx - long but terminates suite.addTest(new TestTrialOWLRules("cardinality/Manifest001-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("cardinality/Manifest002-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("cardinality/Manifest003-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("cardinality/Manifest004-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("I5.24/Manifest003-mod.rdf")); suite.addTest(new TestTrialOWLRules("cardinality/Manifest005-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("cardinality/Manifest006-mod.rdf")); // bx gets lost suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest004.rdf")); // bx - timeout // Needs prototype creation rule // suite.addTest(new TestTrialOWLRules("someValuesFrom/Manifest001.rdf")); // bx needs creation rule // Duplications of tests included earlier // suite.addTest(new TestTrialOWLRules("differentFrom/Manifest002.rdf")); // Duplication of AllDifferent#1 // suite.addTest(new TestTrialOWLRules("distinctMembers/Manifest001.rdf")); // Duplication of AllDifferent#1 // Consistency tests - not yet implemented by tester // suite.addTest(new TestTrialOWLRules("I5.3/Manifest005.rdf")); // suite.addTest(new TestTrialOWLRules("I5.3/Manifest006.rdf")); // suite.addTest(new TestTrialOWLRules("I5.3/Manifest007.rdf")); // suite.addTest(new TestTrialOWLRules("I5.3/Manifest008.rdf")); // suite.addTest(new TestTrialOWLRules("I5.3/Manifest009.rdf")); // suite.addTest(new TestTrialOWLRules("Nothing/Manifest001.rdf")); // suite.addTest(new TestTrialOWLRules("miscellaneous/Manifest001.rdf")); // suite.addTest(new TestTrialOWLRules("miscellaneous/Manifest002.rdf")); // Non-feature tests // suite.addTest(new TestTrialOWLRules("I3.2/Manifest001.rdf")); // suite.addTest(new TestTrialOWLRules("I3.2/Manifest002.rdf")); // suite.addTest(new TestTrialOWLRules("I3.2/Manifest003.rdf")); // suite.addTest(new TestTrialOWLRules("I3.4/Manifest001.rdf")); // suite.addTest(new TestTrialOWLRules("I4.1/Manifest001.rdf")); // Outside (f)lite set - hasValue, oneOf, complementOf, unionOf /* suite.addTest(new TestTrialOWLRules("unionOf/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("unionOf/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("oneOf/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("oneOf/Manifest002.rdf")); suite.addTest(new TestTrialOWLRules("oneOf/Manifest003.rdf")); suite.addTest(new TestTrialOWLRules("oneOf/Manifest004.rdf")); suite.addTest(new TestTrialOWLRules("complementOf/Manifest001.rdf")); suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest004.rdf")); suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest004.rdf")); suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest007.rdf")); suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest006.rdf")); suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest004.rdf")); suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest005.rdf")); suite.addTest(new TestTrialOWLRules("Nothing/Manifest002.rdf")); */ return suite; } /** * The test runner */ @Override protected void runTest() throws IOException { OWLWGTester tester = new OWLWGTester(GenericRuleReasonerFactory.theInstance(), this, configuration); // OWLWGTester tester = new OWLWGTester(OWLExptRuleReasonerFactory.theInstance(), this, null); tester.runTests(manifest, enableTracing, printStats); } /** * Boiler plate code for loading up and exploring a specific test case * for use during debugging. */ public static void main(String[] args) { Model premises = FileManager.get().loadModel("file:testing/wg/someValuesFrom/premises001.rdf"); Reasoner reasoner = GenericRuleReasonerFactory.theInstance().create(configuration); InfModel conclusions = ModelFactory.createInfModel(reasoner, premises); System.out.println("Premises = "); for (StmtIterator i = premises.listStatements(); i.hasNext(); ) { System.out.println(" - " + i.next()); } Resource i = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#i"); Property p = conclusions.getProperty("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#p"); Resource c = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#c"); Resource r = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#r"); Resource v = (Resource)i.getRequiredProperty(p).getObject(); System.out.println("Value of i.p = " + v); System.out.println("Types of v are: "); for (StmtIterator it2 = conclusions.listStatements(v, RDF.type, (RDFNode)null); it2.hasNext(); ) { System.out.println(" - " + it2.next()); } // System.out.println("Things of type r are: "); // for (Iterator it = conclusions.listStatements(null, RDF.type, r); it.hasNext(); ) { // System.out.println(" - " + it.next()); // } // System.out.println("Types of i are: "); // for (Iterator it = conclusions.listStatements(i, RDF.type, (RDFNode)null); it.hasNext(); ) { // System.out.println(" - " + it.next()); // } // System.out.println("Things of type r are: "); // for (Iterator it = conclusions.listStatements(null, RDF.type, r); it.hasNext(); ) { // System.out.println(" - " + it.next()); // } } }