@Override public void close() { loader = null; indexingDataset.close(); if(importFilter != null){ importFilter.close(); } } public void debug(){
/** Create a TDB graph using a specifc index builder - mainly for testing */ public static GraphTriplesTDB createGraph(IndexBuilder indexBuilder, Location location) { DatasetGraphTDB ds = _createDatasetGraph(indexBuilder, location, tripleIndexes, quadIndexes) ; return (GraphTriplesTDB)ds.getDefaultGraph() ; }
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() ; } }
DestinationTripleGraph(final DatasetGraphTDB dsg, RdfImportFilter importFilter, Logger log) { this.dsg = dsg ; startedEmpty = dsg.isEmpty() ; monitor = new LoadMonitor(dsg, log, "triples", BulkLoader.DataTickPoint, BulkLoader.IndexTickPoint) ; loaderTriples = new LoaderNodeTupleTable(dsg.getTripleTable().getNodeTupleTable(), "triples", monitor) ; if(importFilter == null){ this.importFilter = NO_FILTER; } else { this.importFilter = importFilter; } this.importLog = log; }
@Test public void load_graph_03() TDBLoader.load(dsg.getGraphTDB(g), DIR+"data-2.nt", false) ; assertEquals(0, dsg.getDefaultGraph().size()) ; assertEquals(1, dsg.getGraph(g).size()) ; List<Triple> x = Iter.toList(dsg.getDefaultGraph().find(null, null, null)) ; assertEquals(0, x.size()) ; x = Iter.toList(dsg.getGraph(g).find(null, null, null)) ; assertEquals(1, x.size()) ; x = Iter.toList(dsg.getGraph(g).find(s, null, null)) ; assertEquals(1, x.size()) ; x = Iter.toList(dsg.getGraph(g).find(null, p, null)) ; assertEquals(1, x.size()) ; x = Iter.toList(dsg.getGraph(g).find(null, null, o)) ; assertEquals(1, x.size()) ; List<Quad> z = Iter.toList(dsg.find(null, null, null, null)) ; assertEquals(1, z.size()) ; z = Iter.toList(dsg.find(g, null, null, null)) ; assertEquals(1, z.size()) ; z = Iter.toList(dsg.find(null, s, null, null)) ; assertEquals(1, z.size()) ; z = Iter.toList(dsg.find(null, null, p, null)) ; assertEquals(1, z.size()) ; z = Iter.toList(dsg.find(null, null, null, o)) ; assertEquals(1, z.size()) ;
@Test public void load_dataset_01() { DatasetGraphTDB dsg = TDBFactory.createDatasetGraph() ; TDBLoader.load(dsg, DIR+"data-1.nq", false) ; assertTrue(dsg.getDefaultGraph().isEmpty()) ; assertEquals(1, dsg.getGraph(g).size()) ; }
@Test public void load_graph_02() { DatasetGraphTDB dsg = TDBFactory.createDatasetGraph() ; TDBLoader.load(dsg.getDefaultGraphTDB(), DIR+"data-2.nt", false) ; assertEquals(1, dsg.getDefaultGraph().size()) ; }
private TripleTable createTripleTableMem() { DatasetGraphTDB ds = SetupTDB.buildDataset(Location.mem()) ; return ds.getTripleTable() ; } }
/** Create a filter to exclude the graph http://example/g2 */ private static Filter<Tuple<NodeId>> createFilter(Dataset ds) { DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ; final NodeTable nodeTable = dsg.getQuadTable().getNodeTupleTable().getNodeTable() ; final NodeId target = nodeTable.getNodeIdForNode(Node.createURI(graphToHide)) ; Filter<Tuple<NodeId>> filter = new Filter<Tuple<NodeId>>() { public boolean accept(Tuple<NodeId> item) { // Reverse the lookup as a demo //Node n = nodeTable.getNodeForNodeId(target) ; //System.err.println(item) ; if ( item.size() == 4 && item.get(0).equals(target) ) return false ; return true ; } } ; return filter ; }
/** Example setup - in-memory dataset with two graphs, one triple in each */ private static Dataset setup() { Dataset ds = TDBFactory.createDataset() ; DatasetGraphTDB dsg = (DatasetGraphTDB)(ds.asDatasetGraph()) ; Quad q1 = SSE.parseQuad("(<http://example/g1> <http://example/s> <http://example/p> <http://example/o1>)") ; Quad q2 = SSE.parseQuad("(<http://example/g2> <http://example/s> <http://example/p> <http://example/o2>)") ; dsg.add(q1) ; dsg.add(q2) ; return ds ; }
/** Create or connect a TDB dataset (graph-level) */ private static DatasetGraphTDB _createDatasetGraph(IndexBuilder indexBuilder, Location location, String[] graphIndexDesc, String[] quadIndexDesc) { ConcurrencyPolicy policy = new ConcurrencyPolicyMRSW() ; @SuppressWarnings("deprecation") NodeTable nodeTable = NodeTableFactory.create(indexBuilder, location) ; TripleTable triples = createTripleTable(indexBuilder, nodeTable, location, graphIndexDesc, policy) ; QuadTable quads = createQuadTable(indexBuilder, nodeTable, location, quadIndexDesc, policy) ; @SuppressWarnings("deprecation") DatasetPrefixesTDB prefixes = DatasetPrefixesTDB.create(indexBuilder, location, policy) ; return new DatasetGraphTDB(triples, quads, prefixes, chooseOptimizer(location), location, null) ; }
@Test public void load_dataset_02() { DatasetGraphTDB dsg = TDBFactory.createDatasetGraph() ; InputStream in = IO.openFile(DIR+"data-1.nq") ; TDBLoader.load(dsg, in, false) ; assertTrue(dsg.getDefaultGraph().isEmpty()) ; assertEquals(1, dsg.getGraph(g).size()) ; }
DestinationTripleGraph(final DatasetGraphTDB dsg, RdfImportFilter importFilter, Logger log) { this.dsg = dsg ; startedEmpty = dsg.isEmpty() ; monitor = new LoadMonitor(dsg, log, "triples", BulkLoader.DataTickPoint, BulkLoader.IndexTickPoint) ; loaderTriples = new LoaderNodeTupleTable(dsg.getTripleTable().getNodeTupleTable(), "triples", monitor) ; if(importFilter == null){ this.importFilter = NO_FILTER; } else { this.importFilter = importFilter; } this.importLog = log; }
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() ; } }
@Override public Collection<Node> listSubjects(Node property, Node object) { Collection<Node> nodes = new ArrayList<Node>(); if(bnodePrefix != null && object.isURI() && object.getURI().startsWith(bnodePrefix)){ object = NodeFactory.createAnon(new AnonId(object.getURI().substring(bnodePrefix.length()))); } ExtendedIterator<Triple> it = indexingDataset.getDefaultGraph().find(null, property, object); while(it.hasNext()){ Node subject = it.next().getSubject(); //STANBOL-765: we need also to transform bnodes to URIs for the //RDFBackend implementation if(bnodePrefix != null && subject.isBlank()){ StringBuilder sb = new StringBuilder(bnodePrefix); sb.append(subject.getBlankNodeId().getLabelString()); subject = NodeFactory.createURI(sb.toString()); } nodes.add(subject); } it.close(); return nodes; } /**
@Override public void close() { loader = null; indexingDataset.close(); if(importFilter != null){ importFilter.close(); } } public void debug(){
@Override public Collection<Node> listObjects(Node subject, Node property) { Collection<Node> nodes = new ArrayList<Node>(); if(bnodePrefix != null && subject.isURI() && subject.getURI().startsWith(bnodePrefix)){ subject = NodeFactory.createAnon(new AnonId(subject.getURI().substring(bnodePrefix.length()))); } ExtendedIterator<Triple> it = indexingDataset.getDefaultGraph().find(subject, property, null); while(it.hasNext()){ //STANBOL-765: we need also to transform bnodes to URIs for the //RDFBackend implementation Node object = it.next().getObject(); if(bnodePrefix != null && object.isBlank()){ StringBuilder sb = new StringBuilder(bnodePrefix); sb.append(object.getBlankNodeId().getLabelString()); object = NodeFactory.createURI(sb.toString()); } nodes.add(object); } it.close(); return nodes; } @Override
public void release() { if ( graph != null ) { graph.close(); graph = null ; model = null ; } if ( dsg != null ) { dsg.close(); dsg = null ; } } }
@Override public Collection<Node> listSubjects(Node property, Node object) { Collection<Node> nodes = new ArrayList<Node>(); if(bnodePrefix != null && object.isURI() && object.getURI().startsWith(bnodePrefix)){ object = NodeFactory.createAnon(new AnonId(object.getURI().substring(bnodePrefix.length()))); } ExtendedIterator<Triple> it = indexingDataset.getDefaultGraph().find(null, property, object); while(it.hasNext()){ Node subject = it.next().getSubject(); //STANBOL-765: we need also to transform bnodes to URIs for the //RDFBackend implementation if(bnodePrefix != null && subject.isBlank()){ StringBuilder sb = new StringBuilder(bnodePrefix); sb.append(subject.getBlankNodeId().getLabelString()); subject = NodeFactory.createURI(sb.toString()); } nodes.add(subject); } it.close(); return nodes; } /**
@Test public void createGraphEmbed() { String f = dirAssem+"/tdb-graph-embed.ttl" ; Object thing = null ; try { thing = AssemblerUtils.build( f, JA.Model) ; } catch (AssemblerException e) { e.getCause().printStackTrace(System.err) ; throw e ; } assertTrue(thing instanceof Model) ; Graph graph = ((Model)thing).getGraph() ; assertTrue(graph instanceof GraphTDB) ; assertTrue(graph instanceof GraphTriplesTDB) ; assertFalse(graph instanceof GraphNamedTDB) ; DatasetGraphTDB ds = ((GraphTDBBase)graph).getDataset() ; if ( ds != null ) ds.close(); }