📄 testontmodel.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 21-Jun-2003
* Filename $RCSfile: TestOntModel.java,v $
* Revision $Revision: 1.24 $
* Release status $State: Exp $
*
* Last modified on $Date: 2007/01/09 17:06:22 $
* by $Author: ian_dickinson $
*
* (c) Copyright 2002, 2003, 2004, 2005, 2006, 2007 Hewlett-Packard Development Company, LP
* (see footer for full conditions)
*****************************************************************************/
// Package
///////////////
package com.hp.hpl.jena.ontology.impl.test;
// Imports
///////////////
import java.io.*;
import java.util.*;
import com.hp.hpl.jena.graph.Graph;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.ontology.impl.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.rdf.model.test.*;
import com.hp.hpl.jena.reasoner.test.TestUtil;
import com.hp.hpl.jena.shared.PrefixMapping;
import com.hp.hpl.jena.vocabulary.RDF;
/**
* <p>
* Unit tests on OntModel capabilities. Many of OntModel's methods are tested by the other
* abstractions' unit tests.
* </p>
*
* @author Ian Dickinson, HP Labs
* (<a href="mailto:Ian.Dickinson@hp.com" >email</a>)
* @version CVS $Id: TestOntModel.java,v 1.24 2007/01/09 17:06:22 ian_dickinson Exp $
*/
public class TestOntModel
extends ModelTestBase
{
// Constants
//////////////////////////////////
// Static variables
//////////////////////////////////
public static final String BASE = "http://www.hp.com/test";
public static final String NS = BASE + "#";
public static final String DOC = "<rdf:RDF" +
" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"" +
" xmlns:owl=\"http://www.w3.org/2002/07/owl#\"" +
" xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\">" +
" <owl:Class rdf:about=\"http://www.hp.com/test#D\">" +
" <rdfs:subClassOf>" +
" <owl:Class rdf:about=\"http://www.hp.com/test#B\"/>" +
" </rdfs:subClassOf>" +
" </owl:Class>" +
" <owl:Class rdf:about=\"http://www.hp.com/test#B\">" +
" <rdfs:subClassOf rdf:resource=\"http://www.hp.com/test#A\"" +
" rdf:type=\"http://www.w3.org/2002/07/owl#Class\"/>" +
" </owl:Class>" +
" <owl:Class rdf:about=\"http://www.hp.com/test#C\">" +
" <rdfs:subClassOf rdf:resource=\"http://www.hp.com/test#B\"/>" +
" </owl:Class>" +
" <owl:ObjectProperty rdf:about=\"http://www.hp.com/test#p\">" +
" <rdfs:domain rdf:resource=\"http://www.hp.com/test#A\"/>" +
" <rdfs:range rdf:resource=\"http://www.hp.com/test#B\"/>" +
" <rdfs:range rdf:resource=\"http://www.hp.com/test#C\"/>" +
" </owl:ObjectProperty>" +
"</rdf:RDF>";
// Instance variables
//////////////////////////////////
// Constructors
//////////////////////////////////
public TestOntModel( String name ) {
super( name );
}
// External signature methods
//////////////////////////////////
public void setUp() {
// ensure the ont doc manager is in a consistent state
OntDocumentManager.getInstance().reset( true );
}
/** Test writing the base model to an output stream */
public void testWriteOutputStream() {
OntModel m = ModelFactory.createOntologyModel();
// set up the model
OntClass A = m.createClass( NS + "A" );
OntClass B = m.createClass( NS + "B" );
OntClass C = m.createClass( NS + "C" );
OntClass D = m.createClass( NS + "D" );
A.addSubClass( B );
B.addSubClass( C );
B.addSubClass( D );
ObjectProperty p = m.createObjectProperty( NS + "p" );
p.addDomain( A );
p.addRange( B );
p.addRange( C );
// write to a stream
ByteArrayOutputStream out = new ByteArrayOutputStream();
m.write( out );
String s = out.toString();
ByteArrayInputStream in = new ByteArrayInputStream( s.getBytes() );
// read it back again
Model mIn1 = ModelFactory.createDefaultModel();
mIn1.read( in, BASE );
Model mIn2 = ModelFactory.createDefaultModel();
mIn2.read( new ByteArrayInputStream( DOC.getBytes() ), BASE );
// should be the same
assertTrue( "InputStream write/read cycle failed (1)", mIn1.isIsomorphicWith( m.getBaseModel() ) );
assertTrue( "InputStream write/read cycle failed (2)", mIn2.isIsomorphicWith( m.getBaseModel() ) );
}
public void testGetBaseModelPrefixes()
{
OntModel om = ModelFactory.createOntologyModel();
om.setNsPrefix( "bill", "http://bill.and.ben/flowerpot#" );
om.setNsPrefix( "grue", "ftp://grue.and.bleen/2000#" );
assertEquals( om.getNsPrefixMap(), om.getBaseModel().getNsPrefixMap() );
}
/**
The prefixes of an OntModel should be the prefixes of its base model,
plus any non-clashing ones from the document manager's prefix mapping.
(which this test assume includes rdfs and daml).
*/
public void testPrefixDefaulting()
{
Model base = ModelFactory.createDefaultModel();
base.setNsPrefix( "hedgehog", "http://hedgehog.hog/" );
base.setNsPrefix( "daml", "not:the-DAML-URI/" );
base.setNsPrefix( "mine", RDF.getURI() );
OntModel m = new OntModelImpl( OntModelSpec.RDFS_MEM, base );
PrefixMapping given = m.getDocumentManager().getDeclaredPrefixMapping();
assertEquals( "http://hedgehog.hog/", m.getNsPrefixURI( "hedgehog" ) );
assertEquals( "not:the-DAML-URI/", m.getNsPrefixURI( "daml" ) );
assertEquals( RDF.getURI(), m.getNsPrefixURI( "mine" ) );
assertEquals( null, m.getNsPrefixURI( "rdf" ) );
assertEquals( given.getNsPrefixURI( "rdfs" ), m.getNsPrefixURI( "rdfs" ) );
}
public void testWritesPrefixes()
{
OntModel om = ModelFactory.createOntologyModel();
om.setNsPrefix( "spoo", "http://spoo.spoo.com/spoo#" );
om.add( statement( om, "ping http://spoo.spoo.com/spoo#pang pilly" ) );
om.add( statement( om, "gg http://www.daml.org/2001/03/daml+oil#hh ii" ) );
StringWriter sw = new StringWriter();
om.write( sw );
String s = sw.getBuffer().toString();
assertTrue( s.indexOf( "xmlns:spoo=\"http://spoo.spoo.com/spoo#\"" ) > 0 );
assertTrue( s.indexOf( "xmlns:daml=\"http://www.daml.org/2001/03/daml+oil#\"" ) > 0 );
}
/** Test writing the base model to an output stream */
public void testWriteWriter() {
OntModel m = ModelFactory.createOntologyModel();
// set up the model
OntClass A = m.createClass( NS + "A" );
OntClass B = m.createClass( NS + "B" );
OntClass C = m.createClass( NS + "C" );
OntClass D = m.createClass( NS + "D" );
A.addSubClass( B );
B.addSubClass( C );
B.addSubClass( D );
ObjectProperty p = m.createObjectProperty( NS + "p" );
p.addDomain( A );
p.addRange( B );
p.addRange( C );
// write to a stream
StringWriter out = new StringWriter();
m.write( out );
String s = out.toString();
// read it back again
Model mIn1 = ModelFactory.createDefaultModel();
mIn1.read( new StringReader( s ), BASE );
Model mIn2 = ModelFactory.createDefaultModel();
mIn2.read( new StringReader( DOC ), BASE );
// should be the same
assertTrue( "Writer write/read cycle failed (1)", mIn1.isIsomorphicWith( m.getBaseModel() ) );
assertTrue( "Writer write/read cycle failed (2)", mIn2.isIsomorphicWith( m.getBaseModel() ) );
}
public void testGetOntology() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createOntology( NS + "s" );
assertEquals( "Result of get s", s, m.getOntology( NS + "s" ) );
assertNull( "result of get q", m.getOntology( NS+"q") );
assertNull( "result of get r", m.getOntology( NS+"r"));
}
public void testGetIndividual() {
OntModel m = ModelFactory.createOntologyModel();
OntClass c = m.createClass( NS +"c" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createIndividual( NS + "s", c );
assertEquals( "Result of get s", s, m.getIndividual( NS + "s" ) );
assertNull( "result of get q", m.getIndividual( NS+"q") );
}
public void testGetOntProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createOntProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getOntProperty( NS + "s" ) );
assertNull( "result of get q", m.getOntProperty( NS+"q") );
assertNull( "result of get r", m.getOntProperty( NS+"r"));
}
public void testGetObjectProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createObjectProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getObjectProperty( NS + "s" ) );
assertNull( "result of get q", m.getObjectProperty( NS+"q") );
assertNull( "result of get r", m.getObjectProperty( NS+"r"));
}
public void testGetTransitiveProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createTransitiveProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getTransitiveProperty( NS + "s" ) );
assertNull( "result of get q", m.getTransitiveProperty( NS+"q") );
assertNull( "result of get r", m.getTransitiveProperty( NS+"r"));
}
public void testGetSymmetricProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createSymmetricProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getSymmetricProperty( NS + "s" ) );
assertNull( "result of get q", m.getSymmetricProperty( NS+"q") );
assertNull( "result of get r", m.getSymmetricProperty( NS+"r"));
}
public void testGetInverseFunctionalProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createInverseFunctionalProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getInverseFunctionalProperty( NS + "s" ) );
assertNull( "result of get q", m.getInverseFunctionalProperty( NS+"q") );
assertNull( "result of get r", m.getInverseFunctionalProperty( NS+"r"));
}
public void testGetDatatypeProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createDatatypeProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getDatatypeProperty( NS + "s" ) );
assertNull( "result of get q", m.getDatatypeProperty( NS+"q") );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -