📄 testdigreasoner.java
字号:
/*****************************************************************************
* Source code information
* -----------------------
* Original author Ian Dickinson, HP Labs Bristol
* Author email ian.dickinson@hp.com
* Package Jena 2
* Web http://sourceforge.net/projects/jena/
* Created 11-Sep-2003
* Filename $RCSfile: TestDigReasoner.java,v $
* Revision $Revision: 1.27 $
* Release status $State: Exp $
*
* Last modified on $Date: 2007/01/02 11:52:53 $
* by $Author: andy_seaborne $
*
* (c) Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
* [See end of file]
*****************************************************************************/
// Package
///////////////
package com.hp.hpl.jena.reasoner.dig.test;
// Imports
///////////////
import org.apache.commons.logging.*;
import org.w3c.dom.*;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.reasoner.ReasonerRegistry;
import com.hp.hpl.jena.reasoner.dig.*;
import com.hp.hpl.jena.reasoner.test.TestUtil;
import com.hp.hpl.jena.vocabulary.*;
import com.hp.hpl.jena.vocabulary.OWL;
import com.hp.hpl.jena.vocabulary.RDFS;
import junit.framework.*;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import javax.xml.parsers.DocumentBuilder;
/**
* <p>
* Unit tests for DIG reasoners
* </p>
*
* @author Ian Dickinson, HP Labs (<a href="mailto:Ian.Dickinson@hp.com">email</a>)
* @version Release @release@ ($Id: TestDigReasoner.java,v 1.27 2007/01/02 11:52:53 andy_seaborne Exp $)
*/
public class TestDigReasoner
extends TestCase
{
// Constants
//////////////////////////////////
// Static variables
//////////////////////////////////
private static Log log = LogFactory.getLog( TestDigReasoner.class );
// Instance variables
//////////////////////////////////
protected Model m_base;
// Constructors
//////////////////////////////////
public TestDigReasoner( String name ) {
super( name );
}
// External signature methods
//////////////////////////////////
public static TestSuite suite() {
TestSuite s = new TestSuite( "TestDigReasoner" );
buildConceptLangSuite( "testing/ontology/dig/owl/cl", OntModelSpec.OWL_MEM, s );
buildBasicQuerySuite( "testing/ontology/dig/owl/basicq", OntModelSpec.OWL_MEM, s );
// add the standard tests from this class
s.addTestSuite( TestDigReasoner.class );
return s;
}
public void setUp() {
// ensure the ont doc manager is in a consistent state
OntDocumentManager.getInstance().reset( true );
}
public void testAxioms() {
DIGReasoner r = (DIGReasoner) ReasonerRegistry.getDIGReasoner();
DIGReasoner ro = (DIGReasoner) ReasonerRegistry.getDIGReasoner( OWL.NAMESPACE, null );
DIGReasoner rd = (DIGReasoner) ReasonerRegistry.getDIGReasoner( DAML_OIL.NAMESPACE_DAML, null );
DIGReasoner roA = (DIGReasoner) ReasonerRegistry.getDIGReasoner( OWL.NAMESPACE, true, null );
DIGReasoner rdA = (DIGReasoner) ReasonerRegistry.getDIGReasoner( DAML_OIL.NAMESPACE_DAML, true, null );
axiomTestAux( r, OntModelSpec.OWL_MEM, false, false );
//axiomTestAux( r, OntModelSpec.DAML_MEM, false, false );
axiomTestAux( ro, OntModelSpec.OWL_MEM, false, false );
axiomTestAux( rd, OntModelSpec.DAML_MEM, false, false );
axiomTestAux( roA, OntModelSpec.OWL_MEM, true, false );
axiomTestAux( rdA, OntModelSpec.DAML_MEM, false, true );
}
private void axiomTestAux( DIGReasoner dr, OntModelSpec baseSpec, boolean owlResult, boolean damlResult ) {
OntModelSpec spec = new OntModelSpec( baseSpec );
spec.setReasoner( dr );
OntModel m = ModelFactory.createOntologyModel( spec, null );
assertEquals( "Result for owl:ObjectProperty", owlResult, m.contains( OWL.ObjectProperty, RDF.type, RDFS.Class ));
assertEquals( "Result for daml:ObjectProperty", damlResult, m.contains( DAML_OIL.ObjectProperty, RDF.type, RDFS.Class ));
}
public void testQueryAllConcepts() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
TestUtil.assertIteratorValues( this, m.listClasses(),
new Resource[] {
m.getResource( NS + "A" ), m.getResource( NS + "B" ),
m.getResource( NS + "C"), m.getResource( NS + "D"),
m.getResource( NS + "E"), m.getResource( NS + "BB"),
m.getResource( NS + "F0"), m.getResource( NS + "F1"), m.getResource( NS + "F2"),
}, 2 );
}
public void testQuerySubsumes1() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
assertTrue( "A should be a sub-class of B", A.hasSuperClass( B ) );
}
public void testQuerySubsumes2() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass C = m.getOntClass( NS + "C" );
OntClass D = m.getOntClass( NS + "D" );
assertTrue( "D should be a sub-class of C", D.hasSuperClass( C ) );
}
public void testQuerySubsumes3() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass C = m.getOntClass( NS + "C" );
assertFalse( "A should not be a super-class of C", C.hasSuperClass( A ) );
assertFalse( "C should not be a super-class of A", A.hasSuperClass( C ) );
}
public void testAncestors0() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
OntClass BB = m.getOntClass( NS + "BB" );
TestUtil.assertIteratorValues( this, A.listSuperClasses(),
new Resource[] {B,BB, OWL.Thing} );
}
public void testAncestors1() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
OntClass BB = m.getOntClass( NS + "BB" );
assertTrue( A.hasSuperClass( B ) );
assertTrue( A.hasSuperClass( BB ) );
assertTrue( B.hasSuperClass( BB ) );
assertTrue( BB.hasSubClass( B ) );
assertTrue( BB.hasSubClass( A ) );
assertTrue( B.hasSubClass( A ) );
assertFalse( B.hasSuperClass( A ) );
assertFalse( A.hasSubClass( BB ) );
assertTrue( A.hasSuperClass( OWL.Thing ));
assertFalse( A.hasSubClass( OWL.Thing ));
}
public void testDescendants() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
OntClass BB = m.getOntClass( NS + "BB" );
TestUtil.assertIteratorValues( this, BB.listSubClasses(),
new Resource[] {B,A, OWL.Nothing} );
}
public void testAllClassHierarchy() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
OntClass BB = m.getOntClass( NS + "BB" );
OntClass C = m.getOntClass( NS + "C" );
OntClass D = m.getOntClass( NS + "D" );
OntClass E = m.getOntClass( NS + "E" );
OntClass F0 = m.getOntClass( NS + "F0" );
OntClass F1 = m.getOntClass( NS + "F1" );
OntClass F2 = m.getOntClass( NS + "F2" );
TestUtil.assertIteratorValues( this, m.listStatements( null, RDFS.subClassOf, (RDFNode) null ),
new Statement[] {
m.createStatement( A, RDFS.subClassOf, A ),
m.createStatement( A, RDFS.subClassOf, B ),
m.createStatement( A, RDFS.subClassOf, BB ),
m.createStatement( B, RDFS.subClassOf, B ),
m.createStatement( B, RDFS.subClassOf, BB ),
m.createStatement( BB, RDFS.subClassOf, BB ),
m.createStatement( C, RDFS.subClassOf, C ),
m.createStatement( D, RDFS.subClassOf, D ),
m.createStatement( D, RDFS.subClassOf, C ),
m.createStatement( E, RDFS.subClassOf, C ),
m.createStatement( E, RDFS.subClassOf, E ),
m.createStatement( F0, RDFS.subClassOf, F0 ),
m.createStatement( F1, RDFS.subClassOf, F1 ),
m.createStatement( F2, RDFS.subClassOf, F2 ),
m.createStatement( A, RDFS.subClassOf, OWL.Thing ),
m.createStatement( B, RDFS.subClassOf, OWL.Thing ),
m.createStatement( BB, RDFS.subClassOf, OWL.Thing ),
m.createStatement( C, RDFS.subClassOf, OWL.Thing ),
m.createStatement( D, RDFS.subClassOf, OWL.Thing ),
m.createStatement( E, RDFS.subClassOf, OWL.Thing ),
m.createStatement( F0, RDFS.subClassOf, OWL.Thing ),
m.createStatement( F1, RDFS.subClassOf, OWL.Thing ),
m.createStatement( F2, RDFS.subClassOf, OWL.Thing ),
}, 4 );
}
public void testQueryDisjoint1() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass C = m.getOntClass( NS + "C" );
assertTrue( "A should be disjoint with C", A.isDisjointWith( C ) );
assertTrue( "C should be disjoint with A", C.isDisjointWith( A ) );
}
public void testQueryDisjoint2() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass F0 = m.getOntClass( NS + "F0" );
OntClass F1 = m.getOntClass( NS + "F1" );
assertTrue( "F0 should be disjoint with F1", F0.isDisjointWith( F1 ) );
assertTrue( "F1 should be disjoint with F0", F1.isDisjointWith( F0 ) );
}
public void testParents0() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
OntClass A = m.getOntClass( NS + "A" );
OntClass B = m.getOntClass( NS + "B" );
// note - direct super class
TestUtil.assertIteratorValues( this, A.listSuperClasses( true ),
new Resource[] {B} );
}
public void testParents1() {
String NS = "http://example.org/foo#";
DIGReasoner r = (DIGReasoner) ReasonerRegistry.theRegistry().create( DIGReasonerFactory.URI, null );
OntModelSpec spec = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
spec.setReasoner( r );
OntModel m = ModelFactory.createOntologyModel( spec, null );
m.read( "file:testing/ontology/dig/owl/test1.xml" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -