// BridgeDb,
// An abstraction layer for identifier mapping services, both local and online.
//
// Copyright 2006-2009 BridgeDb developers
// Copyright 2012-2013 Christian Y. A. Brenninkmeijer
// Copyright 2012-2013 OpenPhacts
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
package org.bridgedb.uri;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Set;
import org.bridgedb.DataSource;
import org.bridgedb.sql.transative.DirectMapping;
import org.bridgedb.statistics.MappingSetInfo;
import org.bridgedb.uri.api.Mapping;
import org.bridgedb.uri.tools.StatementMaker;
import org.junit.Test;
import org.openrdf.model.Model;
import org.openrdf.model.Statement;
import org.openrdf.model.URI;
import org.openrdf.model.impl.TreeModel;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.rio.RDFFormat;
import org.openrdf.rio.RDFHandlerException;
import org.openrdf.rio.Rio;
/**
* Tests the UriMapper interface (and by loading the UriListener interface)
*
* Should be passable by any implementation of UriMapper that has the test data loaded.
*
* @author Christian
*/
public abstract class UriMapperRdfTest extends UriListenerTest{
public static final String NULL_GRAPH = null;
public static final Set<String> NULL_PATTERNS = null;
public static final Set<DataSource> NO_TARGET_DATASOURCE = null;
public static final Boolean DEFAULT_IGNORE_XREF = null;
public static final String NULL_LENS = null;
public static StatementMaker statementMaker;
URI mappingSet1 = new URIImpl("http://example.com/testBasemappingSetRDF/1");
URI linksetJustification = new URIImpl("http://openphacts.cs.man.ac.uk:9090/ontology/DataSource.owl#linksetJustification");
URI inChlKey = new URIImpl("http://semanticscience.org/resource/CHEMINF_000059");
URI importedFrom = new URIImpl("http://purl.org/pav/importedFrom");
URI derivedFrom = new URIImpl("http://purl.org/pav/derivedFrom");
URI example1to2 = new URIImpl("http://example.com/1to2");
URI linkPredicate = new URIImpl("http://rdfs.org/ns/void#linkPredicate");
URI exactMatch = new URIImpl("http://www.w3.org/2004/02/skos/core#exactMatch");
URI sameAs = new URIImpl("http://www.w3.org/2002/07/owl#sameAs");
URI concept = new URIImpl("http://www.conceptwiki.org/concept/f25a234e-df03-419f-8504-cde8689a4d1f");
URI override = new URIImpl("http://example.com/override");
public void checkMapping(Mapping mapping){
if (!mapping.isMappingToSelf()){
for (Mapping via:mapping.getViaMappings()){
checkMapping(via);
}
checkDirect((DirectMapping)mapping);
}
}
protected void checkDirect(Mapping mapping) {
assertNotNull(mapping.getMappingSource());
}
@Test
public void testMapSetInfo1() throws Exception {
report("MapSetInfo1");
MappingSetInfo info = uriMapper.getMappingSetInfo(1);
Set<Statement> rdf = statementMaker.asRDF(info, "http://example.com/testBase", "http://example.com/testContext");
Model m = asModel(rdf);
assertTrue(m.contains(null, linkPredicate, exactMatch));
assertTrue(m.contains(null, importedFrom, null));
// Disabled - not true when testing against
// https://github.com/bridgedb/BridgeDb/blob/OpenPHACTS/develop/org.bridgedb.uri.loader/test-data/cw-cs.ttl
// in ImsMapperRdfTest
//assertTrue(m.contains(null, linksetJustification, null));
}
private Model asModel(Set<Statement> rdf) throws RDFHandlerException {
Model m = new TreeModel(rdf);
Rio.write(m, System.out, RDFFormat.TRIG);
return m;
}
@Test
public void testMappingNoLink() throws Exception {
report("MapSetInfoNoLink");
Set<Mapping> mappings = uriMapper.mapFull(map1Uri1, null, false, null, null);
Set<Statement> rdf = statementMaker.asRDF(mappings, "http://example.com/testContext", false, null);
Model m = asModel(rdf);
assertTrue(m.contains(concept, sameAs, new URIImpl("http://www.conceptwiki.org/concept/index/f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, sameAs, new URIImpl("http://www.conceptwiki.org/web-ws/concept/get?uuid=f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://info.identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/Compounds/Get/8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc-us.org/OPS8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/OPS8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/OPS8/rdf")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://rdf.chemspider.com/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.html")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.rdf")));
}
@Test
public void testMappingNoLinkFixedPredicate() throws Exception {
report("MapSetInfoNoLinkFixedPredicate");
Set<Mapping> mappings = uriMapper.mapFull(map1Uri1, null, false, null, null);
Set<Statement> rdf = statementMaker.asRDF(mappings, "http://example.com/testContext", true, "http://example.com/override");
Model m = asModel(rdf);
assertTrue(m.contains(concept, override, new URIImpl("http://www.conceptwiki.org/concept/index/f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.conceptwiki.org/web-ws/concept/get?uuid=f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, override, new URIImpl("http://identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://info.identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/Compounds/Get/8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc-us.org/OPS8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/OPS8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/OPS8/rdf")));
assertTrue(m.contains(concept, override, new URIImpl("http://rdf.chemspider.com/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.html")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.rdf")));
URI mapSet1Override = new URIImpl("http://example.com/testContextmappingSetRDF/1?predicate=http%3A%2F%2Fexample.com%2Foverride");
URI mapSet1_3Override = new URIImpl("http://example.com/testContextmappingSetRDF/1_3?predicate=http%3A%2F%2Fexample.com%2Foverride");
URI example1to2 = new URIImpl("http://example.com/1to2");
URI example2to3 = new URIImpl("http://example.com/2to3");
// FIXME: Exactly how should the provenance chains go here?
// URIImpl mapset1 = new URIImpl("http://example.com/testContextmappingSetRDF/1");
// assertTrue(m.contains(mapSet1Override, derivedFrom, mapset1));
// assertTrue(m.contains(mapset1, derivedFrom, example1to2));
//
// URIImpl mapset1_3 = new URIImpl("http://example.com/testContextmappingSetRDF/1_3");
// assertTrue(m.contains(mapSet1_3Override, derivedFrom, mapset1_3));
// assertTrue(m.contains(mapset1_3, derivedFrom, example1to2));
// assertTrue(m.contains(mapset1_3, derivedFrom, example2to3));
}
@Test
public void testMappingWithLink() throws Exception {
report("MapSetInfoWithLink");
Set<Mapping> mappings = uriMapper.mapFull(map1Uri1, null, true, null, null);
Set<Statement> rdf = statementMaker.asRDF(mappings, "http://example.com/testContext", false, "http://example.com/override");
Model m = asModel(rdf);
assertTrue(m.contains(concept, override, new URIImpl("http://www.conceptwiki.org/concept/index/f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.conceptwiki.org/web-ws/concept/get?uuid=f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, override, new URIImpl("http://identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://info.identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/Compounds/Get/8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc-us.org/OPS8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/OPS8")));
assertTrue(m.contains(concept, override, new URIImpl("http://ops.rsc.org/OPS8/rdf")));
assertTrue(m.contains(concept, override, new URIImpl("http://rdf.chemspider.com/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.html")));
assertTrue(m.contains(concept, override, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.rdf")));
}
@Test
public void testMappingWithLinkOverride() throws Exception {
report("MapSetInfoWithLink");
Set<Mapping> mappings = uriMapper.mapFull(map1Uri1, null, true, null, null);
Set<Statement> rdf = statementMaker.asRDF(mappings, "http://example.com/testContext", false, null);
Model m = asModel(rdf);
assertTrue(m.contains(concept, sameAs, new URIImpl("http://www.conceptwiki.org/concept/index/f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, sameAs, new URIImpl("http://www.conceptwiki.org/web-ws/concept/get?uuid=f25a234e-df03-419f-8504-cde8689a4d1f")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://info.identifiers.org/chemspider/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/Compounds/Get/8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc-us.org/OPS8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/OPS8")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://ops.rsc.org/OPS8/rdf")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://rdf.chemspider.com/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.html")));
assertTrue(m.contains(concept, exactMatch, new URIImpl("http://www.chemspider.com/Chemical-Structure.28509384.rdf")));
}
}