/*
* 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 junit.framework.TestCase;
import org.apache.jena.ontology.* ;
import org.apache.jena.rdf.model.* ;
import org.apache.jena.reasoner.test.TestUtil ;
/**
* <p>
* Unit-tests for frame-like views of OWL and RDFS-classes, especially listDeclaredProperties
* </p>
*/
public class TestFrameView
extends TestCase
{
// Constants
//////////////////////////////////
public static final String BASE = "http://jena.hpl.hp.com/testing/ontology";
public static final String NS = BASE + "#";
// Static variables
//////////////////////////////////
// Instance variables
//////////////////////////////////
OntModel mInf;
OntModel mNoInf;
OntClass infA;
OntClass infB;
OntClass infC;
OntClass noinfA;
OntClass noinfB;
OntClass noinfC;
ObjectProperty noinfG;
ObjectProperty infG;
ObjectProperty noinfPa;
ObjectProperty noinfPb;
ObjectProperty noinfPc;
ObjectProperty infPa;
ObjectProperty infPb;
ObjectProperty infPc;
ObjectProperty noinfQa;
ObjectProperty noinfQb;
ObjectProperty infQa;
ObjectProperty infQb;
OntClass infAnn;
OntClass noinfAnn;
AnnotationProperty infPann;
AnnotationProperty noinfPann;
OntClass infUnion1;
OntClass infUnion2;
OntClass noinfUnion1;
OntClass noinfUnion2;
ObjectProperty infPunion;
ObjectProperty noinfPunion;
OntClass infIntersect1;
OntClass infIntersect2;
OntClass noinfIntersect1;
OntClass noinfIntersect2;
ObjectProperty infPintersect;
ObjectProperty noinfPintersect;
// Constructors
//////////////////////////////////
// External signature methods
//////////////////////////////////
@Override
public void setUp() {
OntDocumentManager.getInstance().reset();
OntDocumentManager.getInstance().clearCache();
mNoInf = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
mNoInf.read( "file:testing/ontology/owl/list-syntax/test-ldp.rdf" );
//mInf = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_RULE_INF );
mInf = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF);
mInf.read( "file:testing/ontology/owl/list-syntax/test-ldp.rdf" );
infA = mInf.getOntClass( NS + "A" );
infB = mInf.getOntClass( NS + "B" );
infC = mInf.getOntClass( NS + "C" );
noinfA = mNoInf.getOntClass( NS + "A" );
noinfB = mNoInf.getOntClass( NS + "B" );
noinfC = mNoInf.getOntClass( NS + "C" );
noinfG = mNoInf.getObjectProperty( NS + "global" );
infG = mInf.getObjectProperty( NS + "global" );
noinfPa = mNoInf.getObjectProperty( NS + "pA" );
noinfPb = mNoInf.getObjectProperty( NS + "pB" );
noinfPc = mNoInf.getObjectProperty( NS + "pC" );
infPa = mInf.getObjectProperty( NS + "pA" );
infPb = mInf.getObjectProperty( NS + "pB" );
infPc = mInf.getObjectProperty( NS + "pC" );
noinfQa = mNoInf.getObjectProperty( NS + "qA" );
noinfQb = mNoInf.getObjectProperty( NS + "qB" );
infQa = mInf.getObjectProperty( NS + "qA" );
infQb = mInf.getObjectProperty( NS + "qB" );
infAnn = mInf.getOntClass( NS + "HasAnn" );
noinfAnn = mNoInf.getOntClass( NS + "HasAnn" );
infPann = mInf.getAnnotationProperty( NS + "ann" );
noinfPann = mNoInf.getAnnotationProperty( NS + "ann" );
infUnion1 = mInf.getOntClass( NS + "Union1" );
infUnion2 = mInf.getOntClass( NS + "Union2" );
noinfUnion1 = mNoInf.getOntClass( NS + "Union1" );
noinfUnion2 = mNoInf.getOntClass( NS + "Union2" );
infPunion = mInf.getObjectProperty( NS + "unionP" );
noinfPunion = mNoInf.getObjectProperty( NS + "unionP" );
infIntersect1 = mInf.getOntClass( NS + "Intersect1" );
infIntersect2 = mInf.getOntClass( NS + "Intersect2" );
noinfIntersect1 = mNoInf.getOntClass( NS + "Intersect1" );
noinfIntersect2 = mNoInf.getOntClass( NS + "Intersect2" );
infPintersect = mInf.getObjectProperty( NS + "intersectP" );
noinfPintersect = mNoInf.getObjectProperty( NS + "intersectP" );
}
@Override
public void tearDown() {
/* assistance with monitoring space leak
System.gc();
System.gc();
Runtime r = Runtime.getRuntime();
System.out.println( getName() +
" memory = " + r.freeMemory() +
", alloc = " + r.totalMemory() +
", % = " + Math.round( 100.0 * (double) r.freeMemory() / (double) r.totalMemory() ));
*/
mInf.close();
mInf = null;
mNoInf.close();
mNoInf = null;
}
// OntClass.listDeclaredProperties() tests ...
public void testLDP_noinfA_nodirect() {
TestUtil.assertIteratorValues( this, noinfA.listDeclaredProperties( false ),
new Object[] {noinfPa, noinfQa, noinfG, noinfQb} );
}
public void testHasDP_noinfA_nodirect() {
// we only need a small number of tests on hasDP because it's the
// main componenet of listDP
assertTrue( noinfA.hasDeclaredProperty( noinfPa, false ) );
assertFalse( noinfA.hasDeclaredProperty( noinfPb, false ) );
}
public void testLDP_noinfA_direct() {
TestUtil.assertIteratorValues( this, noinfA.listDeclaredProperties( true ),
new Object[] {noinfPa, noinfQa, noinfG, noinfQb} );
}
public void testLDP_infA_nodirect() {
TestUtil.assertIteratorValues( this, infA.listDeclaredProperties( false ),
new Object[] {infPa, infQa, infQb, noinfG} );
}
public void testLDP_infA_direct() {
TestUtil.assertIteratorValues( this, infA.listDeclaredProperties( true ),
new Object[] {infPa, infQa, infQb, noinfG} );
}
public void testLDP_noinfB_nodirect() {
TestUtil.assertIteratorValues( this, noinfB.listDeclaredProperties( false ),
new Object[] {noinfPa, noinfPb, noinfQa, noinfG, noinfQb} );
}
public void testLDP_noinfB_direct() {
TestUtil.assertIteratorValues( this, noinfB.listDeclaredProperties( true ),
new Object[] {noinfPb} );
}
public void testLDP_infB_nodirect() {
TestUtil.assertIteratorValues( this, infB.listDeclaredProperties( false ),
new Object[] {infPa, infPb, infQa, infQb, infG} );
}
public void testLDP_infB_direct() {
TestUtil.assertIteratorValues( this, infB.listDeclaredProperties( true ),
new Object[] {infPb} );
}
public void testLDP_noinfC_nodirect() {
// note that qB appears in the results because without inference it looks like a global
TestUtil.assertIteratorValues( this, noinfC.listDeclaredProperties( false ),
new Object[] {noinfPa, noinfPb, noinfPc, noinfQa, noinfG, noinfQb} );
}
public void testLDP_noinfC_direct() {
TestUtil.assertIteratorValues( this, noinfC.listDeclaredProperties( true ),
new Object[] {noinfPc} );
}
public void testLDP_infC_nodirect() {
TestUtil.assertIteratorValues( this, infC.listDeclaredProperties( false ),
new Object[] {infPa, infPb, infPc, infQa, infQb, infG} );
}
public void testLDP_infC_direct() {
TestUtil.assertIteratorValues( this, infC.listDeclaredProperties( true ),
new Object[] {infPc} );
}
public void testLDP_noinfAnn_nodirect() {
// note that qB appears in the results because without inference it looks like a global
TestUtil.assertIteratorValues( this, noinfAnn.listDeclaredProperties( false ),
new Object[] {noinfPann, noinfG, noinfQb} );
}
public void testLDP_noinfAnn_direct() {
TestUtil.assertIteratorValues( this, noinfAnn.listDeclaredProperties( true ),
new Object[] {noinfPann, noinfG, noinfQb} );
}
public void testLDP_infAnn_nodirect() {
TestUtil.assertIteratorValues( this, infAnn.listDeclaredProperties( false ),
new Object[] {noinfPann, noinfG} );
}
public void testLDP_infAnn_direct() {
TestUtil.assertIteratorValues( this, infAnn.listDeclaredProperties( true ),
new Object[] {noinfPann, noinfG} );
}
public void testLDP_noinfUnion_nodirect() {
TestUtil.assertIteratorValues( this, noinfUnion1.listDeclaredProperties( false ),
new Object[] {noinfG, noinfQb} );
TestUtil.assertIteratorValues( this, noinfUnion2.listDeclaredProperties( false ),
new Object[] {noinfG, noinfQb} );
}
public void testLDP_infUnion_nodirect() {
TestUtil.assertIteratorValues( this, infUnion1.listDeclaredProperties( false ),
new Object[] {infPunion, infG} );
TestUtil.assertIteratorValues( this, infUnion2.listDeclaredProperties( false ),
new Object[] {infPunion, infG} );
}
public void testLDP_noinfIntersect_nodirect() {
TestUtil.assertIteratorValues( this, noinfIntersect1.listDeclaredProperties( false ),
new Object[] {noinfG, noinfQb} );
TestUtil.assertIteratorValues( this, noinfIntersect2.listDeclaredProperties( false ),
new Object[] {noinfG, noinfQb} );
}
public void testLDP_infIntersect_nodirect() {
TestUtil.assertIteratorValues( this, infIntersect1.listDeclaredProperties( false ),
new Object[] {infG} );
TestUtil.assertIteratorValues( this, infIntersect2.listDeclaredProperties( false ),
new Object[] {infG} );
}
// OntProperty.listDeclaringProperties() tests ...
public void testLDC_noinfPa_nodirect() {
TestUtil.assertIteratorValues( this, noinfPa.listDeclaringClasses( false ),
new Object[] {noinfA, noinfB, noinfC} );
}
public void testLDC_infPa_nodirect() {
TestUtil.assertIteratorValues( this, infPa.listDeclaringClasses( false ),
new Object[] {infA, infB, infC} );
}
public void testLDC_noinfPb_nodirect() {
TestUtil.assertIteratorValues( this, noinfPb.listDeclaringClasses( false ),
new Object[] {noinfB, noinfC} );
}
public void testLDC_infPb_nodirect() {
TestUtil.assertIteratorValues( this, infPb.listDeclaringClasses( false ),
new Object[] {infC, infB} );
}
public void testLDC_noinfPc_nodirect() {
TestUtil.assertIteratorValues( this, noinfPc.listDeclaringClasses( false ),
new Object[] {noinfC} );
}
public void testLDC_infPc_nodirect() {
TestUtil.assertIteratorValues( this, infPc.listDeclaringClasses( false ),
new Object[] {infC} );
}
public void testLDC_noinfPa_direct() {
TestUtil.assertIteratorValues( this, noinfPa.listDeclaringClasses( true ),
new Object[] {noinfA} );
}
public void testLDC_infPa_direct() {
TestUtil.assertIteratorValues( this, infPa.listDeclaringClasses( true ),
new Object[] {infA} );
}
public void testLDC_noinfPb_direct() {
TestUtil.assertIteratorValues( this, noinfPb.listDeclaringClasses( true ),
new Object[] {noinfB} );
}
public void testLDC_infPb_direct() {
TestUtil.assertIteratorValues( this, infPb.listDeclaringClasses( true ),
new Object[] {infB} );
}
public void testLDC_noinfPc_direct() {
TestUtil.assertIteratorValues( this, noinfPc.listDeclaringClasses( true ),
new Object[] {noinfC} );
}
public void testLDC_infPc_direct() {
TestUtil.assertIteratorValues( this, infPc.listDeclaringClasses( true ),
new Object[] {infC} );
}
public void testLDC_noinfG_direct() {
TestUtil.assertIteratorValues( this, noinfG.listDeclaringClasses( true ),
new Object[] {noinfA, noinfAnn, noinfUnion1, noinfUnion2, mNoInf.getOntClass(NS+"Joint"),noinfIntersect1,noinfIntersect2}, 2 );
}
public void testLDC_infG_direct() {
TestUtil.assertIteratorValues( this, infG.listDeclaringClasses( true ),
new Object[] {infA, infAnn, mNoInf.getOntClass(NS+"Joint"),noinfIntersect1,noinfIntersect2}, 1 );
}
public void testLDC_noinfG_nodirect() {
TestUtil.assertIteratorValues( this, noinfG.listDeclaringClasses( false ),
new Object[] {noinfA, noinfB, noinfC, noinfUnion1, noinfUnion2, noinfAnn, mNoInf.getOntClass(NS+"Joint"),noinfIntersect1,noinfIntersect2}, 2 );
}
public void testLDC_infG_nodirect() {
TestUtil.assertIteratorValues( this, infG.listDeclaringClasses( false ),
new Object[] {infA, infB, infC, infAnn, noinfUnion1, noinfUnion2, mNoInf.getOntClass(NS+"Joint"),noinfIntersect1,noinfIntersect2}, 2 );
}
// Internal implementation methods
//////////////////////////////////
//==============================================================================
// Inner class definitions
//==============================================================================
}