001: /******************************************************************
002: * File: TestCurrentRDFWG.java
003: * Created by: Dave Reynolds
004: * Created on: 25-Jul-2003
005: *
006: * (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
007: * [See end of file]
008: * $Id: TestCurrentRDFWG.java,v 1.12 2008/01/02 12:08:31 andy_seaborne Exp $
009: *****************************************************************/package com.hp.hpl.jena.reasoner.test;
010:
011: import com.hp.hpl.jena.reasoner.rulesys.RDFSRuleReasonerFactory;
012: import com.hp.hpl.jena.reasoner.*;
013: import com.hp.hpl.jena.rdf.model.*;
014: import com.hp.hpl.jena.shared.impl.JenaParameters;
015: import com.hp.hpl.jena.vocabulary.*;
016:
017: import java.io.IOException;
018: import java.util.Iterator;
019:
020: import junit.framework.TestCase;
021: import junit.framework.TestSuite;
022:
023: import org.apache.commons.logging.Log;
024: import org.apache.commons.logging.LogFactory;
025:
026: /**
027: * Test the default RDFS reasoner against the current set of working group tests
028: *
029: * @author <a href="mailto:der@hplb.hpl.hp.com">Dave Reynolds</a>
030: * @version $Revision: 1.12 $ on $Date: 2008/01/02 12:08:31 $
031: */
032: public class TestCurrentRDFWG extends ReasonerTestBase {
033:
034: /** Location of the test file directory */
035: public static final String TEST_DIR = "testing/wg20031010/";
036: // public static final String TEST_DIR = "testing/wg/";
037:
038: /** The base URI for the results file */
039: public static String BASE_RESULTS_URI = "http://jena.sourceforge.net/data/rdf-results.rdf";
040:
041: /** The model describing the results of the run */
042: Model testResults;
043:
044: /** The resource which acts as a description for the Jena2 instance being tested */
045: Resource jena2;
046:
047: protected static Log logger = LogFactory
048: .getLog(TestCurrentRDFWG.class);
049:
050: /**
051: * Boilerplate for junit
052: */
053: public TestCurrentRDFWG(String name) {
054: super (name);
055: }
056:
057: /**
058: * Initialize the result model.
059: */
060: public void initResults() {
061: testResults = ModelFactory.createDefaultModel();
062: jena2 = testResults.createResource(BASE_RESULTS_URI + "#jena2");
063: jena2
064: .addProperty(
065: RDFS.comment,
066: testResults
067: .createLiteral(
068: "<a xmlns=\"http://www.w3.org/1999/xhtml\" href=\"http://jena.sourceforce.net/\">Jena2</a> includes a rule-based inference engine for RDF processing, "
069: + "supporting both forward and backward chaining rules. Its OWL rule set is designed to provide sound "
070: + "but not complete instance resasoning for that fragment of OWL/Full limited to the OWL/lite vocabulary. In"
071: + "particular it does not support unionOf/complementOf.",
072: true));
073: jena2.addProperty(RDFS.label, "Jena2");
074: testResults.setNsPrefix("results", OWLResults.NS);
075: }
076:
077: /**
078: * Boilerplate for junit.
079: * This is its own test suite
080: */
081: public static TestSuite suite() {
082: TestSuite suite = new TestSuite();
083: try {
084: Resource config = newResource().addProperty(
085: ReasonerVocabulary.PROPsetRDFSLevel, "full");
086: constructRDFWGtests(suite, RDFSRuleReasonerFactory
087: .theInstance(), config);
088:
089: } catch (IOException e) {
090: // failed to even built the test harness
091: logger.error("Failed to construct RDF WG test harness", e);
092: }
093: return suite;
094: }
095:
096: /**
097: * Build the working group tests for the given reasoner.
098: */
099: private static void constructRDFWGtests(TestSuite suite,
100: ReasonerFactory rf, Resource config) throws IOException {
101: JenaParameters.enableWhitespaceCheckingOfTypedLiterals = true;
102: WGReasonerTester tester = new WGReasonerTester("Manifest.rdf",
103: TEST_DIR);
104: for (Iterator i = tester.listTests().iterator(); i.hasNext();) {
105: String test = (String) i.next();
106: suite.addTest(new TestReasonerWG(tester, test, rf, config));
107: }
108: }
109:
110: /**
111: * Inner class defining a test framework for invoking a single
112: * RDFCore working group test.
113: */
114: static class TestReasonerWG extends TestCase {
115:
116: /** The tester which already has the test manifest loaded */
117: WGReasonerTester tester;
118:
119: /** The name of the specific test to run */
120: String test;
121:
122: /** The factory for the reasoner type under test */
123: ReasonerFactory reasonerFactory;
124:
125: /** An optional configuration model */
126: Resource config;
127:
128: /** Constructor */
129: TestReasonerWG(WGReasonerTester tester, String test,
130: ReasonerFactory reasonerFactory, Resource config) {
131: super (test);
132: this .tester = tester;
133: this .test = test;
134: this .reasonerFactory = reasonerFactory;
135: this .config = config;
136: }
137:
138: /**
139: * The test runner
140: */
141: public void runTest() throws IOException {
142: boolean success = tester.runTest(test, reasonerFactory,
143: this , config);
144: // Resource resultType = null;
145: // if (test.hasProperty(RDF.type, OWLTest.NegativeEntailmentTest)
146: // || test.hasProperty(RDF.type, OWLTest.ConsistencyTest)) {
147: // resultType = success ? OWLResults.PassingRun : OWLResults.FailingRun;
148: // } else {
149: // resultType = success ? OWLResults.PassingRun : OWLResults.IncompleteRun;
150: // }
151: // // log to the rdf result format
152: // Resource result = testResults.createResource()
153: // .addProperty(RDF.type, OWLResults.TestRun)
154: // .addProperty(RDF.type, resultType)
155: // .addProperty(OWLResults.test, test)
156: // .addProperty(OWLResults.system, jena2);
157:
158: }
159:
160: }
161:
162: }
163:
164: /*
165: (c) Copyright 2003, 2004, 2005, 2006, 2007, 2008 Hewlett-Packard Development Company, LP
166: All rights reserved.
167:
168: Redistribution and use in source and binary forms, with or without
169: modification, are permitted provided that the following conditions
170: are met:
171:
172: 1. Redistributions of source code must retain the above copyright
173: notice, this list of conditions and the following disclaimer.
174:
175: 2. Redistributions in binary form must reproduce the above copyright
176: notice, this list of conditions and the following disclaimer in the
177: documentation and/or other materials provided with the distribution.
178:
179: 3. The name of the author may not be used to endorse or promote products
180: derived from this software without specific prior written permission.
181:
182: THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
183: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
184: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
185: IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
186: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
187: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
188: DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
189: THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
190: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
191: THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
192: */
|