blob: 609acc4c024d9d3d8439f5ee7581fd74ff48567c [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
///////////////
package org.apache.jena.ontology.impl;
// Imports
///////////////
import java.io.*;
import java.util.*;
import org.apache.jena.graph.Graph ;
import org.apache.jena.ontology.* ;
import org.apache.jena.ontology.impl.OWLProfile.SupportsCheck ;
import org.apache.jena.rdf.model.* ;
import org.apache.jena.rdf.model.test.ModelTestBase ;
import org.apache.jena.reasoner.rulesys.test.TestBugs ;
import org.apache.jena.reasoner.test.TestUtil ;
import org.apache.jena.vocabulary.* ;
/**
* <p>
* Unit tests on OntModel capabilities. Many of OntModel's methods are tested by the other
* abstractions' unit tests.
* </p>
*/
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
//////////////////////////////////
@Override
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 default namespace pefix of a non-base-model should not manifest as
* the default namespace prefix of the base model or the Ont model.
*/
public void testPolyadicPrefixMapping() {
final String IMPORTED_NAMESPACE = "http://imported#";
final String LOCAL_NAMESPACE = "http://local#";
Model importedModel = ModelFactory.createDefaultModel();
importedModel.setNsPrefix( "", IMPORTED_NAMESPACE );
OntModel ontModel = ModelFactory.createOntologyModel();
ontModel.setNsPrefix( "", LOCAL_NAMESPACE );
ontModel.addSubModel( importedModel );
assertNull( ontModel.getNsURIPrefix( IMPORTED_NAMESPACE ) );
}
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 " + OWL.getURI() + "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:owl=\"" + OWL.getURI() + "\"" ) > 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") );
}
/** User requested: allow null arguments when creating individuals */
public void testCreateIndividual() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
Resource i0 = m.createIndividual( OWL.Thing );
Resource i1 = m.createIndividual( null );
Resource i2 = m.createIndividual( NS + "i2", OWL.Thing );
Resource i3 = m.createIndividual( NS + "i3", null );
Resource i4 = m.createIndividual( null, OWL.Thing );
Resource i5 = m.createIndividual( null, null );
assertNotNull( i0 );
assertNotNull( i1 );
assertNotNull( i2 );
assertNotNull( i3 );
assertNotNull( i4 );
assertNotNull( i5 );
}
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") );
assertNull( "result of get r", m.getDatatypeProperty( NS+"r"));
}
public void testGetAnnotationProperty() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createAnnotationProperty( NS + "s" );
assertEquals( "Result of get s", s, m.getAnnotationProperty( NS + "s" ) );
assertNull( "result of get q", m.getAnnotationProperty( NS+"q") );
assertNull( "result of get r", m.getAnnotationProperty( NS+"r"));
}
public void testGetOntResource() {
OntModel m = ModelFactory.createOntologyModel();
OntResource r0 = m.getOntResource( NS + "a" );
assertNull( r0 );
OntResource r1 = m.createOntResource( NS + "aaa" );
assertInstanceOf( OntResource.class, r1 );
Resource r2a = m.getResource( NS + "a" );
Resource r2b = m.getResource( NS + "b" );
Property p = m.getProperty( NS + "p" );
m.add( r2a, p, r2b );
r0 = m.getOntResource( NS + "a" );
assertInstanceOf( OntResource.class, r0 );
OntResource r3 = m.getOntResource( r2b );
assertInstanceOf( OntResource.class, r3 );
}
public void testGetOntClass() {
OntModel m = ModelFactory.createOntologyModel();
Resource r = m.getResource( NS + "r" );
Resource r0 = m.getResource( NS + "r0" );
m.add( r, RDF.type, r0 );
Resource s = m.createClass( NS + "s" );
assertEquals( "Result of get s", s, m.getOntClass( NS + "s" ) );
assertNull( "result of get q", m.getOntClass( NS+"q") );
assertNull( "result of get r", m.getOntClass( NS+"r"));
}
public void testGetComplementClass() {
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.createComplementClass( NS + "s", c );
assertEquals( "Result of get s", s, m.getComplementClass( NS + "s" ) );
assertNull( "result of get q", m.getComplementClass( NS+"q") );
assertNull( "result of get r", m.getComplementClass( NS+"r"));
}
public void testGetEnumeratedClass() {
OntModel m = ModelFactory.createOntologyModel();
RDFList l = m.createList();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createEnumeratedClass( NS + "s", l );
assertEquals( "Result of get s", s, m.getEnumeratedClass( NS + "s" ) );
assertNull( "result of get q", m.getEnumeratedClass( NS+"q") );
assertNull( "result of get r", m.getEnumeratedClass( NS+"r"));
}
public void testGetUnionClass() {
OntModel m = ModelFactory.createOntologyModel();
RDFList l = m.createList();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createUnionClass( NS + "s", l );
assertEquals( "Result of get s", s, m.getUnionClass( NS + "s" ) );
assertNull( "result of get q", m.getUnionClass( NS+"q") );
assertNull( "result of get r", m.getUnionClass( NS+"r"));
}
public void testGetIntersectionClass() {
OntModel m = ModelFactory.createOntologyModel();
RDFList l = m.createList();
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createIntersectionClass( NS + "s", l );
assertEquals( "Result of get s", s, m.getIntersectionClass( NS + "s" ) );
assertNull( "result of get q", m.getIntersectionClass( NS+"q") );
assertNull( "result of get r", m.getIntersectionClass( NS+"r"));
}
public void testGetRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createRestriction( NS + "s", p );
assertEquals( "Result of get s", s, m.getRestriction( NS + "s" ) );
assertNull( "result of get q", m.getRestriction( NS+"q") );
assertNull( "result of get r", m.getRestriction( NS+"r"));
}
public void testGetHasValueRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
OntClass c = m.createClass( NS + "c" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createHasValueRestriction( NS + "s", p, c );
assertEquals( "Result of get s", s, m.getHasValueRestriction( NS + "s" ) );
assertNull( "result of get q", m.getHasValueRestriction( NS+"q") );
assertNull( "result of get r", m.getHasValueRestriction( NS+"r"));
}
public void testGetSomeValuesFromRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
OntClass c = m.createClass( NS + "c" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createSomeValuesFromRestriction( NS + "s", p, c );
assertEquals( "Result of get s", s, m.getSomeValuesFromRestriction( NS + "s" ) );
assertNull( "result of get q", m.getSomeValuesFromRestriction( NS+"q") );
assertNull( "result of get r", m.getSomeValuesFromRestriction( NS+"r"));
}
public void testGetAllValuesFromRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
OntClass c = m.createClass( NS + "c" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createAllValuesFromRestriction( NS + "s", p, c );
assertEquals( "Result of get s", s, m.getAllValuesFromRestriction( NS + "s" ) );
assertNull( "result of get q", m.getAllValuesFromRestriction( NS+"q") );
assertNull( "result of get r", m.getAllValuesFromRestriction( NS+"r"));
}
public void testGetCardinalityRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createCardinalityRestriction( NS + "s", p, 1 );
assertEquals( "Result of get s", s, m.getCardinalityRestriction( NS + "s" ) );
assertNull( "result of get q", m.getCardinalityRestriction( NS+"q") );
assertNull( "result of get r", m.getCardinalityRestriction( NS+"r"));
}
public void testGetMinCardinalityRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createMinCardinalityRestriction( NS + "s", p, 1 );
assertEquals( "Result of get s", s, m.getMinCardinalityRestriction( NS + "s" ) );
assertNull( "result of get q", m.getMinCardinalityRestriction( NS+"q") );
assertNull( "result of get r", m.getMinCardinalityRestriction( NS+"r"));
}
public void testGetMaxCardinalityRestriction() {
OntModel m = ModelFactory.createOntologyModel();
Property p = m.createProperty( NS + "p" );
Resource r = m.getResource( NS + "r" );
m.add( r, RDF.type, r );
Resource s = m.createMaxCardinalityRestriction( NS + "s", p, 1 );
assertEquals( "Result of get s", s, m.getMaxCardinalityRestriction( NS + "s" ) );
assertNull( "result of get q", m.getMaxCardinalityRestriction( NS+"q") );
assertNull( "result of get r", m.getMaxCardinalityRestriction( NS+"r"));
}
public void testGetSubgraphs() {
OntModel m = ModelFactory.createOntologyModel();
m.read( "file:testing/ontology/testImport6/a.owl" );
assertEquals( "Marker count not correct", 4, TestOntDocumentManager.countMarkers( m ) );
List<Graph> subs = m.getSubGraphs();
assertEquals( "n subgraphs should be ", 3, subs.size() );
}
public void testListImportURIs() {
OntModel m = ModelFactory.createOntologyModel();
m.read( "file:testing/ontology/testImport6/a.owl" );
Collection<String> c = m.listImportedOntologyURIs();
assertEquals( "Should be two non-closed import URI's", 2, c.size() );
assertTrue( "b should be imported ", c.contains( "file:testing/ontology/testImport6/b.owl" ));
assertFalse( "c should not be imported ", c.contains( "file:testing/ontology/testImport6/c.owl" ));
assertTrue( "d should be imported ", c.contains( "file:testing/ontology/testImport6/d.owl" ));
c = m.listImportedOntologyURIs( true );
assertEquals( "Should be two non-closed import URI's", 3, c.size() );
assertTrue( "b should be imported ", c.contains( "file:testing/ontology/testImport6/b.owl" ));
assertTrue( "c should be imported ", c.contains( "file:testing/ontology/testImport6/c.owl" ));
assertTrue( "d should be imported ", c.contains( "file:testing/ontology/testImport6/d.owl" ));
}
/** Some tests for listing properties. See also {@link TestListSyntaxCategories} */
public void testListOntProperties0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
// no rdf:type entailment, so we don't find most properties ...
assertFalse( iteratorContains( m.listOntProperties(), op ) );
assertFalse( iteratorContains( m.listOntProperties(), dp ) );
assertFalse( iteratorContains( m.listOntProperties(), ap ) );
assertTrue( iteratorContains( m.listOntProperties(), ontp ) );
assertTrue( iteratorContains( m.listOntProperties(), rdfp ) );
}
public void testListOntProperties1() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF);
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
assertTrue( iteratorContains( m.listOntProperties(), op ) );
assertTrue( iteratorContains( m.listOntProperties(), dp ) );
// note that owl:AnnotationProperty is an rdf:Property in OWL Full
assertTrue( iteratorContains( m.listOntProperties(), ap ) );
assertTrue( iteratorContains( m.listOntProperties(), ontp ) );
assertTrue( iteratorContains( m.listOntProperties(), rdfp ) );
}
public void testListOntProperties2() {
OntModelSpec owlDLReasoner = new OntModelSpec( OntModelSpec.OWL_DL_MEM );
owlDLReasoner.setReasoner( OntModelSpec.OWL_MEM_MICRO_RULE_INF.getReasoner() );
OntModel m = ModelFactory.createOntologyModel( owlDLReasoner );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
assertTrue( iteratorContains( m.listOntProperties(), op ) );
assertTrue( iteratorContains( m.listOntProperties(), dp ) );
// note that owl:AnnotationProperty not an rdf:Property in OWL DL
assertFalse( iteratorContains( m.listOntProperties(), ap ) );
assertTrue( iteratorContains( m.listOntProperties(), ontp ) );
assertTrue( iteratorContains( m.listOntProperties(), rdfp ) );
}
public void testListAllOntProperties0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
// no rdf:type entailment, so we don't find most properties ...
assertTrue( iteratorContains( m.listAllOntProperties(), op ) );
assertTrue( iteratorContains( m.listAllOntProperties(), dp ) );
assertTrue( iteratorContains( m.listAllOntProperties(), ap ) );
assertTrue( iteratorContains( m.listAllOntProperties(), ontp ) );
assertTrue( iteratorContains( m.listAllOntProperties(), rdfp ) );
}
public void testListObjectProperties0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
// no rdf:type entailment, so we don't find most properties ...
assertTrue( iteratorContains( m.listObjectProperties(), op ) );
assertFalse( iteratorContains( m.listObjectProperties(), dp ) );
assertFalse( iteratorContains( m.listObjectProperties(), ap ) );
assertFalse( iteratorContains( m.listObjectProperties(), ontp ) );
assertFalse( iteratorContains( m.listObjectProperties(), rdfp ) );
}
public void testListDatatypeProperties0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
// no rdf:type entailment, so we don't find most properties ...
assertFalse( iteratorContains( m.listDatatypeProperties(), op ) );
assertTrue( iteratorContains( m.listDatatypeProperties(), dp ) );
assertFalse( iteratorContains( m.listDatatypeProperties(), ap ) );
assertFalse( iteratorContains( m.listDatatypeProperties(), ontp ) );
assertFalse( iteratorContains( m.listDatatypeProperties(), rdfp ) );
}
public void testListAnnotationProperties0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
ObjectProperty op = m.createObjectProperty( NS + "op" );
DatatypeProperty dp = m.createDatatypeProperty( NS + "dp" );
AnnotationProperty ap = m.createAnnotationProperty( NS + "ap" );
OntProperty ontp = m.createOntProperty( NS + "ontp" );
Property rdfp = m.createProperty( NS + "rdfp" );
rdfp.addProperty( RDF.type, RDF.Property );
// no rdf:type entailment, so we don't find most properties ...
assertFalse( iteratorContains( m.listAnnotationProperties(), op ) );
assertFalse( iteratorContains( m.listAnnotationProperties(), dp ) );
assertTrue( iteratorContains( m.listAnnotationProperties(), ap ) );
assertFalse( iteratorContains( m.listAnnotationProperties(), ontp ) );
assertFalse( iteratorContains( m.listAnnotationProperties(), rdfp ) );
}
public void testListSubModels0() {
OntModel m = ModelFactory.createOntologyModel();
m.read( "file:testing/ontology/testImport6/a.owl" );
assertEquals( "Marker count not correct", 4, TestOntDocumentManager.countMarkers( m ) );
List<OntModel> importModels = new ArrayList<>();
for (Iterator<OntModel> j = m.listSubModels(); j.hasNext(); ) {
importModels.add( j.next() );
}
assertEquals( "n import models should be ", 3, importModels.size() );
int nImports = 0;
for ( OntModel x : importModels )
{
// count the number of imports of each sub-model
nImports += x.countSubModels();
}
// listSubModels' default behaviour is *not* to include imports of sub-models
assertEquals( "Wrong number of sub-model imports", 0, nImports );
}
public void testListSubModels1() {
OntModel m = ModelFactory.createOntologyModel();
m.read( "file:testing/ontology/testImport6/a.owl" );
assertEquals( "Marker count not correct", 4, TestOntDocumentManager.countMarkers( m ) );
List<OntModel> importModels = new ArrayList<>();
for (Iterator<OntModel> j = m.listSubModels( true ); j.hasNext(); ) {
importModels.add( j.next() );
}
assertEquals( "n import models should be ", 3, importModels.size() );
int nImports = 0;
for ( OntModel x : importModels )
{
// count the number of imports of each sub-model
nImports += x.countSubModels();
}
assertEquals( "Wrong number of sub-model imports", 2, nImports );
}
public void testGetImportedModel() {
OntModel m = ModelFactory.createOntologyModel();
m.read( "file:testing/ontology/testImport6/a.owl" );
OntModel m0 = m.getImportedModel( "file:testing/ontology/testImport6/b.owl" );
OntModel m1 = m.getImportedModel( "file:testing/ontology/testImport6/c.owl" );
OntModel m2 = m.getImportedModel( "file:testing/ontology/testImport6/d.owl" );
OntModel m3 = m.getImportedModel( "file:testing/ontology/testImport6/b.owl" )
.getImportedModel( "file:testing/ontology/testImport6/c.owl" );
OntModel m4 = m.getImportedModel( "file:testing/ontology/testImport6/a.owl" );
assertNotNull( "Import model b should not be null", m0 );
assertNotNull( "Import model c should not be null", m1 );
assertNotNull( "Import model d should not be null", m2 );
assertNotNull( "Import model b-c should not be null", m3 );
assertNull( "Import model a should be null", m4 );
}
/**
* Test that the supports checks that are defined in the OWL full profile are not
* missing in the DL and Lite profiles, unless by design.
* Not strictly a model test, but it has to go somewhere */
public void testProfiles() {
List<Class<?>> notInDL = Arrays.asList( new Class<?>[] {} );
List<Class<?>> notInLite = Arrays.asList( new Class<?>[] {DataRange.class, HasValueRestriction.class} );
Map<Class<?>, SupportsCheck> fullProfileMap = new OWLProfileExt().getSupportsMap();
Map<Class<?>, SupportsCheck> dlProfileMap = new OWLDLProfileExt().getSupportsMap();
Map<Class<?>, SupportsCheck> liteProfileMap = new OWLLiteProfileExt().getSupportsMap();
for ( Map.Entry<Class<?>, SupportsCheck> entry : fullProfileMap.entrySet() )
{
Class<?> c = entry.getKey();
assertTrue( "Key in OWL DL profile: " + c.getName(),
dlProfileMap.containsKey( c ) || notInDL.contains( c ) );
assertTrue( "Key in OWL lite profile: " + c.getName(),
liteProfileMap.containsKey( c ) || notInLite.contains( c ) );
}
}
/**
Added by kers to ensure that bulk update works; should really be a test
of the ontology Graph using AbstractTestGraph, but that fails because there
are too many things that don't pass those tests.
<p>
<b>Yet</b>.
*/
public void testBulkAddWorks()
{
OntModel om1= ModelFactory.createOntologyModel();
OntModel om2 = ModelFactory.createOntologyModel();
om1.add( om2 );
}
public void testRead() {
String base0 = "http://example.com/test0";
String ns0 = base0 + "#";
String base1 = "http://example.com/test1";
String ns1 = base1 + "#";
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
m.getDocumentManager().reset();
m.getDocumentManager().addAltEntry( base0, "file:testing/ontology/relativenames.rdf" );
m.read( base0, "RDF/XML" );
assertNotNull( "Should be a class ns0:A", m.getOntClass( ns0 + "A" ) );
assertNull( "Should not be a class ns1:A", m.getOntClass( ns1 + "A" ) );
m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
m.getDocumentManager().reset();
m.getDocumentManager().addAltEntry( base0, "file:testing/ontology/relativenames.rdf" );
m.read( base0, base1, "RDF/XML" );
assertNull( "Should not be a class ns0:A", m.getOntClass( ns0 + "A" ) );
assertNotNull( "Should be a class ns1:A", m.getOntClass( ns1 + "A" ) );
}
public void testListDataRange() {
String base = "http://jena.hpl.hp.com/test#";
String doc =
"<?xml version='1.0'?>"
+ "<!DOCTYPE owl ["
+ " <!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' >"
+ " <!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#' >"
+ " <!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#' >"
+ " <!ENTITY owl 'http://www.w3.org/2002/07/owl#' >"
+ " <!ENTITY dc 'http://purl.org/dc/elements/1.1/' >"
+ " <!ENTITY base 'http://jena.hpl.hp.com/test' >"
+ " ]>"
+ "<rdf:RDF"
+ " xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'"
+ " xmlns:owl='http://www.w3.org/2002/07/owl#'>"
+ " <owl:DataRange>"
+ " <owl:oneOf>"
+ " <rdf:List>"
+ " <rdf:first rdf:datatype='&xsd;integer'>0</rdf:first>"
+ " <rdf:rest rdf:resource='&rdf;nil' />"
+ " </rdf:List>"
+ " </owl:oneOf>"
+ " </owl:DataRange>"
+ "</rdf:RDF>";
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
m.read(new StringReader(doc), base);
Iterator<DataRange> i = m.listDataRanges();
assertTrue( "Should be at least one DataRange", i.hasNext() );
Object dr = i.next();
assertInstanceOf( DataRange.class, dr );
assertFalse( "Should no more DataRange", i.hasNext() );
}
public void testListHierarchyRoots0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
assertFalse( m.listHierarchyRootClasses().hasNext() );
m = ModelFactory.createOntologyModel( OntModelSpec.RDFS_MEM );
assertFalse( m.listHierarchyRootClasses().hasNext() );
}
public void testListHierarchyRoots1() {
String doc =
"@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. "
+ "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. "
+ "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. "
+ "@prefix owl: <http://www.w3.org/2002/07/owl#>. "
+ "@prefix : <" + NS + ">. "
+ ":A a owl:Class. "
;
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
m.read( new StringReader(doc), NS, "N3" );
OntClass a = m.getOntClass(NS+"A");
TestUtil.assertIteratorValues( this, m.listHierarchyRootClasses(),
new Object[] {a} );
}
public void testListHierarchyRoots2() {
String doc =
"@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. "
+ "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. "
+ "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. "
+ "@prefix owl: <http://www.w3.org/2002/07/owl#>. "
+ "@prefix : <" + NS + ">. "
+ ":A a owl:Class. "
;
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF, null);
m.read( new StringReader(doc), NS, "N3" );
OntClass a = m.getOntClass(NS+"A");
TestUtil.assertIteratorValues( this, m.listHierarchyRootClasses(),
new Object[] {a} );
}
public void testListHierarchyRoots3() {
String doc =
"@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. "
+ "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. "
+ "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. "
+ "@prefix owl: <http://www.w3.org/2002/07/owl#>. "
+ "@prefix : <" + NS + ">. "
+ ":A a owl:Class. "
+ ":B a owl:Class ; rdfs:subClassOf :A . "
;
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MINI_RULE_INF, null);
m.read( new StringReader(doc), NS, "N3" );
OntClass a = m.getOntClass(NS+"A");
TestUtil.assertIteratorValues( this, m.listHierarchyRootClasses(),
new Object[] {a} );
}
public void testListHierarchyRoots4() {
String doc =
"@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. "
+ "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. "
+ "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. "
+ "@prefix owl: <http://www.w3.org/2002/07/owl#>. "
+ "@prefix : <" + NS + ">. "
+ ":A a rdfs:Class. "
+ ":C a rdfs:Class. "
+ ":B a rdfs:Class ; rdfs:subClassOf :A . "
;
OntModel m = ModelFactory.createOntologyModel(OntModelSpec.RDFS_MEM_RDFS_INF, null);
m.read( new StringReader(doc), NS, "N3" );
OntClass a = m.getOntClass(NS+"A");
OntClass c = m.getOntClass(NS+"C");
TestUtil.assertIteratorValues( this, m.listHierarchyRootClasses(),
new Object[] {a,c} );
}
/* Auto-loading of imports is off by default */
public void testLoadImports0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
Resource a = m.getResource( "file:testing/ontology/testImport3/a.owl" );
Resource b = m.getResource( "file:testing/ontology/testImport3/b.owl" );
m.add( a, m.getProfile().IMPORTS(), b );
// not dymamically imported by default
assertEquals( "Marker count not correct", 0, TestOntDocumentManager.countMarkers( m ) );
assertFalse( "c should not be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/c.owl" ) );
assertFalse( "b should not be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/b.owl" ) );
m.loadImports();
assertEquals( "Marker count not correct", 2, TestOntDocumentManager.countMarkers( m ) );
assertTrue( "c should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/c.owl" ) );
assertTrue( "b should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/b.owl" ) );
}
/* Auto-loading of imports = on */
public void testLoadImports1() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
Resource a = m.getResource( "file:testing/ontology/testImport3/a.owl" );
Resource b = m.getResource( "file:testing/ontology/testImport3/b.owl" );
m.setDynamicImports( true );
m.add( a, m.getProfile().IMPORTS(), b );
assertEquals( "Marker count not correct", 2, TestOntDocumentManager.countMarkers( m ) );
assertTrue( "c should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/c.owl" ) );
assertTrue( "b should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/b.owl" ) );
// this should have no effect
m.loadImports();
assertEquals( "Marker count not correct", 2, TestOntDocumentManager.countMarkers( m ) );
assertTrue( "c should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/c.owl" ) );
assertTrue( "b should be imported", m.hasLoadedImport( "file:testing/ontology/testImport3/b.owl" ) );
}
/** Test that resources are attached to the right sub-models when importing */
public void testLoadImports2() {
OntModel ontModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
ontModel.read("file:testing/ontology/testImport8/a.owl");
String NSa = "http://incubator.apache.org/jena/2011/10/testont/a#";
String NSb = "http://incubator.apache.org/jena/2011/10/testont/b#";
OntClass A = ontModel.getOntClass(NSa + "A");
assertTrue( ontModel.isInBaseModel(A));
OntClass B = ontModel.getOntClass(NSb + "B");
assertFalse( ontModel.isInBaseModel(B));
assertTrue( ontModel.isInBaseModel(ontModel.createStatement(A, RDF.type, OWL.Class)));
assertFalse( ontModel.isInBaseModel(ontModel.createStatement(B, RDF.type, OWL.Class)));
}
/** Test getting conclusions after loading imports */
public void testAddImports0() {
OntModel base = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
base.createClass( NS + "A" );
base.createClass( NS + "B" );
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF, base );
OntClass a = m.getOntClass( NS + "A" );
OntClass b = m.getOntClass( NS + "B" );
// nothing is known about a and b yet
assertFalse( a.hasSubClass( b ) );
// add some ontology data
OntModel imp = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
imp.add( b, RDFS.subClassOf, a );
m.addSubModel( imp, true );
assertTrue( a.hasSubClass( b ) );
}
public void testAddImports1() {
String ns = "http://jena.hpl.hp.com/2003/03/testont";
OntModel base = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
OntDocumentManager odm = OntDocumentManager.getInstance();
odm.addAltEntry( ns + "#a", "file:testing/ontology/testImport7/a.owl" );
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF, base );
Ontology oo = base.createOntology( ns );
oo.addImport( base.createResource( ns + "#a") );
// nothing is known about a and b yet
Resource a = m.getResource( ns + "#A" );
Resource c = m.getResource( ns + "#C" );
assertFalse( m.contains( c, RDFS.subClassOf, a ) );
// when we load the imports, the odm must kick the reasoner with a rebind()
m.getDocumentManager().loadImports( m );
assertTrue( m.contains( c, RDFS.subClassOf, a ) );
}
/**
* AddSubModel variant 2: base = no inf, import = no inf
*/
public void testaddSubModel0() {
OntModel m0 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
OntModel m1 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
OntClass c = m1.createClass( NS + "c" );
assertFalse( m0.containsResource( c ) );
m0.addSubModel( m1 );
assertTrue( m0.containsResource( c ) );
m0.removeSubModel( m1 );
assertFalse( m0.containsResource( c ) );
}
/**
* AddSubModel variant 2: base = inf, import = no inf
*/
public void testaddSubModel1() {
OntDocumentManager.getInstance().setProcessImports( false );
OntDocumentManager.getInstance().addAltEntry( "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine",
"file:testing/ontology/owl/Wine/wine.owl" );
OntModel m0 = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_MICRO_RULE_INF);
OntModel m1 = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
String namespace = "http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine";
String classURI = namespace + "#Wine";
m1.read(namespace);
OntClass c = m1.getOntClass(classURI);
assertFalse(m0.containsResource(c));
m0.addSubModel(m1);
assertTrue(m0.containsResource(c));
m0.removeSubModel(m1);
assertFalse(m0.containsResource(c));
}
/**
* Variant 3: base = no inf, import = inf
*/
public void testaddSubModel3() {
OntModel m0 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
OntModel m1 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_RDFS_INF );
OntClass c = m1.createClass( NS + "c" );
assertFalse( m0.containsResource( c ) );
m0.addSubModel( m1 );
assertTrue( m0.containsResource( c ) );
m0.removeSubModel( m1 );
assertFalse( m0.containsResource( c ) );
}
/**
* Variant 4: base = inf, import = inf
*/
public void testaddSubModel4() {
OntModel m0 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_RDFS_INF );
OntModel m1 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_RDFS_INF );
OntClass c = m1.createClass( NS + "c" );
assertFalse( m0.containsResource( c ) );
m0.addSubModel( m1 );
assertTrue( m0.containsResource( c ) );
m0.removeSubModel( m1 );
assertFalse( m0.containsResource( c ) );
}
/** Remove a sub model (imported model) */
public void testremoveSubModel0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM, null );
m.read( "file:testing/ontology/testImport3/a.owl" );
assertEquals( 2, m.getSubGraphs().size() );
for (Iterator<OntModel> it = m.listSubModels(); it.hasNext();) {
m.removeSubModel( it.next() );
}
assertEquals( 0, m.getSubGraphs().size() );
}
/** Getting the deductions model of an OntModel
* see also {@link TestBugs#testOntModelGetDeductions()}
* <p>ijd: Feb 6th, 2008 - this test has been disabled for
* the time being, since it is not correct as written. However,
* I'm not removing or changing it just yet, since it is showing up
* an infelicity in the rule engine that Dave will investigate
* at some future date.</p>
* */
public void xxtestGetDeductionsModel0() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF );
OntClass a = m.createClass( NS + "A" );
OntClass b = m.createClass( NS + "B" );
OntClass c = m.createClass( NS + "C" );
b.addSubClass( c );
// we see the entailments only in the deductions model
Model dm = m.getDeductionsModel();
assertTrue( dm.contains( OWL.Nothing, RDFS.subClassOf, a ) );
assertTrue( dm.contains( OWL.Nothing, RDFS.subClassOf, c ) );
a.addSubClass( b );
assertTrue( a.hasSubClass( c ));
dm = m.getDeductionsModel();
assertFalse( dm.contains( OWL.Nothing, RDFS.subClassOf, a ) );
assertTrue( dm.contains( OWL.Nothing, RDFS.subClassOf, c ) );
}
/**
* Test that using closed models in imports does not raise an exception
*/
public void testImportClosedModel() {
String SOURCEA=
"<rdf:RDF" +
" xmlns:rdf ='http://www.w3.org/1999/02/22-rdf-syntax-ns#'" +
" xmlns:owl ='http://www.w3.org/2002/07/owl#'" +
" xml:base ='http://example.com/a#'" +
">" +
" <owl:Ontology>" +
" <owl:imports rdf:resource='http://example.com/b' />" +
" </owl:Ontology>" +
"</rdf:RDF>";
OntDocumentManager.getInstance().addAltEntry( "http://example.com/b", "file:testing/ontology/relativenames.rdf" );
OntModel a0 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
a0.read( new StringReader( SOURCEA ), null );
long a0count = a0.size();
// key step - close a model which is now in the ODM cache
OntDocumentManager.getInstance().getModel( "http://example.com/b" ).close();
// this line threw an exception before the bug was fixed
OntModel a1 = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
a1.read( new StringReader( SOURCEA ), null );
// for completeness, check that we have read the same contents
assertEquals( "Models should be same size", a0count, a1.size() );
}
/**
* OntModel read should do content negotiation if no base URI is given
*/
public void testReadConneg0() {
final boolean[] acceptHeaderSet = new boolean[] {false};
// because ModelCom has private fields it references directly, we have to mock
// a lot more pieces that I would prefer
OntModel m = new OntModelImpl(OntModelSpec.OWL_MEM) {
@Override
protected Model readDelegate( String url ) {
acceptHeaderSet[0] = true;
return super.readDelegate( url );
}
/** Allow pseudo-conneg even on file: uri's */
@Override
public boolean ignoreFileURI( String url ) {
return false;
}
};
assertFalse( acceptHeaderSet[0] );
m.read( "file:testing/ontology/owl/Property/test.rdf" );
assertTrue( acceptHeaderSet[0] );
}
/** No conneg for file: uri's normally */
public void testReadConneg1() {
final boolean[] acceptHeaderSet = new boolean[] {false};
// because ModelCom has private fields it references directly, we have to mock
// a lot more pieces that I would prefer
OntModel m = new OntModelImpl(OntModelSpec.OWL_MEM) {
@Override
protected Model readDelegate( String url ) {
acceptHeaderSet[0] = true;
return super.readDelegate( url );
}
};
assertFalse( acceptHeaderSet[0] );
m.read( "file:testing/ontology/owl/Property/test.rdf" );
assertFalse( acceptHeaderSet[0] );
}
/** With RDF/XML syntax specified, conneg */
public void testReadConneg2() {
final boolean[] acceptHeaderSet = new boolean[] {false};
// because ModelCom has private fields it references directly, we have to mock
// a lot more pieces that I would prefer
OntModel m = new OntModelImpl(OntModelSpec.OWL_MEM) {
@Override
protected Model readDelegate( String url, String lang ) {
acceptHeaderSet[0] = true;
return super.readDelegate( url, lang );
}
/** Allow pseudo-conneg even on file: uri's */
@Override
public boolean ignoreFileURI( String url ) {
return false;
}
};
assertFalse( acceptHeaderSet[0] );
m.read( "file:testing/ontology/owl/Property/test.rdf", "RDF/XML" );
assertTrue( acceptHeaderSet[0] );
}
/** With a base URI, no conneg */
public void testReadConneg3() {
final boolean[] acceptHeaderSet = new boolean[] {false};
// because ModelCom has private fields it references directly, we have to mock
// a lot more pieces that I would prefer
OntModel m = new OntModelImpl(OntModelSpec.OWL_MEM) {
@Override
protected Model readDelegate( String url, String lang ) {
acceptHeaderSet[0] = true;
return super.readDelegate( url, lang );
}
/** Allow pseudo-conneg even on file: uri's */
@Override
public boolean ignoreFileURI( String url ) {
return false;
}
};
assertFalse( acceptHeaderSet[0] );
m.read( "file:testing/ontology/owl/Property/test.rdf", "http://foo.com", "RDF/XML" );
assertFalse( acceptHeaderSet[0] );
}
// Internal implementation methods
//////////////////////////////////
/**
* Answer true iff an iterator contains a given value.
*/
private boolean iteratorContains( Iterator<?> i, Object x ) {
boolean found = false;
while (i.hasNext()) {
found = i.next().equals( x ) || found;
}
return found;
}
//==============================================================================
// Inner class definitions
//==============================================================================
protected class OWLProfileExt extends OWLProfile
{
public Map<Class<?>, SupportsCheck> getSupportsMap() {
return getCheckTable();
}
}
protected class OWLDLProfileExt extends OWLDLProfile
{
public Map<Class<?>, SupportsCheck> getSupportsMap() {
return getCheckTable();
}
}
protected class OWLLiteProfileExt extends OWLLiteProfile
{
public Map<Class<?>, SupportsCheck> getSupportsMap() {
return getCheckTable();
}
}
}