You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2013/06/18 12:42:48 UTC
[1/2] git commit: - batched commits: keep value factory connection
open
Updated Branches:
refs/heads/develop 8e2fc15a8 -> 257ff6bf7
- batched commits: keep value factory connection open
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/d0c0fa91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/d0c0fa91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/d0c0fa91
Branch: refs/heads/develop
Commit: d0c0fa91973419d986a8068871781c9e84571ade
Parents: 8e2fc15
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Jun 18 11:45:28 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Jun 18 11:45:28 2013 +0200
----------------------------------------------------------------------
.../test/engine/ReasoningEngineTest.java | 8 +---
.../JustificationPersistenceTest.java | 10 ++---
.../test/persistence/PatternQueryTest.java | 11 +++---
.../kiwi/persistence/KiWiConnection.java | 12 +++---
.../apache/marmotta/kiwi/sail/KiWiStore.java | 1 +
.../marmotta/kiwi/sail/KiWiValueFactory.java | 40 ++++++++++++++++----
6 files changed, 51 insertions(+), 31 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/engine/ReasoningEngineTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/engine/ReasoningEngineTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/engine/ReasoningEngineTest.java
index 9d1e50b..ba4dbeb 100644
--- a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/engine/ReasoningEngineTest.java
+++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/engine/ReasoningEngineTest.java
@@ -170,15 +170,13 @@ public class ReasoningEngineTest {
@Before
public void initDatabase() throws Exception {
- persistence = new KiWiPersistence("test",jdbcUrl,jdbcUser,jdbcPass,dialect);
- persistence.initDatabase();
-
-
store = new KiWiStore("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred");
tsail = new KiWiTransactionalSail(store);
repository = new SailRepository(tsail);
repository.initialize();
+ persistence = store.getPersistence();
+
rpersistence = new KiWiReasoningPersistence(persistence, repository.getValueFactory());
rpersistence.initDatabase();
@@ -209,9 +207,7 @@ public class ReasoningEngineTest {
engine.shutdown();
rpersistence.dropDatabase();
-
persistence.dropDatabase();
- persistence.shutdown();
repository.shutDown();
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/JustificationPersistenceTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/JustificationPersistenceTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/JustificationPersistenceTest.java
index 24a4c40..3955d8b 100644
--- a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/JustificationPersistenceTest.java
+++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/JustificationPersistenceTest.java
@@ -159,12 +159,13 @@ public class JustificationPersistenceTest {
@Before
public void initDatabase() throws Exception {
- persistence = new KiWiPersistence("test",jdbcUrl,jdbcUser,jdbcPass,dialect);
- persistence.initDatabase();
+ KiWiStore store = new KiWiStore("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred");
- repository = new SailRepository(new KiWiStore("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred"));
+ repository = new SailRepository(store);
repository.initialize();
+ persistence = store.getPersistence();
+
rpersistence = new KiWiReasoningPersistence(persistence, repository.getValueFactory());
rpersistence.initDatabase();
@@ -173,10 +174,7 @@ public class JustificationPersistenceTest {
@After
public void dropDatabase() throws Exception {
rpersistence.dropDatabase();
-
persistence.dropDatabase();
- persistence.shutdown();
-
repository.shutDown();
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/PatternQueryTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/PatternQueryTest.java b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/PatternQueryTest.java
index c2462b0..7bdc53e 100644
--- a/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/PatternQueryTest.java
+++ b/libraries/kiwi/kiwi-reasoner/src/test/java/org/apache/marmotta/kiwi/reasoner/test/persistence/PatternQueryTest.java
@@ -166,12 +166,14 @@ public class PatternQueryTest {
@Before
public void initDatabase() throws Exception {
- persistence = new KiWiPersistence("test",jdbcUrl,jdbcUser,jdbcPass,dialect);
- persistence.initDatabase();
+ KiWiStore store = new KiWiStore("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred");
- repository = new SailRepository(new KiWiStore("test",jdbcUrl,jdbcUser,jdbcPass,dialect, "http://localhost/context/default", "http://localhost/context/inferred"));
+ repository = new SailRepository(store);
repository.initialize();
+ persistence = store.getPersistence();
+
+
rpersistence = new KiWiReasoningPersistence(persistence, repository.getValueFactory());
rpersistence.initDatabase();
@@ -196,10 +198,7 @@ public class PatternQueryTest {
@After
public void dropDatabase() throws Exception {
rpersistence.dropDatabase();
-
persistence.dropDatabase();
- persistence.shutdown();
-
repository.shutDown();
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
index 7592bfe..2cb23c0 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
@@ -986,6 +986,7 @@ public class KiWiConnection {
PreparedStatement insertNode = getPreparedStatement(stmt);
insertNode.executeBatch();
}
+ connection.commit();
}
/**
@@ -998,11 +999,6 @@ public class KiWiConnection {
*/
public synchronized boolean storeTriple(KiWiTriple triple) throws SQLException {
- Preconditions.checkNotNull(triple.getSubject().getId());
- Preconditions.checkNotNull(triple.getPredicate().getId());
- Preconditions.checkNotNull(triple.getObject().getId());
- Preconditions.checkNotNull(triple.getContext().getId());
-
requireJDBCConnection();
@@ -1021,6 +1017,12 @@ public class KiWiConnection {
}
return !hasId;
} else {
+ Preconditions.checkNotNull(triple.getSubject().getId());
+ Preconditions.checkNotNull(triple.getPredicate().getId());
+ Preconditions.checkNotNull(triple.getObject().getId());
+ Preconditions.checkNotNull(triple.getContext().getId());
+
+
try {
PreparedStatement insertTriple = getPreparedStatement("store.triple");
insertTriple.setLong(1,triple.getId());
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
index aa945ff..47ffccb 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiStore.java
@@ -182,6 +182,7 @@ public class KiWiStore extends NotifyingSailBase {
*/
public void closeValueFactory() {
if(repositoryValueFactory != null) {
+ repositoryValueFactory.close();
repositoryValueFactory = null;
persistence.setValueFactory(null);
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/d0c0fa91/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
index db3b5f2..7470a43 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
@@ -106,6 +106,10 @@ public class KiWiValueFactory implements ValueFactory {
private Map<String,KiWiAnonResource> batchBNodeLookup;
private Map<String,KiWiLiteral> batchLiteralLookup;
+ // this connection is kept open and never closed when releaseConnection is called; it will only be
+ // used for generating sequence numbers for RDF nodes
+ private KiWiConnection batchConnection;
+
private ReentrantLock commitLock;
public KiWiValueFactory(KiWiStore store, String defaultContext) {
@@ -134,8 +138,15 @@ public class KiWiValueFactory implements ValueFactory {
protected KiWiConnection aqcuireConnection() {
try {
- KiWiConnection connection = store.getPersistence().getConnection();
- return connection;
+ if(batchCommit) {
+ if(batchConnection == null) {
+ batchConnection = store.getPersistence().getConnection();
+ }
+ return batchConnection;
+ } else {
+ KiWiConnection connection = store.getPersistence().getConnection();
+ return connection;
+ }
} catch(SQLException ex) {
log.error("could not acquire database connection",ex);
throw new RuntimeException(ex);
@@ -143,12 +154,14 @@ public class KiWiValueFactory implements ValueFactory {
}
protected void releaseConnection(KiWiConnection con) {
- try {
- con.commit();
- con.close();
- } catch (SQLException ex) {
- log.error("could not release database connection", ex);
- throw new RuntimeException(ex);
+ if(!batchCommit) {
+ try {
+ con.commit();
+ con.close();
+ } catch (SQLException ex) {
+ log.error("could not release database connection", ex);
+ throw new RuntimeException(ex);
+ }
}
}
@@ -789,4 +802,15 @@ public class KiWiValueFactory implements ValueFactory {
}
}
+
+ public void close() {
+ try {
+ if(batchConnection != null && !batchConnection.isClosed()) {
+ batchConnection.commit();
+ batchConnection.close();
+ }
+ } catch (SQLException e) {
+ log.warn("could not close value factory connection: {}",e.getMessage());
+ }
+ }
}
[2/2] git commit: - further performance optimization by offering a
specialised triple lookup for existance checks
Posted by ss...@apache.org.
- further performance optimization by offering a specialised triple lookup for existance checks
Project: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/commit/257ff6bf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/tree/257ff6bf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-marmotta/diff/257ff6bf
Branch: refs/heads/develop
Commit: 257ff6bf7b2f6b6ea54167a9475c4b4b967fe556
Parents: d0c0fa9
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Jun 18 12:42:42 2013 +0200
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Jun 18 12:42:42 2013 +0200
----------------------------------------------------------------------
.../kiwi/persistence/KiWiConnection.java | 46 +++++++++++++++++---
.../marmotta/kiwi/sail/KiWiValueFactory.java | 12 +++--
.../kiwi/persistence/h2/statements.properties | 1 +
.../persistence/mysql/statements.properties | 1 +
.../persistence/pgsql/statements.properties | 1 +
5 files changed, 51 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/257ff6bf/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
index 2cb23c0..d570fac 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/persistence/KiWiConnection.java
@@ -42,12 +42,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
/**
@@ -1047,6 +1042,45 @@ public class KiWiConnection {
/**
+ * Return the identifier of the triple with the given subject, predicate, object and context, or null if this
+ * triple does not exist. Used for quick existance checks of triples.
+ *
+ * @param subject
+ * @param predicate
+ * @param object
+ * @param context
+ * @param inferred
+ * @return
+ */
+ public Long getTripleId(final KiWiResource subject, final KiWiUriResource predicate, final KiWiNode object, final KiWiResource context, final boolean inferred) throws SQLException {
+ if(tripleBatch != null && tripleBatch.size() > 0) {
+ Collection<KiWiTriple> batched = tripleBatch.listTriples(subject,predicate,object,context);
+ if(batched.size() > 0) {
+ return batched.iterator().next().getId();
+ }
+ }
+
+ requireJDBCConnection();
+ PreparedStatement loadTripleId = getPreparedStatement("load.triple");
+ loadTripleId.setLong(1, subject.getId());
+ loadTripleId.setLong(2, predicate.getId());
+ loadTripleId.setLong(3, object.getId());
+ loadTripleId.setLong(4, context.getId());
+
+ ResultSet result = loadTripleId.executeQuery();
+ try {
+ if(result.next()) {
+ return result.getLong(1);
+ } else {
+ return null;
+ }
+
+ } finally {
+ result.close();
+ }
+ }
+
+ /**
* Mark the triple passed as argument as deleted, setting the "deleted" flag to true and
* updating the timestamp value of "deletedAt".
* <p/>
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/257ff6bf/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
index 7470a43..fad7a6b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/sail/KiWiValueFactory.java
@@ -703,7 +703,7 @@ public class KiWiValueFactory implements ValueFactory {
*/
public Statement createStatement(Resource subject, URI predicate, Value object, Resource context, KiWiConnection connection) {
IntArray cacheKey = IntArray.createSPOCKey(subject,predicate,object,context);
- Statement result = tripleRegistry.get(cacheKey);
+ KiWiTriple result = (KiWiTriple)tripleRegistry.get(cacheKey);
try {
if(result == null || ((KiWiTriple)result).isDeleted()) {
KiWiResource ksubject = convert(subject);
@@ -712,6 +712,7 @@ public class KiWiValueFactory implements ValueFactory {
KiWiResource kcontext = convert(context);
// test if the triple already exists in the database; if yes, return it
+ /*
List<Statement> triples = Iterations.asList(connection.listTriples(ksubject,kpredicate,kobject,kcontext,true));
if(triples.size() == 1) {
result = triples.get(0);
@@ -719,6 +720,12 @@ public class KiWiValueFactory implements ValueFactory {
result = new KiWiTriple(ksubject,kpredicate,kobject,kcontext);
((KiWiTriple)result).setMarkedForReasoning(true);
}
+ */
+ result = new KiWiTriple(ksubject,kpredicate,kobject,kcontext);
+ result.setId(connection.getTripleId(ksubject,kpredicate,kobject,kcontext,true));
+ if(result.getId() == null) {
+ result.setMarkedForReasoning(true);
+ }
tripleRegistry.put(cacheKey,result);
}
@@ -726,9 +733,6 @@ public class KiWiValueFactory implements ValueFactory {
} catch (SQLException e) {
log.error("database error, could not load triple", e);
throw new IllegalStateException("database error, could not load triple",e);
- } catch (RepositoryException e) {
- log.error("database error, could not load triple", e);
- throw new IllegalStateException("database error, could not load triple",e);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/257ff6bf/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/h2/statements.properties
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/h2/statements.properties b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/h2/statements.properties
index 2fc9afc..8b788a3 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/h2/statements.properties
+++ b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/h2/statements.properties
@@ -61,6 +61,7 @@ store.tliteral = INSERT INTO nodes (id,ntype,svalue,tvalue,ltype,createdAt
store.namespace = INSERT INTO namespaces (id,prefix,uri,createdAt) VALUES (?,?,?,?)
store.triple = INSERT INTO triples (id,subject,predicate,object,context,inferred,createdAt) VALUES (?,?,?,?,?,?,?)
+load.triple = SELECT id FROM triples WHERE subject = ? AND predicate = ? AND object = ? AND context = ? AND deleted = false AND inferred = true
query.size = SELECT count(*) FROM triples WHERE deleted = false
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/257ff6bf/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/mysql/statements.properties
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/mysql/statements.properties b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/mysql/statements.properties
index c54e213..e40f24b 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/mysql/statements.properties
+++ b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/mysql/statements.properties
@@ -66,6 +66,7 @@ store.tliteral = INSERT INTO nodes (id,ntype,svalue,tvalue,ltype,createdAt
store.namespace = INSERT INTO namespaces (id,prefix,uri,createdAt) VALUES (?,?,?,?)
store.triple = INSERT IGNORE INTO triples (id,subject,predicate,object,context,inferred,createdAt) VALUES (?,?,?,?,?,?,?)
+load.triple = SELECT id FROM triples WHERE subject = ? AND predicate = ? AND object = ? AND context = ? AND deleted = false AND inferred = true
query.size = SELECT count(*) FROM triples WHERE deleted = false
http://git-wip-us.apache.org/repos/asf/incubator-marmotta/blob/257ff6bf/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/pgsql/statements.properties
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/pgsql/statements.properties b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/pgsql/statements.properties
index 2b2f0c6..994af7d 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/pgsql/statements.properties
+++ b/libraries/kiwi/kiwi-triplestore/src/main/resources/org/apache/marmotta/kiwi/persistence/pgsql/statements.properties
@@ -59,6 +59,7 @@ store.tliteral = INSERT INTO nodes (id,ntype,svalue,tvalue,ltype,createdAt
store.namespace = INSERT INTO namespaces (id,prefix,uri,createdAt) VALUES (?,?,?,?)
store.triple = INSERT INTO triples (id,subject,predicate,object,context,inferred,createdAt) VALUES (?,?,?,?,?,?,?)
+load.triple = SELECT id FROM triples WHERE subject = ? AND predicate = ? AND object = ? AND context = ? AND deleted = false
query.size = SELECT count(*) FROM triples WHERE deleted = false
query.size_ctx = SELECT count(*) FROM triples WHERE context = ? AND deleted = false