package com.blazegraph.vocab.pubchem; import java.util.LinkedList; import java.util.Properties; import java.util.Random; import junit.framework.Test; import junit.framework.TestSuite; import com.bigdata.rdf.axioms.NoAxioms; import com.bigdata.rdf.model.BigdataStatement; import com.bigdata.rdf.model.BigdataURI; import com.bigdata.rdf.model.BigdataValueFactory; import com.bigdata.rdf.rio.StatementBuffer; import com.bigdata.rdf.sail.BigdataSail; import com.bigdata.rdf.store.AbstractTripleStore; import com.bigdata.rdf.store.AbstractTripleStore.Options; import com.bigdata.rdf.store.AbstractTripleStoreTestCase; public class TestPubchemVocabInlineUris extends AbstractTripleStoreTestCase { /** * Please set your database properties here, except for your journal file, * please DO NOT SPECIFY A JOURNAL FILE. */ @Override public Properties getProperties() { final Properties props = new Properties(super.getProperties()); /* * Turn off inference. */ props.setProperty(BigdataSail.Options.AXIOMS_CLASS, NoAxioms.class.getName()); props.setProperty(BigdataSail.Options.TRUTH_MAINTENANCE, "false"); props.setProperty(BigdataSail.Options.JUSTIFY, "false"); props.setProperty(BigdataSail.Options.TEXT_INDEX, "false"); return props; } public void test_PubChemInlineValues() { final Properties properties = getProperties(); // Test with PubChem Vocabulary properties.setProperty(Options.VOCABULARY_CLASS, PubChemVocabulary.class.getName()); // Test with PubChem InlineURIHandler properties.setProperty(Options.INLINE_URI_FACTORY_CLASS, PubChemInlineURIFactory.class.getName()); // test w/o axioms - they imply a predefined vocab. properties.setProperty(Options.AXIOMS_CLASS, NoAxioms.class.getName()); // test w/o the full text index. properties.setProperty(Options.TEXT_INDEX, "false"); AbstractTripleStore store = getStore(properties); try { final BigdataValueFactory vf = store.getValueFactory(); final LinkedList<BigdataURI> uriList = new LinkedList<BigdataURI>(); Random rand = new Random(); final StatementBuffer<BigdataStatement> sb = new StatementBuffer<BigdataStatement>( store, PubChemInlineURIFactory.uris.length/* capacity */); BigdataURI pred = vf.createURI("http://semanticscience.org/resource/CHEMINF_000461"); BigdataURI obj = vf.createURI("http://rdf.ncbi.nlm.nih.gov/pubchem/compound/CID1726184"); for (int i = 0; i < PubChemInlineURIFactory.uris.length; i++) { final String uriStr = PubChemInlineURIFactory.uris[i]; final String prefix = PubChemInlineURIFactory.localNames[i]; final int test = rand.nextInt(999999); final BigdataURI uri = vf.createURI(uriStr+prefix+test); uriList.push(uri); sb.add(uri, pred, obj); } for (int i = 0; i < PubChemInlineURIFactory.descriptorSuffix.length; i++) { final String uriStr = PubChemInlineURIFactory.descriptorNS; final String prefix = PubChemInlineURIFactory.descriptorPrefix; final String suffix = PubChemInlineURIFactory.descriptorSuffix[i]; final int test = rand.nextInt(999999); final BigdataURI uri = vf.createURI(uriStr+prefix+test+suffix); uriList.push(uri); sb.add(uri, pred, obj); } { //Add the fixed width ones // http://www.bioassayontology.org/bao#BAO_0002877 fixed width 7 BigdataURI uri = null; uri = vf.createURI("http://www.bioassayontology.org/bao#BAO_002877"); uriList.push(uri); sb.add(uri, pred, obj); // http://purl.obolibrary.org/obo/PR_000005253 //fixed width 9 uri = vf.createURI("http://purl.obolibrary.org/obo/PR_000005253"); uriList.push(uri); sb.add(uri, pred, obj); // http://purl.obolibrary.org/obo/IAO_0000136 //fixed width 7 uri = vf.createURI("http://purl.obolibrary.org/obo/IAO_0000136"); uriList.push(uri); sb.add(uri, pred, obj); // http://purl.obolibrary.org/obo/OBI_0000299 //fixed width 7 uri = vf.createURI("http://purl.obolibrary.org/obo/OBI_0000299"); uriList.push(uri); sb.add(uri, pred, obj); //http://purl.obolibrary.org/obo/CHEBI_74763 uri = vf.createURI("http://purl.obolibrary.org/obo/CHEBI_74763"); uriList.push(uri); sb.add(uri, pred, obj); } sb.flush(); store.commit(); if (log.isDebugEnabled()) log.debug(store.dumpStore()); for (final BigdataURI uri: uriList ) { if(log.isDebugEnabled()) { log.debug("Checking " + uri.getNamespace() + " "+ uri.getLocalName() + " inline: " + uri.getIV().isInline()); } assertTrue(uri.getIV().isInline()); } } finally { store.__tearDownUnitTest(); } } public static Test suite() { final TestSuite suite = new TestSuite("PubChemVocabulary Inline URI Testing"); suite.addTestSuite(TestPubchemVocabInlineUris.class); return suite; } }