/** * PODD is an OWL ontology database used for scientific project management * * Copyright (C) 2009-2013 The University Of Queensland * * This program is free software: you can redistribute it and/or modify it under the terms of the * GNU Affero General Public License as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * 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 * Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License along with this program. * If not, see <http://www.gnu.org/licenses/>. */ /** * */ package com.github.podd.utils.test; import java.io.InputStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.openrdf.model.Model; import org.openrdf.model.URI; import org.openrdf.model.ValueFactory; import org.openrdf.model.impl.LinkedHashModel; import org.openrdf.model.vocabulary.OWL; import org.openrdf.model.vocabulary.RDF; import org.openrdf.rio.RDFFormat; import org.openrdf.rio.RDFHandler; import org.openrdf.rio.Rio; import org.openrdf.rio.helpers.StatementCollector; import org.semanticweb.owlapi.model.IRI; import org.semanticweb.owlapi.model.OWLOntologyID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.github.podd.exception.SchemaManifestException; import com.github.podd.utils.InferredOWLOntologyID; import com.github.podd.utils.OntologyUtils; import com.github.podd.utils.PODD; /** * Test for OntologyUtils class that translates between RDF and InferredOWLOntologyID instances. * * @author Peter Ansell p_ansell@yahoo.com */ public class OntologyUtilsTest { private final Logger log = LoggerFactory.getLogger(this.getClass()); private final ValueFactory vf = PODD.VF; private ConcurrentMap<URI, Set<URI>> importsMap; private void assertA1B2C3(final ConcurrentMap<URI, Set<URI>> nextImportsMap) { Assert.assertEquals(5, nextImportsMap.size()); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testVersionUriA1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testVersionUriB1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testVersionUriB2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testVersionUriC1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testVersionUriC3)); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testVersionUriA1).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testVersionUriB1).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testVersionUriB2).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testVersionUriC1).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testVersionUriC3).size()); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriB1).contains( OntologyConstant.testVersionUriA1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriB2).contains( OntologyConstant.testVersionUriA1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriC1).contains( OntologyConstant.testVersionUriA1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriC1).contains( OntologyConstant.testVersionUriB1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriC3).contains( OntologyConstant.testVersionUriA1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testVersionUriC3).contains( OntologyConstant.testVersionUriB2)); } private void assertRealisticImportsMapV2(final ConcurrentMap<URI, Set<URI>> nextImportsMap) { Assert.assertEquals(12, nextImportsMap.size()); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddScienceUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddScienceUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddPlantUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddPlantUriV2)); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testPoddDcUriV1).size()); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testPoddDcUriV2).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testPoddFoafUriV1).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testPoddFoafUriV2).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testPoddUserUriV1).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testPoddUserUriV2).size()); Assert.assertEquals(3, nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).size()); Assert.assertEquals(3, nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).size()); Assert.assertEquals(4, nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).size()); Assert.assertEquals(4, nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).size()); Assert.assertEquals(5, nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).size()); Assert.assertEquals(5, nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).size()); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddFoafUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddFoafUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddScienceUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddScienceUriV2)); } private void assertRealisticImportsMapV3(final ConcurrentMap<URI, Set<URI>> nextImportsMap) { Assert.assertEquals(22, nextImportsMap.size()); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddFoafUriV3)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddUserUriV3)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddBaseUriV3)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddScienceUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddScienceUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddScienceUriV3)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddPlantUriV1)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddPlantUriV2)); Assert.assertTrue(nextImportsMap.containsKey(OntologyConstant.testPoddPlantUriV3)); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testPoddDcUriV1).size()); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testPoddDcUriV2).size()); Assert.assertEquals(0, nextImportsMap.get(OntologyConstant.testPoddDcUriV3).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testPoddFoafUriV1).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testPoddFoafUriV2).size()); Assert.assertEquals(1, nextImportsMap.get(OntologyConstant.testPoddFoafUriV3).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testPoddUserUriV1).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testPoddUserUriV2).size()); Assert.assertEquals(2, nextImportsMap.get(OntologyConstant.testPoddUserUriV3).size()); Assert.assertEquals(3, nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).size()); Assert.assertEquals(3, nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).size()); Assert.assertEquals(3, nextImportsMap.get(OntologyConstant.testPoddBaseUriV3).size()); Assert.assertEquals(4, nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).size()); Assert.assertEquals(6, nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).size()); Assert.assertEquals(4, nextImportsMap.get(OntologyConstant.testPoddScienceUriV3).size()); Assert.assertEquals(5, nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).size()); Assert.assertEquals(7, nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).size()); Assert.assertEquals(5, nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).size()); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddFoafUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddFoafUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddFoafUriV3).contains( OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV3).contains( OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddUserUriV3).contains( OntologyConstant.testPoddFoafUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV3).contains( OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV3).contains( OntologyConstant.testPoddFoafUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddBaseUriV3).contains( OntologyConstant.testPoddUserUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV3).contains( OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV3).contains( OntologyConstant.testPoddFoafUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV3).contains( OntologyConstant.testPoddUserUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV1).contains( OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV2).contains( OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddScienceUriV3).contains( OntologyConstant.testPoddBaseUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddDcUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddDcUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).contains( OntologyConstant.testPoddDcUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddFoafUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddFoafUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).contains( OntologyConstant.testPoddFoafUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddUserUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddUserUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).contains( OntologyConstant.testPoddUserUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddBaseUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddBaseUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).contains( OntologyConstant.testPoddBaseUriV3)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV1).contains( OntologyConstant.testPoddScienceUriV1)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV2).contains( OntologyConstant.testPoddScienceUriV2)); Assert.assertTrue(nextImportsMap.get(OntologyConstant.testPoddPlantUriV3).contains( OntologyConstant.testPoddScienceUriV3)); } @Before public void setUp() throws Exception { this.importsMap = new ConcurrentHashMap<>(); } @Test public final void testGetArtifactImportsNoImports() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(0, imports.size()); Assert.assertTrue(imports.isEmpty()); } @Test public final void testGetArtifactImportsNonExistent() throws Exception { final Model model = new LinkedHashModel(); try { OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.fail("Did not find expected exception"); } catch(final SchemaManifestException e) { } } @Test public final void testGetArtifactImportsNullArtifact() throws Exception { final Model model = new LinkedHashModel(); try { OntologyUtils.artifactImports(null, model); Assert.fail("Did not find expected exception"); } catch(final NullPointerException e) { } } @Test public final void testGetArtifactImportsNullModel() throws Exception { try { OntologyUtils.artifactImports(OntologyConstant.testOntologyID, null); Assert.fail("Did not find expected exception"); } catch(final NullPointerException e) { } } @Test public final void testGetArtifactImportsOneImport() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testOntologyUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(1, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); } @Test public final void testGetArtifactImportsOneImportNonTransitiveSingle() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testOntologyUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(1, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); } @Test public final void testGetArtifactImportsOneImportTransitiveDouble() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testOntologyUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri3, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri3); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(3, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID2)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID3)); Assert.assertEquals(OntologyConstant.testImportOntologyID3, imports.get(0)); Assert.assertEquals(OntologyConstant.testImportOntologyID2, imports.get(1)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, imports.get(2)); } @Test public final void testGetArtifactImportsOneImportTransitiveDoubleDouble() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testOntologyUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri4); model.add(OntologyConstant.testImportOntologyUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri3, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri4, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri4); model.add(OntologyConstant.testImportVersionUri4, RDF.TYPE, OWL.ONTOLOGY); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(4, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID2)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID3)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID4)); Assert.assertTrue(imports.indexOf(OntologyConstant.testImportOntologyID2) > imports .indexOf(OntologyConstant.testImportOntologyID4)); Assert.assertTrue(imports.indexOf(OntologyConstant.testImportOntologyID1) > imports .indexOf(OntologyConstant.testImportOntologyID2)); Assert.assertTrue(imports.indexOf(OntologyConstant.testImportOntologyID2) > imports .indexOf(OntologyConstant.testImportOntologyID3)); // NOTE: First two positions are not consistent, so only testing the last two Assert.assertEquals(OntologyConstant.testImportOntologyID2, imports.get(2)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, imports.get(3)); } @Test public final void testGetArtifactImportsOneImportTransitiveSingle() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testOntologyUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(2, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID2)); Assert.assertEquals(OntologyConstant.testImportOntologyID2, imports.get(0)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, imports.get(1)); } @Test public final void testGetArtifactImportsOneImportVersion() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(1, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); } @Test public final void testGetArtifactImportsOneImportVersionTransitiveDoubleDouble() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri3, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportOntologyUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri4, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri4); model.add(OntologyConstant.testImportVersionUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri4); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); Assert.assertEquals(4, imports.size()); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID2)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID3)); Assert.assertTrue(imports.contains(OntologyConstant.testImportOntologyID4)); // NOTE: First two positions are not consistent, so only testing the last two Assert.assertEquals(OntologyConstant.testImportOntologyID2, imports.get(2)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, imports.get(3)); } @Test public void testGetArtifactImportsRealistic() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/artifacts/artifact-imports-test.nq"), "", RDFFormat.NQUADS); model.addAll(Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE)); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); // this.log.info("Imports: {}", imports); Assert.assertTrue(imports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertEquals(5, imports.size()); } @Test public void testGetArtifactImportsRealisticInra() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/artifacts/artifact-imports-test.nq"), "", RDFFormat.NQUADS); model.addAll(Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest-inra.ttl"), "", RDFFormat.TURTLE)); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); // this.log.info("Imports: {}", imports); Assert.assertTrue(imports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertEquals(5, imports.size()); } @Test public void testGetArtifactImportsRealisticInraV2() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/artifacts/artifact-imports-test-V2.nq"), "", RDFFormat.NQUADS); model.addAll(Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest-inra.ttl"), "", RDFFormat.TURTLE)); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); // this.log.info("Imports: {}", imports); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaEventV2)); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaObjectV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertEquals(7, imports.size()); } @Test public void testGetArtifactImportsRealisticInraVersion2() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/artifacts/artifact-imports-test-inra.nq"), "", RDFFormat.NQUADS); model.addAll(Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest-inra.ttl"), "", RDFFormat.TURTLE)); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); // this.log.info("Imports: {}", imports); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaEventV2)); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaObjectV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertEquals(7, imports.size()); } @Test public void testGetArtifactImportsRealisticNewProjectVersion2() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/artifacts/artifact-new-project-test.nq"), "", RDFFormat.NQUADS); model.addAll(Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest-inra.ttl"), "", RDFFormat.TURTLE)); // DebugUtils.printContents(model); final List<OWLOntologyID> imports = OntologyUtils.artifactImports(OntologyConstant.testOntologyID, model); // this.log.info("Imports: {}", imports); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaEventV2)); Assert.assertTrue(imports.contains(OntologyConstant.testMisteaObjectV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(imports.contains(OntologyConstant.testPoddPlantV2)); Assert.assertEquals(8, imports.size()); } @Test public void testImportsOrderFourLevels() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri3, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportOntologyUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri4, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri4); model.add(OntologyConstant.testImportVersionUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri3, OWL.IMPORTS, OntologyConstant.testImportVersionUri4); final Set<URI> schemaOntologyUris = new LinkedHashSet<URI>(); final Set<URI> schemaVersionUris = new LinkedHashSet<URI>(); schemaOntologyUris.add(OntologyConstant.testOntologyUri1); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri1); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri2); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri3); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri4); schemaVersionUris.add(OntologyConstant.testVersionUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri2); schemaVersionUris.add(OntologyConstant.testImportVersionUri3); schemaVersionUris.add(OntologyConstant.testImportVersionUri4); final ConcurrentMap<URI, Set<URI>> importsMap = new ConcurrentHashMap<URI, Set<URI>>(); // Expected output solution from importsMap after calling orderImports // importsMap.put(testVersionUri1, // Collections.singleton(OntologyConstant.testImportVersionUri1)); // importsMap.put(testImportVersionUri1, // Collections.singleton(OntologyConstant.testImportVersionUri2)); // importsMap.put(testImportVersionUri2, // Collections.singleton(OntologyConstant.testImportVersionUri3)); // importsMap.put(testImportVersionUri3, new // HashSet<URI>(Arrays.asList(OntologyConstant.testImportVersionUri4))); // importsMap.put(testImportVersionUri4, new HashSet<URI>()); final List<URI> orderImports = OntologyUtils.orderImports(model, schemaOntologyUris, schemaVersionUris, importsMap, false); Assert.assertEquals(5, orderImports.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri4, orderImports.get(0)); Assert.assertEquals(OntologyConstant.testImportVersionUri3, orderImports.get(1)); Assert.assertEquals(OntologyConstant.testImportVersionUri2, orderImports.get(2)); Assert.assertEquals(OntologyConstant.testImportVersionUri1, orderImports.get(3)); Assert.assertEquals(OntologyConstant.testVersionUri1, orderImports.get(4)); Assert.assertEquals(5, importsMap.size()); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri4)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testVersionUri1)); final Set<URI> imports4 = importsMap.get(OntologyConstant.testImportVersionUri4); Assert.assertNotNull(imports4); Assert.assertEquals(0, imports4.size()); final Set<URI> imports3 = importsMap.get(OntologyConstant.testImportVersionUri3); Assert.assertNotNull(imports3); Assert.assertEquals(1, imports3.size()); Assert.assertTrue(imports3.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> imports2 = importsMap.get(OntologyConstant.testImportVersionUri2); Assert.assertNotNull(imports2); Assert.assertEquals(2, imports2.size()); Assert.assertTrue(imports2.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(imports2.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> imports1 = importsMap.get(OntologyConstant.testImportVersionUri1); Assert.assertNotNull(imports1); Assert.assertEquals(3, imports1.size()); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> importsRoot = importsMap.get(OntologyConstant.testVersionUri1); Assert.assertNotNull(importsRoot); Assert.assertEquals(4, importsRoot.size()); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri4)); } @Test public void testImportsOrderFourLevelsOutOfOrder() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri2, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportVersionUri2, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri2); model.add(OntologyConstant.testImportOntologyUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri3, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportVersionUri3, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri2, OWL.IMPORTS, OntologyConstant.testImportVersionUri3); model.add(OntologyConstant.testImportOntologyUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri4, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri4); model.add(OntologyConstant.testImportVersionUri4, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportVersionUri3, OWL.IMPORTS, OntologyConstant.testImportVersionUri4); final Set<URI> schemaOntologyUris = new LinkedHashSet<URI>(); final Set<URI> schemaVersionUris = new LinkedHashSet<URI>(); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri2); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri4); schemaOntologyUris.add(OntologyConstant.testOntologyUri1); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri3); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri2); schemaVersionUris.add(OntologyConstant.testImportVersionUri4); schemaVersionUris.add(OntologyConstant.testVersionUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri3); schemaVersionUris.add(OntologyConstant.testImportVersionUri1); final ConcurrentMap<URI, Set<URI>> importsMap = new ConcurrentHashMap<URI, Set<URI>>(); final List<URI> orderImports = OntologyUtils.orderImports(model, schemaOntologyUris, schemaVersionUris, importsMap, false); Assert.assertEquals(5, orderImports.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri4, orderImports.get(0)); Assert.assertEquals(OntologyConstant.testImportVersionUri3, orderImports.get(1)); Assert.assertEquals(OntologyConstant.testImportVersionUri2, orderImports.get(2)); Assert.assertEquals(OntologyConstant.testImportVersionUri1, orderImports.get(3)); Assert.assertEquals(OntologyConstant.testVersionUri1, orderImports.get(4)); Assert.assertEquals(5, importsMap.size()); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri4)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testVersionUri1)); final Set<URI> imports4 = importsMap.get(OntologyConstant.testImportVersionUri4); Assert.assertNotNull(imports4); Assert.assertEquals(0, imports4.size()); final Set<URI> imports3 = importsMap.get(OntologyConstant.testImportVersionUri3); Assert.assertNotNull(imports3); Assert.assertEquals(1, imports3.size()); Assert.assertTrue(imports3.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> imports2 = importsMap.get(OntologyConstant.testImportVersionUri2); Assert.assertNotNull(imports2); Assert.assertEquals(2, imports2.size()); Assert.assertTrue(imports2.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(imports2.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> imports1 = importsMap.get(OntologyConstant.testImportVersionUri1); Assert.assertNotNull(imports1); Assert.assertEquals(3, imports1.size()); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(imports1.contains(OntologyConstant.testImportVersionUri4)); final Set<URI> importsRoot = importsMap.get(OntologyConstant.testVersionUri1); Assert.assertNotNull(importsRoot); Assert.assertEquals(4, importsRoot.size()); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri2)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri3)); Assert.assertTrue(importsRoot.contains(OntologyConstant.testImportVersionUri4)); } @Test public void testImportsOrderOneLevel() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); final Set<URI> schemaOntologyUris = new HashSet<URI>(); final Set<URI> schemaVersionUris = new HashSet<URI>(); schemaOntologyUris.add(OntologyConstant.testOntologyUri1); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri1); schemaVersionUris.add(OntologyConstant.testVersionUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri1); final ConcurrentMap<URI, Set<URI>> importsMap = new ConcurrentHashMap<URI, Set<URI>>(); // Expected output solution from importsMap after calling orderImports // importsMap.put(testVersionUri1, // Collections.singleton(OntologyConstant.testImportVersionUri1)); // importsMap.put(testImportVersionUri1, new HashSet<URI>()); final List<URI> orderImports = OntologyUtils.orderImports(model, schemaOntologyUris, schemaVersionUris, importsMap, false); Assert.assertEquals(2, orderImports.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri1, orderImports.get(0)); Assert.assertEquals(OntologyConstant.testVersionUri1, orderImports.get(1)); Assert.assertEquals(2, importsMap.size()); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testVersionUri1)); final Set<URI> imports1 = importsMap.get(OntologyConstant.testImportVersionUri1); Assert.assertNotNull(imports1); Assert.assertEquals(0, imports1.size()); final Set<URI> importsRoot = importsMap.get(OntologyConstant.testVersionUri1); Assert.assertNotNull(importsRoot); Assert.assertEquals(1, importsRoot.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri1, importsRoot.iterator().next()); } @Test public void testImportsOrderOneLevelOutOfOrder() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); final Set<URI> schemaOntologyUris = new LinkedHashSet<URI>(); final Set<URI> schemaVersionUris = new LinkedHashSet<URI>(); schemaOntologyUris.add(OntologyConstant.testImportOntologyUri1); schemaOntologyUris.add(OntologyConstant.testOntologyUri1); schemaVersionUris.add(OntologyConstant.testImportVersionUri1); schemaVersionUris.add(OntologyConstant.testVersionUri1); final ConcurrentMap<URI, Set<URI>> importsMap = new ConcurrentHashMap<URI, Set<URI>>(); // Expected output solution from importsMap after calling orderImports // importsMap.put(testVersionUri1, // Collections.singleton(OntologyConstant.testImportVersionUri1)); // importsMap.put(testImportVersionUri1, new HashSet<URI>()); final List<URI> orderImports = OntologyUtils.orderImports(model, schemaOntologyUris, schemaVersionUris, importsMap, false); Assert.assertEquals(2, orderImports.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri1, orderImports.get(0)); Assert.assertEquals(OntologyConstant.testVersionUri1, orderImports.get(1)); Assert.assertEquals(2, importsMap.size()); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testVersionUri1)); final Set<URI> imports1 = importsMap.get(OntologyConstant.testImportVersionUri1); Assert.assertNotNull(imports1); Assert.assertEquals(0, imports1.size()); final Set<URI> importsRoot = importsMap.get(OntologyConstant.testVersionUri1); Assert.assertNotNull(importsRoot); Assert.assertEquals(1, importsRoot.size()); Assert.assertEquals(OntologyConstant.testImportVersionUri1, importsRoot.iterator().next()); } @Test public void testImportsOrderZeroLevels() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); final Set<URI> schemaOntologyUris = new HashSet<URI>(); final Set<URI> schemaVersionUris = new HashSet<URI>(); schemaOntologyUris.add(OntologyConstant.testOntologyUri1); schemaVersionUris.add(OntologyConstant.testVersionUri1); final ConcurrentMap<URI, Set<URI>> importsMap = new ConcurrentHashMap<URI, Set<URI>>(); // Expected output solution from importsMap after calling orderImports // importsMap.put(testVersionUri1, new HashSet<URI>()); final List<URI> orderImports = OntologyUtils.orderImports(model, schemaOntologyUris, schemaVersionUris, importsMap, false); Assert.assertEquals(1, orderImports.size()); Assert.assertEquals(OntologyConstant.testVersionUri1, orderImports.get(0)); Assert.assertEquals(1, importsMap.size()); Assert.assertTrue(importsMap.containsKey(OntologyConstant.testVersionUri1)); final Set<URI> importsRoot = importsMap.get(OntologyConstant.testVersionUri1); Assert.assertNotNull(importsRoot); Assert.assertEquals(0, importsRoot.size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#modelToOntologyIDs(org.openrdf.model.Model)}. */ @Test public final void testModelToOntologyIDsEmpty() { final Model input = new LinkedHashModel(); final Collection<InferredOWLOntologyID> modelToOntologyIDs = OntologyUtils.modelToOntologyIDs(input); // No statements, should return an empty collection Assert.assertEquals(0, modelToOntologyIDs.size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#modelToOntologyIDs(org.openrdf.model.Model)}. */ @Test public final void testModelToOntologyIDsNoVersion() { final Model input = new LinkedHashModel(); input.add(this.vf.createStatement(OntologyConstant.testOntologyUri1, RDF.TYPE, OWL.ONTOLOGY)); final Collection<InferredOWLOntologyID> modelToOntologyIDs = OntologyUtils.modelToOntologyIDs(input); // Must have a version to be returned Assert.assertEquals(0, modelToOntologyIDs.size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#modelToOntologyIDs(org.openrdf.model.Model)}. */ @Test public final void testModelToOntologyIDsOneVersion() { final Model input = new LinkedHashModel(); input.add(this.vf.createStatement(OntologyConstant.testOntologyUri1, RDF.TYPE, OWL.ONTOLOGY)); input.add(this.vf.createStatement(OntologyConstant.testVersionUri1, RDF.TYPE, OWL.ONTOLOGY)); input.add(this.vf.createStatement(OntologyConstant.testOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testVersionUri1)); final Collection<InferredOWLOntologyID> modelToOntologyIDs = OntologyUtils.modelToOntologyIDs(input); // 1 ontology returned Assert.assertEquals(1, modelToOntologyIDs.size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerAnonymousOntology() throws Exception { final Model input = new LinkedHashModel(); OntologyUtils.ontologyIDsToHandler(Arrays.asList(OntologyConstant.owlid((IRI)null, null, null)), new StatementCollector(input)); Assert.assertTrue(input.isEmpty()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerEmptyNotNull() throws Exception { final Model input = new LinkedHashModel(); OntologyUtils.ontologyIDsToHandler(Collections.<InferredOWLOntologyID> emptyList(), new StatementCollector( input)); Assert.assertTrue(input.isEmpty()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerEmptyNull() throws Exception { OntologyUtils.ontologyIDsToHandler(Collections.<InferredOWLOntologyID> emptyList(), (RDFHandler)null); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerNoInferredIRI() throws Exception { final Model input = new LinkedHashModel(); OntologyUtils.ontologyIDsToHandler( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), IRI.create("urn:test:ontology:iri:abc:version:1"), null)), new StatementCollector(input)); Assert.assertEquals(3, input.size()); Assert.assertTrue(input.contains(null, RDF.TYPE, OWL.ONTOLOGY)); Assert.assertTrue(input.contains(null, OWL.VERSIONIRI, null)); Assert.assertEquals(2, input.filter(null, RDF.TYPE, OWL.ONTOLOGY).size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerNoVersionIRI() throws Exception { final Model input = new LinkedHashModel(); OntologyUtils.ontologyIDsToHandler( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), null, null)), new StatementCollector(input)); Assert.assertEquals(1, input.size()); Assert.assertTrue(input.contains(null, RDF.TYPE, OWL.ONTOLOGY)); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToHandler(java.util.Collection, org.openrdf.rio.RDFHandler)} * . * * @throws Exception */ @Test public final void testOntologyIDsToHandlerWithInferredIRI() throws Exception { final Model input = new LinkedHashModel(); OntologyUtils.ontologyIDsToHandler( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), IRI.create("urn:test:ontology:iri:abc:version:1"), IRI.create("urn:inferred:test:ontology:iri:abc:version:1:1"))), new StatementCollector(input)); Assert.assertEquals(5, input.size()); Assert.assertTrue(input.contains(null, RDF.TYPE, OWL.ONTOLOGY)); Assert.assertTrue(input.contains(null, OWL.VERSIONIRI, null)); Assert.assertTrue(input.contains(null, PODD.PODD_BASE_INFERRED_VERSION, null)); Assert.assertEquals(3, input.filter(null, RDF.TYPE, OWL.ONTOLOGY).size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelAnonymousOntology() throws Exception { final Model input = new LinkedHashModel(); final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.owlid((IRI)null, null, null)), input); Assert.assertNotNull(ontologyIDsToModel); Assert.assertEquals(input, ontologyIDsToModel); Assert.assertTrue(ontologyIDsToModel.isEmpty()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelEmptyNotNull() { final Model input = new LinkedHashModel(); final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel(Collections.<InferredOWLOntologyID> emptyList(), input); Assert.assertNotNull(ontologyIDsToModel); Assert.assertEquals(input, ontologyIDsToModel); Assert.assertTrue(ontologyIDsToModel.isEmpty()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelEmptyNull() { final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel(Collections.<InferredOWLOntologyID> emptyList(), (Model)null); Assert.assertNotNull(ontologyIDsToModel); Assert.assertTrue(ontologyIDsToModel.isEmpty()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelNoInferredIRI() { final Model input = new LinkedHashModel(); final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), IRI.create("urn:test:ontology:iri:abc:version:1"), null)), input); Assert.assertNotNull(ontologyIDsToModel); Assert.assertEquals(input, ontologyIDsToModel); Assert.assertEquals(3, ontologyIDsToModel.size()); Assert.assertTrue(ontologyIDsToModel.contains(null, RDF.TYPE, OWL.ONTOLOGY)); Assert.assertTrue(ontologyIDsToModel.contains(null, OWL.VERSIONIRI, null)); Assert.assertEquals(2, ontologyIDsToModel.filter(null, RDF.TYPE, OWL.ONTOLOGY).size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelNoVersionIRI() { final Model input = new LinkedHashModel(); final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), null, null)), input); Assert.assertNotNull(ontologyIDsToModel); Assert.assertEquals(input, ontologyIDsToModel); Assert.assertEquals(1, ontologyIDsToModel.size()); Assert.assertTrue(ontologyIDsToModel.contains(null, RDF.TYPE, OWL.ONTOLOGY)); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#ontologyIDsToModel(java.util.Collection, org.openrdf.model.Model)} * . */ @Test public final void testOntologyIDsToModelWithInferredIRI() { final Model input = new LinkedHashModel(); final Model ontologyIDsToModel = OntologyUtils.ontologyIDsToModel( Arrays.asList(OntologyConstant.owlid(IRI.create("urn:test:ontology:iri:abc"), IRI.create("urn:test:ontology:iri:abc:version:1"), IRI.create("urn:inferred:test:ontology:iri:abc:version:1:1"))), input); Assert.assertNotNull(ontologyIDsToModel); Assert.assertEquals(input, ontologyIDsToModel); Assert.assertEquals(5, ontologyIDsToModel.size()); Assert.assertTrue(ontologyIDsToModel.contains(null, RDF.TYPE, OWL.ONTOLOGY)); Assert.assertTrue(ontologyIDsToModel.contains(null, OWL.VERSIONIRI, null)); Assert.assertTrue(ontologyIDsToModel.contains(null, PODD.PODD_BASE_INFERRED_VERSION, null)); Assert.assertEquals(3, ontologyIDsToModel.filter(null, RDF.TYPE, OWL.ONTOLOGY).size()); } @Test public void testSchemaImportsA1() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testA1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(1, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsA1B1C1() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testA1, OntologyConstant.testB1, OntologyConstant.testC1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(3, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testC1)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB1, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testC1, schemaManifestImports.get(2)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsA1B1C3() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testA1, OntologyConstant.testB1, OntologyConstant.testC3)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(4, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testC3)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); // NOTE: The following three entries do not have a deterministic order in this case // If they start to break on another JVM, then comment them out // Assert.assertEquals(OntologyConstant.testB2, schemaManifestImports.get(1)); // Assert.assertEquals(OntologyConstant.testC3, schemaManifestImports.get(2)); // Assert.assertEquals(OntologyConstant.testB1, schemaManifestImports.get(3)); // Check the general ordering of B2 and C3 are correct. B1 only depends on A1 so it can be // anywhere except the first position Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testB2) < schemaManifestImports .indexOf(OntologyConstant.testC3)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsA1B2C3() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testA1, OntologyConstant.testB2, OntologyConstant.testC3)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(3, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testC3)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB2, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testC3, schemaManifestImports.get(2)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsB1() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testB1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB1)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB1, schemaManifestImports.get(1)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsB2() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testB2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB2)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB2, schemaManifestImports.get(1)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsC1() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testC1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(3, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testC1)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB1, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testC1, schemaManifestImports.get(2)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsC3() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/schema-manifest-a1b2c3.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testC3)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(3, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testA1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testB2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testC3)); Assert.assertEquals(OntologyConstant.testA1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testB2, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testC3, schemaManifestImports.get(2)); this.assertA1B2C3(this.importsMap); } @Test public void testSchemaImportsEmpty() throws Exception { final Model model = new LinkedHashModel(); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, Collections.<OWLOntologyID> emptySet(), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(0, schemaManifestImports.size()); Assert.assertEquals(0, this.importsMap.size()); } @Test public void testSchemaImportsOneLevel() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testOntologyID, OntologyConstant.testImportOntologyID1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testOntologyID)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testOntologyID, schemaManifestImports.get(1)); Assert.assertEquals(2, this.importsMap.size()); Assert.assertTrue(this.importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertTrue(this.importsMap.containsKey(OntologyConstant.testVersionUri1)); Assert.assertTrue(this.importsMap.get(OntologyConstant.testImportVersionUri1).isEmpty()); Assert.assertEquals(1, this.importsMap.get(OntologyConstant.testVersionUri1).size()); Assert.assertTrue(this.importsMap.get(OntologyConstant.testVersionUri1).contains( OntologyConstant.testImportVersionUri1)); } @Test public void testSchemaImportsOneLevelCurrentVersion() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); model.add(OntologyConstant.testVersionUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testVersionUri1, OWL.IMPORTS, OntologyConstant.testImportOntologyUri1); model.add(OntologyConstant.testImportOntologyUri1, RDF.TYPE, OWL.ONTOLOGY); model.add(OntologyConstant.testImportOntologyUri1, PODD.OMV_CURRENT_VERSION, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportOntologyUri1, OWL.VERSIONIRI, OntologyConstant.testImportVersionUri1); model.add(OntologyConstant.testImportVersionUri1, RDF.TYPE, OWL.ONTOLOGY); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testOntologyID, OntologyConstant.testImportOntologyID1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testOntologyID)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testImportOntologyID1)); Assert.assertEquals(OntologyConstant.testImportOntologyID1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testOntologyID, schemaManifestImports.get(1)); Assert.assertEquals(2, this.importsMap.size()); Assert.assertTrue(this.importsMap.containsKey(OntologyConstant.testVersionUri1)); Assert.assertTrue(this.importsMap.containsKey(OntologyConstant.testImportVersionUri1)); Assert.assertEquals(0, this.importsMap.get(OntologyConstant.testImportVersionUri1).size()); Assert.assertEquals(1, this.importsMap.get(OntologyConstant.testVersionUri1).size()); Assert.assertTrue(this.importsMap.get(OntologyConstant.testVersionUri1).contains( OntologyConstant.testImportVersionUri1)); } @Test public void testSchemaImportsRealisticPoddV1Base() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(4, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertEquals(OntologyConstant.testPoddDcV1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV1, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testPoddUserV1, schemaManifestImports.get(2)); Assert.assertEquals(OntologyConstant.testPoddBaseV1, schemaManifestImports.get(3)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV1DcFoaf() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV1, OntologyConstant.testPoddFoafV1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertEquals(OntologyConstant.testPoddDcV1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV1, schemaManifestImports.get(1)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV1Plant() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddPlantV1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(6, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddPlantV1)); Assert.assertEquals(OntologyConstant.testPoddDcV1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV1, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testPoddUserV1, schemaManifestImports.get(2)); Assert.assertEquals(OntologyConstant.testPoddBaseV1, schemaManifestImports.get(3)); Assert.assertEquals(OntologyConstant.testPoddScienceV1, schemaManifestImports.get(4)); Assert.assertEquals(OntologyConstant.testPoddPlantV1, schemaManifestImports.get(5)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV1V2AllToBaseInOrder() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV1, OntologyConstant.testPoddDcV2, OntologyConstant.testPoddFoafV1, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddUserV1, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddBaseV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(8, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); this.assertRealisticImportsMapV2(this.importsMap); } /** * Randomised test, to fuzz test the algorithm. * * @throws Exception */ @Test public void testSchemaImportsRealisticPoddV1V2AllToBaseRandomOrder() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); final List<OWLOntologyID> imports = new ArrayList<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddUserV1, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddFoafV1, OntologyConstant.testPoddBaseV2, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddDcV1, OntologyConstant.testPoddDcV2)); Collections.shuffle(imports); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new LinkedHashSet<OWLOntologyID>(imports), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(8, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV1V2AllToBaseReverseOrder() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddBaseV2, OntologyConstant.testPoddUserV1, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddFoafV1, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddDcV1, OntologyConstant.testPoddDcV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(8, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); this.assertRealisticImportsMapV2(this.importsMap); } /** * Randomised test, to fuzz test the algorithm. * * @throws Exception */ @Test public void testSchemaImportsRealisticPoddV1V2AllToPlantRandomOrder() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); final List<OWLOntologyID> imports = new ArrayList<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddUserV1, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddFoafV1, OntologyConstant.testPoddPlantV1, OntologyConstant.testPoddPlantV2, OntologyConstant.testPoddBaseV2, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddDcV1, OntologyConstant.testPoddDcV2, OntologyConstant.testPoddScienceV1, OntologyConstant.testPoddScienceV2)); // Randomise the order to fuzz test the algorithm Collections.shuffle(imports); // DebugUtils.printContents(model); final List<OWLOntologyID> result = OntologyUtils.schemaImports(model, new LinkedHashSet<OWLOntologyID>(imports), this.importsMap); Assert.assertNotNull(result); Assert.assertEquals(12, result.size()); Assert.assertTrue(result.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(result.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(result.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(result.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(result.contains(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(result.contains(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.contains(OntologyConstant.testPoddPlantV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV1) < result .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV1) < result .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV1) < result .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV1) < result .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV1) < result .indexOf(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV1) < result .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV1) < result .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV1) < result .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV1) < result .indexOf(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV1) < result .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV1) < result .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV1) < result .indexOf(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddBaseV1) < result .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddBaseV1) < result .indexOf(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddScienceV1) < result .indexOf(OntologyConstant.testPoddPlantV1)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV2) < result .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV2) < result .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV2) < result .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV2) < result .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddDcV2) < result .indexOf(OntologyConstant.testPoddPlantV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV2) < result .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV2) < result .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV2) < result .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddFoafV2) < result .indexOf(OntologyConstant.testPoddPlantV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV2) < result .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV2) < result .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddUserV2) < result .indexOf(OntologyConstant.testPoddPlantV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddBaseV2) < result .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddBaseV2) < result .indexOf(OntologyConstant.testPoddPlantV2)); Assert.assertTrue(result.indexOf(OntologyConstant.testPoddScienceV2) < result .indexOf(OntologyConstant.testPoddPlantV2)); this.assertRealisticImportsMapV2(this.importsMap); } /** * Randomised test, to fuzz test the algorithm. * * @throws Exception */ @Test public void testSchemaImportsRealisticPoddV1V2AllToScienceRandomOrder() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); final List<OWLOntologyID> imports = new ArrayList<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddUserV1, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddFoafV1, OntologyConstant.testPoddBaseV2, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddDcV1, OntologyConstant.testPoddDcV2, OntologyConstant.testPoddScienceV1, OntologyConstant.testPoddScienceV2)); Collections.shuffle(imports); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new LinkedHashSet<OWLOntologyID>(imports), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(10, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddBaseV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddBaseV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddScienceV2)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV1V2Base() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddBaseV1, OntologyConstant.testPoddBaseV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(8, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV1) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV1)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddDcV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddFoafV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.indexOf(OntologyConstant.testPoddUserV2) < schemaManifestImports .indexOf(OntologyConstant.testPoddBaseV2)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV2All() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV2, OntologyConstant.testPoddFoafV2, OntologyConstant.testPoddUserV2, OntologyConstant.testPoddBaseV2, OntologyConstant.testPoddScienceV2, OntologyConstant.testPoddPlantV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(6, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddPlantV2)); Assert.assertEquals(OntologyConstant.testPoddDcV2, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV2, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testPoddUserV2, schemaManifestImports.get(2)); Assert.assertEquals(OntologyConstant.testPoddBaseV2, schemaManifestImports.get(3)); Assert.assertEquals(OntologyConstant.testPoddScienceV2, schemaManifestImports.get(4)); Assert.assertEquals(OntologyConstant.testPoddPlantV2, schemaManifestImports.get(5)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV2DcFoaf() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV2, OntologyConstant.testPoddFoafV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertEquals(OntologyConstant.testPoddDcV2, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV2, schemaManifestImports.get(1)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV2DcPlant() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV2, OntologyConstant.testPoddPlantV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(6, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddPlantV2)); Assert.assertEquals(OntologyConstant.testPoddDcV2, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV2, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testPoddUserV2, schemaManifestImports.get(2)); Assert.assertEquals(OntologyConstant.testPoddBaseV2, schemaManifestImports.get(3)); Assert.assertEquals(OntologyConstant.testPoddScienceV2, schemaManifestImports.get(4)); Assert.assertEquals(OntologyConstant.testPoddPlantV2, schemaManifestImports.get(5)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticPoddV2Plant() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/test/test-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, new HashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddPlantV2)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(6, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddUserV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddBaseV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddScienceV2)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddPlantV2)); Assert.assertEquals(OntologyConstant.testPoddDcV2, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV2, schemaManifestImports.get(1)); Assert.assertEquals(OntologyConstant.testPoddUserV2, schemaManifestImports.get(2)); Assert.assertEquals(OntologyConstant.testPoddBaseV2, schemaManifestImports.get(3)); Assert.assertEquals(OntologyConstant.testPoddScienceV2, schemaManifestImports.get(4)); Assert.assertEquals(OntologyConstant.testPoddPlantV2, schemaManifestImports.get(5)); this.assertRealisticImportsMapV2(this.importsMap); } @Test public void testSchemaImportsRealisticV3PoddV2DcFoaf() throws Exception { final Model model = Rio.parse(this.getClass().getResourceAsStream("/default-podd-schema-manifest.ttl"), "", RDFFormat.TURTLE); // DebugUtils.printContents(model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports( model, new LinkedHashSet<OWLOntologyID>(Arrays.asList(OntologyConstant.testPoddDcV1, OntologyConstant.testPoddFoafV1)), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(2, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddDcV1)); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testPoddFoafV1)); Assert.assertEquals(OntologyConstant.testPoddDcV1, schemaManifestImports.get(0)); Assert.assertEquals(OntologyConstant.testPoddFoafV1, schemaManifestImports.get(1)); this.assertRealisticImportsMapV3(this.importsMap); } @Test public void testSchemaImportsZeroLevels() throws Exception { final Model model = new LinkedHashModel(); OntologyUtils.ontologyIDsToModel(Arrays.asList(OntologyConstant.testOntologyID), model); final List<OWLOntologyID> schemaManifestImports = OntologyUtils.schemaImports(model, Collections.singleton(OntologyConstant.testOntologyID), this.importsMap); Assert.assertNotNull(schemaManifestImports); Assert.assertEquals(1, schemaManifestImports.size()); Assert.assertTrue(schemaManifestImports.contains(OntologyConstant.testOntologyID)); Assert.assertEquals(1, this.importsMap.size()); Assert.assertTrue(this.importsMap.containsKey(OntologyConstant.testVersionUri1)); Assert.assertEquals(0, this.importsMap.get(OntologyConstant.testVersionUri1).size()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#stringToOntologyID(String, RDFFormat)}. */ @Test public final void testStringToOntologyIDsInRdfXml() throws Exception { final InputStream resourceStream = this.getClass().getResourceAsStream("/test/test-ontologyid-2.rdf"); final String rdfString = IOUtils.toString(resourceStream); final Collection<InferredOWLOntologyID> ontologyIDs = OntologyUtils.stringToOntologyID(rdfString, RDFFormat.RDFXML); Assert.assertEquals("Did not find any Ontology IDs", 1, ontologyIDs.size()); Assert.assertEquals("Version IRI did not match", "http://example.org/purl/c54fbaa5-0767-4f78-88b1-2509ff428f60/artifact:1:version:1", ontologyIDs .iterator().next().getVersionIRI().toString()); } /** * Test method for * {@link com.github.podd.utils.OntologyUtils#stringToOntologyID(String, RDFFormat)}. */ @Test public final void testStringToOntologyIDsInTurtle() throws Exception { final InputStream resourceStream = this.getClass().getResourceAsStream("/test/test-ontologyid-1.ttl"); final String rdfString = IOUtils.toString(resourceStream); final Collection<InferredOWLOntologyID> ontologyIDs = OntologyUtils.stringToOntologyID(rdfString, RDFFormat.TURTLE); Assert.assertEquals("Did not find any Ontology IDs", 1, ontologyIDs.size()); Assert.assertEquals("Version IRI did not match", "http://example.org/purl/91bb7bff-acd6-4b2e-abf7-ce74d3d91061/artifact:1:version:1", ontologyIDs .iterator().next().getVersionIRI().toString()); } }