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