All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.bigdata.rdf.axioms.TestAxioms Maven / Gradle / Ivy

There is a newer version: 2.1.4
Show newest version
/**

Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016.  All rights reserved.

Contact:
     SYSTAP, LLC DBA Blazegraph
     2501 Calvert ST NW #106
     Washington, DC 20008
     [email protected]

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
/*
 * Created on Nov 6, 2007
 */

package com.bigdata.rdf.axioms;

import java.util.Iterator;
import java.util.Properties;

import org.openrdf.model.vocabulary.OWL;
import org.openrdf.model.vocabulary.RDF;

import com.bigdata.io.SerializerUtil;
import com.bigdata.rdf.model.BigdataStatement;
import com.bigdata.rdf.model.BigdataURI;
import com.bigdata.rdf.model.BigdataValue;
import com.bigdata.rdf.model.BigdataValueFactory;
import com.bigdata.rdf.spo.SPO;
import com.bigdata.rdf.store.AbstractTripleStore;
import com.bigdata.rdf.store.AbstractTripleStoreTestCase;
import com.bigdata.rdf.store.AbstractTripleStore.Options;

/**
 * Test suite for the {@link Axioms}.
 * 

* Note: {@link BaseAxioms} required an {@link AbstractTripleStore} to convert * the {@link BigdataStatement} objects into {@link SPO}s. This makes it * impossible to unit test the axioms classes independent of the * {@link AbstractTripleStore}. * * @author Bryan Thompson */ public class TestAxioms extends AbstractTripleStoreTestCase { /** * */ public TestAxioms() { super(); } /** * @param name */ public TestAxioms(String name) { super(name); } /** * Unit test of the constructors for the axiom classes. This does not test * serialization because that uses {@link SPO} objects which are only * created when we write on the {@link AbstractTripleStore}. */ public void test_ctor_NoAxioms() { new NoAxioms(getName()); } /** * Unit test of the constructors for the axiom classes. This does not test * serialization because that uses {@link SPO} objects which are only * created when we write on the {@link AbstractTripleStore}. */ public void test_ctor_RDFSAxioms() { new RdfsAxioms(getName()); } public void test_NoAxioms() { Properties properties = getProperties(); // override the default axiom model. properties.setProperty(Options.AXIOMS_CLASS, NoAxioms.class.getName()); AbstractTripleStore store = getStore(properties); try { // // store is empty. // assertEquals(0, store.getStatementCount()); final BigdataValueFactory f = store.getValueFactory(); // Must be using the same namespace. assertEquals(store.getAxioms().getNamespace(), f.getNamespace()); final BigdataURI rdfType = f.asValue(RDF.TYPE); final BigdataURI rdfProperty = f.asValue(RDF.PROPERTY); final BigdataURI unknownURI = f.createURI("http://www.bigdata.com/unknown"); // resolve term ids. store.addTerms(new BigdataValue[] { rdfType, rdfProperty, unknownURI }); // final NoAxioms axioms = new NoAxioms(store); // // axioms.init(); final NoAxioms axioms = (NoAxioms)store.getAxioms(); final int naxioms = axioms.size(); // the model does not define any axioms. assertEquals(0,naxioms); // store contains the axioms. assertEquals(naxioms, store.getStatementCount()); // point test for an axiom NOT defined by this model. assertFalse(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an axiom NOT defined by this model. assertFalse(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); { // verify (de-)serialization. final Axioms axioms2 = doRoundTripTest(axioms); // point test for an axiom NOT defined by this model. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an axiom NOT defined by this model. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } if (store.isStable()) { store = reopenStore(store); final NoAxioms axioms2 = (NoAxioms)store.getAxioms(); assertSameAxioms(axioms, axioms2); // point test for an axiom NOT defined by this model. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an axiom NOT defined by this model. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } } finally { store.__tearDownUnitTest(); } } public void test_RdfsAxioms() { Properties properties = getProperties(); // override the default axiom model. properties.setProperty(Options.AXIOMS_CLASS, RdfsAxioms.class.getName()); AbstractTripleStore store = getStore(properties); try { // // store is empty. // assertEquals(0, store.getStatementCount()); final BigdataValueFactory f = store.getValueFactory(); final BigdataURI rdfType = f.asValue(RDF.TYPE); final BigdataURI rdfProperty = f.asValue(RDF.PROPERTY); final BigdataURI unknownURI = f.createURI("http://www.bigdata.com/unknown"); // resolve term ids. store.addTerms(new BigdataValue[] { rdfType, rdfProperty, unknownURI }); final RdfsAxioms axioms = (RdfsAxioms)store.getAxioms(); final int naxioms = axioms.size(); // store contains the axioms. assertEquals(naxioms, store.getStatementCount()); // point test for an axiom. assertTrue(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); // verify (de-)serialization. { final Axioms axioms2 = doRoundTripTest(axioms); // point test for an axiom. assertTrue(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } if (store.isStable()) { store = reopenStore(store); final RdfsAxioms axioms2 = (RdfsAxioms)store.getAxioms(); assertSameAxioms(axioms, axioms2); // point test for an axiom. assertTrue(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } } finally { store.__tearDownUnitTest(); } } public void test_OwlAxioms() { Properties properties = getProperties(); // override the default axiom model. properties.setProperty(com.bigdata.rdf.store.AbstractTripleStore.Options.AXIOMS_CLASS, OwlAxioms.class.getName()); AbstractTripleStore store = getStore(properties); try { // // store is empty. // assertEquals(0, store.getStatementCount()); final BigdataValueFactory f = store.getValueFactory(); final BigdataURI rdfType = f.asValue(RDF.TYPE); final BigdataURI rdfProperty = f.asValue(RDF.PROPERTY); final BigdataURI owlEquivalentClass = f.asValue(OWL.EQUIVALENTCLASS); final BigdataURI unknownURI = f.createURI("http://www.bigdata.com/unknown"); // resolve term ids. store.addTerms(new BigdataValue[] { rdfType, rdfProperty, owlEquivalentClass, unknownURI }); final OwlAxioms axioms = (OwlAxioms)store.getAxioms(); final int naxioms = axioms.size(); // store contains the axioms. assertEquals(naxioms, store.getStatementCount()); // point test for an RDFS axiom. assertTrue(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an OWL axiom. assertTrue(axioms.isAxiom(owlEquivalentClass.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); { // verify (de-)serialization. final Axioms axioms2 = doRoundTripTest(axioms); // point test for an RDFS axiom. assertTrue(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an OWL axiom. assertTrue(axioms2.isAxiom(owlEquivalentClass.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } if (store.isStable()) { store = reopenStore(store); final OwlAxioms axioms2 = (OwlAxioms)store.getAxioms(); assertSameAxioms(axioms, axioms2); // point test for an RDFS axiom. assertTrue(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for an OWL axiom. assertTrue(axioms2.isAxiom(owlEquivalentClass.getIV(), rdfType.getIV(), rdfProperty.getIV())); // point test for NOT an axiom. assertFalse(axioms2.isAxiom(rdfType.getIV(), rdfType.getIV(), unknownURI.getIV())); } } finally { store.__tearDownUnitTest(); } } /** * Test (de-)serialization of an axioms model. * * @return The de-serialized axioms. */ protected Axioms doRoundTripTest(final Axioms expected) { final byte[] data = SerializerUtil.serialize(expected); final Axioms actual = (Axioms) SerializerUtil.deserialize(data); assertSameAxioms(expected, actual); return actual; } protected void assertSameAxioms(final Axioms expected, final Axioms actual) { assertEquals("size", expected.size(), actual.size()); final Iterator itre = expected.axioms(); final Iterator itra = actual.axioms(); while (itre.hasNext()) { assertTrue(itra.hasNext()); final SPO spoe = itre.next(); final SPO spoa = itra.next(); if(log.isInfoEnabled()) { log.info(spoe.toString()); } assertEquals(spoe, spoa); } assertFalse(itra.hasNext()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy