@Override public void close() { if ( closed ) return ; closed = true ; tripleTable.close() ; quadTable.close() ; prefixes.close(); // Which will cause reuse to throw exceptions early. tripleTable = null ; quadTable = null ; prefixes = null ; }
/** Return a PrefixMapping for the unamed graph */ @Override public PrefixMapping getPrefixMapping() { return getPrefixMapping(unnamedGraphURI) ; }
@Override public void removeAllFromPrefixMap(String graphName) { Node g = NodeFactory.createURI(graphName) ; removeAll(g, null, null) ; }
@Test public void persistent2() { String dir = ConfigTest.getTestingDir() ; FileOps.clearDirectory(dir) ; DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap1 = prefixes.getPrefixMapping() ; pmap1.setNsPrefix("x", "http://foo/") ; prefixes.close() ; prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap2 = prefixes.getPrefixMapping() ; String uri = pmap2.getNsPrefixURI("x"); assertEquals("http://foo/", uri) ; prefixes.close() ; }
@Override public void sync() { tripleTable.sync() ; quadTable.sync() ; prefixes.sync() ; }
DatasetPrefixesTDB prefixes = dsg.getPrefixes() ; NodeTupleTable pntt = prefixes.getNodeTupleTable() ; if ( ! dumpedNodeTables.contains(pntt.getNodeTable())) dumpedNodeTables.add(pntt.getNodeTable()) ; dumpTupleIndexes(prefixes.getNodeTupleTable().getTupleTable().getIndexes()) ;
@Override public void removeGraph(Node graphNode) { deleteAny(graphNode, Node.ANY, Node.ANY, Node.ANY) ; if ( graphNode.isURI() ) getPrefixes().removeAllFromPrefixMap(graphNode.getURI()); }
protected DatasetPrefixesTDB makePrefixTable(Location location, DatasetControl policy, StoreParams params) { String primary = params.getPrimaryIndexPrefix() ; String[] indexes = params.getPrefixIndexes() ; TupleIndex prefixIndexes[] = makeTupleIndexes(location, primary, indexes, new String[]{params.getIndexPrefix()}, params) ; if ( prefixIndexes.length != 1 ) error(log, "Wrong number of prefix table tuples indexes: " + prefixIndexes.length) ; String pnNode2Id = params.getPrefixNode2Id() ; String pnId2Node = params.getPrefixId2Node() ; // No cache - the prefix mapping is a cache NodeTable prefixNodes = makeNodeTableNoCache(location, pnNode2Id, pnId2Node, params) ; NodeTupleTable prefixTable = new NodeTupleTableConcrete(primary.length(), prefixIndexes, prefixNodes, policy) ; DatasetPrefixesTDB prefixes = new DatasetPrefixesTDB(prefixTable) ; log.debug("Prefixes: " + primary + " :: " + String.join(",", indexes)) ; return prefixes ; }
@Test public void persistent2() { String dir = ConfigTest.getTestingDir() ; FileOps.clearDirectory(dir) ; DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap1 = prefixes.getPrefixMapping() ; pmap1.setNsPrefix("x", "http://foo/") ; prefixes.close() ; prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap2 = prefixes.getPrefixMapping() ; String uri = pmap2.getNsPrefixURI("x"); assertEquals("http://foo/", uri) ; prefixes.close() ; }
@Override public void finishBulk() { writerTriples.flush() ; writerQuads.flush() ; nodeTable.sync() ; dsg.getPrefixes().sync() ; }
static void forceSync(DatasetGraphTDB dsg) { // Force sync - we have been bypassing DSG tables. // THIS DOES NOT WORK IF modules check for SYNC necessity. dsg.getTripleTable().getNodeTupleTable().getNodeTable().sync() ; dsg.getQuadTable().getNodeTupleTable().getNodeTable().sync() ; dsg.getQuadTable().getNodeTupleTable().getNodeTable().sync() ; dsg.getPrefixes().getNodeTupleTable().getNodeTable().sync() ; // This is not enough -- modules check whether sync needed. dsg.sync() ; } }
@Test public void persistent1() { String dir = ConfigTest.getTestingDir() ; FileOps.clearDirectory(dir) ; DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap1 = prefixes.getPrefixMapping() ; String x = pmap1.getNsPrefixURI("x") ; assertNull(x) ; prefixes.close() ; }
@Override protected PrefixMapping view() { return last.getPrefixMapping() ; }
@Override public void removeFromPrefixMap(String graphName, String prefix) { Node g = NodeFactory.createURI(graphName) ; Node p = NodeFactory.createLiteral(prefix) ; removeAll(g, p, null) ; }
@Test public void persistent1() { String dir = ConfigTest.getTestingDir() ; FileOps.clearDirectory(dir) ; DatasetPrefixesTDB prefixes = createTesting(Location.create(dir), new DatasetControlMRSW()) ; PrefixMapping pmap1 = prefixes.getPrefixMapping() ; String x = pmap1.getNsPrefixURI("x") ; assertNull(x) ; prefixes.close() ; }
@Override protected PrefixMapping view() { return last.getPrefixMapping() ; }
@Override public void prefix(String prefix, String iri) { dsg.getPrefixes().getPrefixMapping().setNsPrefix(prefix, iri) ; } }
@Override public void prefix(String prefix, String iri) { if ( graphName != null && graphName.isBlank() ) { loadLogger.warn("Prefixes for blank node graphs not stored") ; return ; } PrefixMapping pmap = (graphName == null) ? dsg.getPrefixes().getPrefixMapping() : dsg.getPrefixes().getPrefixMapping(graphName.getURI()) ; pmap.setNsPrefix(prefix, iri) ; }
@Override public void prefix(String prefix, String iri) { dsg.getPrefixes().getPrefixMapping().setNsPrefix(prefix, iri) ; }
@Test public void multiple2() { DatasetPrefixesTDB prefixes = createTestingMem() ; PrefixMapping pmap1 = prefixes.getPrefixMapping("http://graph/") ; // Same PrefixMapping pmap2 = prefixes.getPrefixMapping("http://graph/") ; pmap1.setNsPrefix("x", "http://foo/") ; assertNotNull(pmap2.getNsPrefixURI("x")) ; assertNotNull(pmap1.getNsPrefixURI("x")) ; }