blob: a485891ee75fa92362b2039a059ab5fe314fb5f9 [file] [log] [blame]
/*
* 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 java.util.*;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.jena.rdf.model.* ;
import org.apache.jena.reasoner.* ;
import org.apache.jena.util.FileManager ;
/**
* Test the preliminary OWL validation rules.
*/
public class TestOWLConsistency extends TestCase {
/** The tbox/ontology file to test against sample data */
public static final String testTbox = "file:testing/reasoners/owl/tbox.owl";
/** A cached copy of the bound reasoner */
public static Reasoner reasonerCache;
/**
* Boilerplate for junit
*/
public TestOWLConsistency( String name ) {
super( name );
}
/**
* Boilerplate for junit.
* This is its own test suite
*/
public static TestSuite suite() {
return new TestSuite( TestOWLConsistency.class );
// TestSuite suite = new TestSuite();
// suite.addTest(new TestOWLConsistency( "testInconsistent5" ));
// return suite;
}
/**
* Create, or retrieve from cache, an OWL reasoner already bound
* to the test tbox.
*/
public Reasoner makeReasoner() {
if (reasonerCache == null) {
Model tbox = FileManager.getInternal().loadModelInternal(testTbox);
reasonerCache = ReasonerRegistry.getOWLReasoner().bindSchema(tbox.getGraph());
}
return reasonerCache;
}
/**
* Should be consistent.
*/
public void testConsistent() {
assertTrue(doTestOn("file:testing/reasoners/owl/consistentData.rdf"));
}
/**
* Should find problem due to overlap of disjoint classes.
*/
public void testInconsistent1() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent1.rdf"));
}
/**
* Should find problem due to type violations
*/
public void testInconsistent2() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent2.rdf"));
}
/**
* Should find problem due to count violations
*/
public void testInconsistent3() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent3.rdf"));
}
/**
* Should find distinct values for a functional property
*/
public void testInconsistent4() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent4.rdf"));
}
/**
* Should find type clash due to allValuesFrom rdfs:Literal
*/
public void testInconsistent5() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent5.rdf"));
}
/**
* Should find distinct literal values for a functional property
* via an indirect sameAs
*/
public void testInconsistent7() {
assertTrue( ! doTestOn("file:testing/reasoners/owl/inconsistent7.rdf"));
}
/**
* Run a single consistency test on the given data file.
*/
private boolean doTestOn(String dataFile) {
// System.out.println("Test: " + dataFile);
Model data = FileManager.getInternal().loadModelInternal(dataFile);
InfModel infmodel = ModelFactory.createInfModel(makeReasoner(), data);
ValidityReport reportList = infmodel.validate();
/* Debug only
if (reportList.isValid()) {
System.out.println("No reported problems");
} else {
for (Iterator i = reportList.getReports(); i.hasNext(); ) {
ValidityReport.Report report = (ValidityReport.Report)i.next();
System.out.println("- " + report);
}
}
*/
return reportList.isValid();
}
}