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 2014/01/07 15:46:05 UTC
git commit: implemented a test for updating
Updated Branches:
refs/heads/develop dc66186d0 -> 38620a9e4
implemented a test for updating
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/38620a9e
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/38620a9e
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/38620a9e
Branch: refs/heads/develop
Commit: 38620a9e4a9d2b213ef46939254d6cbde10dc5cb
Parents: dc66186
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Jan 7 15:46:00 2014 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Jan 7 15:46:00 2014 +0100
----------------------------------------------------------------------
.../commons/sesame/model/StatementCommons.java | 46 ++++++++++++
.../kiwi/sparql/test/KiWiSparqlJoinTest.java | 76 ++++++++++++++++----
.../marmotta/kiwi/sparql/test/update01.sparql | 24 +++++++
.../kiwi/persistence/KiWiConnection.java | 2 +-
4 files changed, 135 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/38620a9e/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/model/StatementCommons.java
----------------------------------------------------------------------
diff --git a/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/model/StatementCommons.java b/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/model/StatementCommons.java
index 194732c..47cd7b5 100644
--- a/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/model/StatementCommons.java
+++ b/commons/marmotta-commons/src/main/java/org/apache/marmotta/commons/sesame/model/StatementCommons.java
@@ -18,11 +18,15 @@
package org.apache.marmotta.commons.sesame.model;
import com.google.common.base.Equivalence;
+import com.google.common.base.Function;
import com.google.common.base.Objects;
import javolution.util.FastMap;
import javolution.util.FastSet;
import javolution.util.function.Equality;
+import org.openrdf.model.Resource;
import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.model.Value;
import java.util.Map;
import java.util.Set;
@@ -188,4 +192,46 @@ public class StatementCommons {
};
}
+ public static class TripleEquality implements Function<Statement,Statement> {
+
+ @Override
+ public Statement apply(final Statement input) {
+ return new Statement() {
+ @Override
+ public Resource getSubject() {
+ return input.getSubject();
+ }
+
+ @Override
+ public URI getPredicate() {
+ return input.getPredicate();
+ }
+
+ @Override
+ public Value getObject() {
+ return input.getObject();
+ }
+
+ @Override
+ public Resource getContext() {
+ return input.getContext();
+ }
+
+ @Override
+ public int hashCode() {
+ return TRIPLE_EQUIVALENCE.hash(input);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return TRIPLE_EQUIVALENCE.equivalent(input, (Statement) obj);
+ }
+
+ @Override
+ public String toString() {
+ return input.toString();
+ }
+ };
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/marmotta/blob/38620a9e/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
index 7ffcad1..63f452e 100644
--- a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
+++ b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/test/KiWiSparqlJoinTest.java
@@ -18,31 +18,26 @@
package org.apache.marmotta.kiwi.sparql.test;
import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import info.aduna.iteration.Iterations;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.io.IOUtils;
+import org.apache.marmotta.commons.sesame.model.StatementCommons;
+import org.apache.marmotta.commons.vocabulary.FOAF;
import org.apache.marmotta.kiwi.config.KiWiConfiguration;
import org.apache.marmotta.kiwi.sail.KiWiStore;
import org.apache.marmotta.kiwi.sparql.sail.KiWiSparqlSail;
import org.apache.marmotta.kiwi.test.junit.KiWiDatabaseRunner;
import org.apache.marmotta.kiwi.vocabulary.FN_MARMOTTA;
import org.hamcrest.Matchers;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.*;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.junit.runner.RunWith;
-import org.openrdf.query.Binding;
-import org.openrdf.query.BindingSet;
-import org.openrdf.query.QueryEvaluationException;
-import org.openrdf.query.QueryLanguage;
-import org.openrdf.query.TupleQuery;
-import org.openrdf.query.TupleQueryResult;
+import org.openrdf.model.Statement;
+import org.openrdf.model.URI;
+import org.openrdf.query.*;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.RepositoryException;
@@ -267,6 +262,13 @@ public class KiWiSparqlJoinTest {
testQuery("query21.sparql");
}
+ // INSERT/UPDATE
+ @Test
+ public void testUpdate01() throws Exception {
+ testUpdate("update01.sparql", FOAF.name);
+ }
+
+
// fulltext search filter
@Test
public void testQuery22() throws Exception {
@@ -363,6 +365,56 @@ public class KiWiSparqlJoinTest {
}
}
+ private void testUpdate(String filename, URI... properties) throws Exception {
+ String queryString = IOUtils.toString(this.getClass().getResourceAsStream(filename), "UTF-8");
+
+ RepositoryConnection con1 = repository.getConnection();
+ RepositoryConnection con2 = reference.getConnection();
+ try {
+ con2.begin();
+
+ Update query2 = con2.prepareUpdate(QueryLanguage.SPARQL, queryString);
+ query2.execute();
+
+ con2.commit();
+
+ con1.begin();
+
+ Update query1 = con1.prepareUpdate(QueryLanguage.SPARQL, queryString);
+ query1.execute();
+
+ con1.commit();
+
+
+ con1.begin();
+ Set<Statement> set1 = new HashSet<>();
+ for(URI u : properties) {
+ set1.addAll(Collections2.transform(Iterations.asSet(con1.getStatements(null, u, null, true)), new StatementCommons.TripleEquality()));
+ }
+ con1.commit();
+
+ con2.begin();
+ Set<Statement> set2 = new HashSet<>();
+ for(URI u : properties) {
+ set2.addAll(Collections2.transform(Iterations.asSet(con2.getStatements(null,u,null,true)), new StatementCommons.TripleEquality()));
+ }
+ con2.commit();
+
+ for(Statement stmt : set1) {
+ Assert.assertTrue(stmt + " not contained in set 2", set2.contains(stmt));
+ }
+ for(Statement stmt : set2) {
+ Assert.assertTrue(stmt + " not contained in set 1", set1.contains(stmt));
+ }
+
+ } catch(RepositoryException ex) {
+ con1.rollback();
+ } finally {
+ con1.close();
+ con2.close();
+ }
+ }
+
private void compareResults(TupleQueryResult result1, TupleQueryResult result2) throws QueryEvaluationException {
List<BindingSet> bindingSets1 = Iterations.asList(result1);
http://git-wip-us.apache.org/repos/asf/marmotta/blob/38620a9e/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/update01.sparql
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/update01.sparql b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/update01.sparql
new file mode 100644
index 0000000..836676e
--- /dev/null
+++ b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/test/update01.sparql
@@ -0,0 +1,24 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+PREFIX foaf: <http://xmlns.com/foaf/0.1/>
+PREFIX dc: <http://purl.org/dc/elements/1.1/>
+PREFIX mm: <http://marmotta.apache.org/vocabulary/sparql-functions#>
+
+DELETE { ?s foaf:name ?o . }
+INSERT { ?s foaf:name "Johannes Meier" }
+WHERE { ?s ?p ?o . FILTER(?s = <http://localhost:8080/LMF/resource/hans_meier>) }
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/marmotta/blob/38620a9e/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 f895251..9773003 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
@@ -762,7 +762,7 @@ public class KiWiConnection implements AutoCloseable {
* @return a KiWiDoubleLiteral with the correct value, or null if it does not exist
* @throws SQLException
*/
- public synchronized KiWiDoubleLiteral loadLiteral(double value) throws SQLException {
+ public KiWiDoubleLiteral loadLiteral(double value) throws SQLException {
// look in cache
KiWiLiteral element = literalCache.get(LiteralCommons.createCacheKey(Double.toString(value),null,Namespaces.NS_XSD + "double"));
if(element != null) {