Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/hp/hpl/jena/reasoner/rulesys/test/TestTrialOWLRules.java


1   /******************************************************************
2    * File:        TestTrialOWLRules.java
3    * Created by:  Dave Reynolds
4    * Created on:  09-Jul-2003
5    * 
6    * (c) Copyright 2003, 2004, 2005 Hewlett-Packard Development Company, LP
7    * [See end of file]
8    * $Id: TestTrialOWLRules.java,v 1.11 2005/04/11 11:27:04 der Exp $
9    *****************************************************************/
10  package com.hp.hpl.jena.reasoner.rulesys.test;
11  
12  import com.hp.hpl.jena.rdf.model.*;
13  import com.hp.hpl.jena.reasoner.*;
14  import com.hp.hpl.jena.reasoner.rulesys.*;
15  import com.hp.hpl.jena.util.FileManager;
16  import com.hp.hpl.jena.vocabulary.RDF;
17  import com.hp.hpl.jena.vocabulary.ReasonerVocabulary;
18  
19  import junit.framework.TestCase;
20  import junit.framework.TestSuite;
21  
22  import java.io.IOException;
23  import java.util.*;
24  
25  /**
26   * Test suite to test experimental versions of the OWL reasoner, not 
27   * included in the master regression test suite.
28   * 
29   * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
30   * @version $Revision: 1.11 $ on $Date: 2005/04/11 11:27:04 $
31   */
32  public class TestTrialOWLRules extends TestCase {
33  
34      /** The name of the manifest file to test */
35      protected String manifest;
36         
37      /** Flag to control whether tracing and logging enabled */
38      protected static boolean enableTracing = false;
39      
40      /** Flag to control whether to print performance stats as we go */
41      protected static boolean printStats = true;
42      
43      /** Configuration spec for the reasoner under test */
44      protected static Resource configuration;
45      
46      static {
47          Model m = ModelFactory.createDefaultModel();
48          configuration = m.createResource(GenericRuleReasonerFactory.URI);
49          configuration.addProperty(ReasonerVocabulary.PROPruleMode, "hybrid");
50          configuration.addProperty(ReasonerVocabulary.PROPruleSet, "etc/owl-fb-test.rules");
51          configuration.addProperty(ReasonerVocabulary.PROPenableOWLTranslation, true);
52      }
53      
54      /**
55       * Boilerplate for junit
56       */ 
57      public TestTrialOWLRules( String manifest ) {
58          super( manifest ); 
59          this.manifest = manifest;
60      }
61      
62      /**
63       * Boilerplate for junit.
64       * This is its own test suite
65       */
66      public static TestSuite suite() {
67          TestSuite suite = new TestSuite();
68          
69          // Basic property and equivalence tests
70          suite.addTest(new TestTrialOWLRules("SymmetricProperty/Manifest001.rdf"));
71          suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest001.rdf"));
72          suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest002.rdf"));
73          suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest003.rdf"));
74          suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest001.rdf"));
75          suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest002.rdf"));
76          suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest003.rdf"));
77          suite.addTest(new TestTrialOWLRules("rdf-charmod-uris/Manifest.rdf"));
78          suite.addTest(new TestTrialOWLRules("I5.5/Manifest001.rdf"));
79          suite.addTest(new TestTrialOWLRules("I5.5/Manifest002.rdf"));
80          suite.addTest(new TestTrialOWLRules("I5.5/Manifest003.rdf"));
81          suite.addTest(new TestTrialOWLRules("I5.5/Manifest004.rdf"));
82          suite.addTest(new TestTrialOWLRules("inverseOf/Manifest001.rdf"));
83          suite.addTest(new TestTrialOWLRules("TransitiveProperty/Manifest001.rdf"));
84          suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest001.rdf"));   // bx - long
85          suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest002.rdf"));    // bx - long but terminates
86          suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest003.rdf"));    // bx - long but terminates
87          suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest005.rdf"));  // bx - timeout
88          suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest001.rdf"));    // bx - long but terminates
89          suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest002.rdf"));    // bx - long but terminates
90          suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest003.rdf"));
91          suite.addTest(new TestTrialOWLRules("I4.6/Manifest001.rdf"));
92          suite.addTest(new TestTrialOWLRules("I4.6/Manifest002.rdf"));
93          suite.addTest(new TestTrialOWLRules("I5.1/Manifest001.rdf"));   // bx - v. long but terminates
94          suite.addTest(new TestTrialOWLRules("I5.24/Manifest001.rdf"));
95          suite.addTest(new TestTrialOWLRules("I5.24/Manifest002-mod.rdf"));
96          suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest006.rdf"));
97          suite.addTest(new TestTrialOWLRules("intersectionOf/Manifest001.rdf")); // bx - takes a long time
98  
99          // Disjointness tests
100         suite.addTest(new TestTrialOWLRules("differentFrom/Manifest001.rdf"));
101         suite.addTest(new TestTrialOWLRules("disjointWith/Manifest001.rdf"));
102         suite.addTest(new TestTrialOWLRules("disjointWith/Manifest002.rdf"));
103         suite.addTest(new TestTrialOWLRules("AllDifferent/Manifest001.rdf")); // bx gets lost
104 
105         // Restriction tests
106         suite.addTest(new TestTrialOWLRules("allValuesFrom/Manifest001.rdf"));    // bx - long but terminates
107         suite.addTest(new TestTrialOWLRules("allValuesFrom/Manifest002.rdf"));   // bx - slow
108         suite.addTest(new TestTrialOWLRules("someValuesFrom/Manifest002.rdf"));   // bx - slow
109         suite.addTest(new TestTrialOWLRules("maxCardinality/Manifest001.rdf"));
110         suite.addTest(new TestTrialOWLRules("maxCardinality/Manifest002.rdf"));
111         suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest005-mod.rdf"));
112         suite.addTest(new TestTrialOWLRules("I5.24/Manifest004-mod.rdf"));  // bx - long
113         suite.addTest(new TestTrialOWLRules("localtests/Manifest001.rdf"));      // bx - long but terminates
114         suite.addTest(new TestTrialOWLRules("localtests/Manifest002.rdf"));   // bx - long but terminates
115         suite.addTest(new TestTrialOWLRules("cardinality/Manifest001-mod.rdf")); // bx gets lost
116         suite.addTest(new TestTrialOWLRules("cardinality/Manifest002-mod.rdf")); // bx gets lost
117         suite.addTest(new TestTrialOWLRules("cardinality/Manifest003-mod.rdf")); // bx gets lost
118         suite.addTest(new TestTrialOWLRules("cardinality/Manifest004-mod.rdf")); // bx gets lost
119         suite.addTest(new TestTrialOWLRules("I5.24/Manifest003-mod.rdf"));
120         suite.addTest(new TestTrialOWLRules("cardinality/Manifest005-mod.rdf")); // bx gets lost
121         suite.addTest(new TestTrialOWLRules("cardinality/Manifest006-mod.rdf")); // bx gets lost
122         suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest004.rdf"));  // bx - timeout
123         
124         // Needs prototype creation rule
125 //        suite.addTest(new TestTrialOWLRules("someValuesFrom/Manifest001.rdf")); // bx needs creation rule
126         
127         // Duplications of tests included earlier
128 //        suite.addTest(new TestTrialOWLRules("differentFrom/Manifest002.rdf"));  // Duplication of AllDifferent#1
129 //        suite.addTest(new TestTrialOWLRules("distinctMembers/Manifest001.rdf"));  // Duplication of AllDifferent#1
130         
131         // Consistency tests - not yet implemented by tester
132 //      suite.addTest(new TestTrialOWLRules("I5.3/Manifest005.rdf"));
133 //      suite.addTest(new TestTrialOWLRules("I5.3/Manifest006.rdf"));
134 //      suite.addTest(new TestTrialOWLRules("I5.3/Manifest007.rdf"));
135 //      suite.addTest(new TestTrialOWLRules("I5.3/Manifest008.rdf"));
136 //      suite.addTest(new TestTrialOWLRules("I5.3/Manifest009.rdf"));
137 //      suite.addTest(new TestTrialOWLRules("Nothing/Manifest001.rdf"));
138 //      suite.addTest(new TestTrialOWLRules("miscellaneous/Manifest001.rdf"));
139 //      suite.addTest(new TestTrialOWLRules("miscellaneous/Manifest002.rdf"));
140         
141         // Non-feature tests
142 //      suite.addTest(new TestTrialOWLRules("I3.2/Manifest001.rdf"));
143 //      suite.addTest(new TestTrialOWLRules("I3.2/Manifest002.rdf"));
144 //      suite.addTest(new TestTrialOWLRules("I3.2/Manifest003.rdf"));
145 //      suite.addTest(new TestTrialOWLRules("I3.4/Manifest001.rdf"));
146 //      suite.addTest(new TestTrialOWLRules("I4.1/Manifest001.rdf"));
147 
148         // Outside (f)lite set - hasValue, oneOf, complementOf, unionOf
149         /*
150         suite.addTest(new TestTrialOWLRules("unionOf/Manifest001.rdf"));
151         suite.addTest(new TestTrialOWLRules("unionOf/Manifest002.rdf"));
152         suite.addTest(new TestTrialOWLRules("oneOf/Manifest001.rdf"));
153         suite.addTest(new TestTrialOWLRules("oneOf/Manifest002.rdf"));
154         suite.addTest(new TestTrialOWLRules("oneOf/Manifest003.rdf"));
155         suite.addTest(new TestTrialOWLRules("oneOf/Manifest004.rdf"));
156         suite.addTest(new TestTrialOWLRules("complementOf/Manifest001.rdf"));
157         suite.addTest(new TestTrialOWLRules("FunctionalProperty/Manifest004.rdf"));
158         suite.addTest(new TestTrialOWLRules("InverseFunctionalProperty/Manifest004.rdf"));
159         suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest007.rdf"));
160         suite.addTest(new TestTrialOWLRules("equivalentClass/Manifest006.rdf"));
161         suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest004.rdf"));
162         suite.addTest(new TestTrialOWLRules("equivalentProperty/Manifest005.rdf"));
163         suite.addTest(new TestTrialOWLRules("Nothing/Manifest002.rdf"));
164         */
165         
166         return suite;
167     }  
168    
169     /**
170      * The test runner
171      */
172     protected void runTest() throws IOException {
173         OWLWGTester tester = new OWLWGTester(GenericRuleReasonerFactory.theInstance(), this, configuration);
174 //        OWLWGTester tester = new OWLWGTester(OWLExptRuleReasonerFactory.theInstance(), this, null);
175         tester.runTests(manifest, enableTracing, printStats);
176     }
177 
178     /**
179      * Boiler plate code for loading up and exploring a specific test case
180      * for use during debugging.
181      */
182     public static void main(String[] args) {
183         Model premises = FileManager.get().loadModel("file:testing/wg/someValuesFrom/premises001.rdf");
184         Reasoner reasoner = GenericRuleReasonerFactory.theInstance().create(configuration);
185         InfModel conclusions = ModelFactory.createInfModel(reasoner, premises);
186         
187         System.out.println("Premises = ");
188         for (Iterator i = premises.listStatements(); i.hasNext(); ) {
189             System.out.println(" - " + i.next());
190         }
191         
192         Resource i = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#i");
193         Property p = conclusions.getProperty("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#p");
194         Resource c = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#c");
195         Resource r = conclusions.getResource("http://www.w3.org/2002/03owlt/someValuesFrom/premises001#r");
196         Resource v = (Resource)i.getRequiredProperty(p).getObject();
197         System.out.println("Value of i.p = " + v);
198         System.out.println("Types of v are: ");
199         for (Iterator it2 = conclusions.listStatements(v, RDF.type, (RDFNode)null); it2.hasNext(); ) {
200             System.out.println(" - " + it2.next());
201         }
202 //        System.out.println("Things of type r are: ");
203 //        for (Iterator it = conclusions.listStatements(null, RDF.type, r); it.hasNext(); ) {
204 //            System.out.println(" - " + it.next());
205 //        }
206 //        System.out.println("Types of i are: ");
207 //        for (Iterator it = conclusions.listStatements(i, RDF.type, (RDFNode)null); it.hasNext(); ) {
208 //            System.out.println(" - " + it.next());
209 //        }
210 //        System.out.println("Things of type r are: ");
211 //        for (Iterator it = conclusions.listStatements(null, RDF.type, r); it.hasNext(); ) {
212 //            System.out.println(" - " + it.next());
213 //        }
214         
215     }
216 }
217 
218 
219 /*
220     (c) Copyright 2003, 2004, 2005 Hewlett-Packard Development Company, LP
221     All rights reserved.
222 
223     Redistribution and use in source and binary forms, with or without
224     modification, are permitted provided that the following conditions
225     are met:
226 
227     1. Redistributions of source code must retain the above copyright
228        notice, this list of conditions and the following disclaimer.
229 
230     2. Redistributions in binary form must reproduce the above copyright
231        notice, this list of conditions and the following disclaimer in the
232        documentation and/or other materials provided with the distribution.
233 
234     3. The name of the author may not be used to endorse or promote products
235        derived from this software without specific prior written permission.
236 
237     THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
238     IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
239     OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
240     IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
241     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
242     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
243     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
244     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
245     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
246     THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
247 */