You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commonsrdf.apache.org by st...@apache.org on 2016/06/14 15:45:04 UTC
[4/8] incubator-commonsrdf git commit: some attempt to propagate a
selected Resource[] contexts
some attempt to propagate a selected Resource[] contexts
(currently broken)
Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/ccd9e972
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/ccd9e972
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/ccd9e972
Branch: refs/heads/rdf4j
Commit: ccd9e97226cdb6892f0db15fe7db73b83433f347
Parents: e477b93
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Fri Jun 3 15:53:47 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Fri Jun 3 15:53:47 2016 +0100
----------------------------------------------------------------------
.../rdf4j/impl/AbstractRepositoryGraphLike.java | 1 -
.../rdf/rdf4j/impl/RepositoryDatasetImpl.java | 142 +++++++++++++++++++
.../rdf/rdf4j/impl/RepositoryGraphImpl.java | 18 +--
3 files changed, 152 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/ccd9e972/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
index 1283e2e..b048674 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/AbstractRepositoryGraphLike.java
@@ -22,7 +22,6 @@ import java.util.Optional;
import org.apache.commons.rdf.api.BlankNodeOrIRI;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.RDFTerm;
-//import org.apache.commons.rdf.api.tripleLike;
import org.apache.commons.rdf.api.TripleLike;
import org.apache.commons.rdf.rdf4j.RDF4JGraphLike;
import org.apache.commons.rdf.rdf4j.RDF4JTermFactory;
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/ccd9e972/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
new file mode 100644
index 0000000..50c7d20
--- /dev/null
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryDatasetImpl.java
@@ -0,0 +1,142 @@
+/**
+ * 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.
+ */
+package org.apache.commons.rdf.rdf4j.impl;
+
+import java.util.ConcurrentModificationException;
+import java.util.Optional;
+import java.util.stream.Stream;
+
+import org.apache.commons.rdf.api.BlankNodeOrIRI;
+import org.apache.commons.rdf.api.Dataset;
+import org.apache.commons.rdf.api.Graph;
+import org.apache.commons.rdf.api.IRI;
+import org.apache.commons.rdf.api.Quad;
+import org.apache.commons.rdf.api.RDFTerm;
+import org.apache.commons.rdf.rdf4j.RDF4JDataset;
+import org.apache.commons.rdf.rdf4j.RDF4JQuad;
+import org.apache.commons.rdf.rdf4j.RDF4JTriple;
+import org.eclipse.rdf4j.common.iteration.Iterations;
+import org.eclipse.rdf4j.model.Resource;
+import org.eclipse.rdf4j.model.Statement;
+import org.eclipse.rdf4j.model.Value;
+import org.eclipse.rdf4j.repository.RepositoryConnection;
+import org.eclipse.rdf4j.repository.RepositoryResult;
+
+public class RepositoryDatasetImpl extends AbstractRepositoryGraphLike<Quad> implements RDF4JDataset, Dataset {
+
+
+ @Override
+ public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ Resource context = (Resource) rdf4jTermFactory.asValue(graphName);
+ Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+ org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
+ Value obj = rdf4jTermFactory.asValue(object);
+ try (RepositoryConnection conn = getRepositoryConnection()) {
+ conn.add(subj, pred, obj, context);
+ conn.commit();
+ }
+ }
+
+ @Override
+ public boolean contains(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+ org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
+ Value obj = rdf4jTermFactory.asValue(object);
+ Resource[] contexts = asContexts(graphName);
+
+ try (RepositoryConnection conn = getRepositoryConnection()) {
+ return conn.hasStatement(subj, pred, obj, includeInferred, contexts);
+ }
+ }
+
+ private Resource[] asContexts(Optional<BlankNodeOrIRI> graphName) {
+ Resource[] contexts;
+ if (graphName == null) {
+ // no contexts == any contexts
+ contexts = new Resource[0];
+ } else {
+ BlankNodeOrIRI g = graphName.orElse(null);
+ Resource context = (Resource) rdf4jTermFactory.asValue(g);
+ contexts = new Resource[] { context };
+ }
+ return contexts;
+ }
+
+ @Override
+ public void remove(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+ org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
+ Value obj = rdf4jTermFactory.asValue(object);
+ Resource[] contexts = asContexts(graphName);
+
+ try (RepositoryConnection conn = getRepositoryConnection()) {
+ conn.remove(subj, pred, obj, contexts);
+ conn.commit();
+ }
+ }
+
+ @Override
+ public Stream<RDF4JQuad> stream() {
+ return stream(null, null, null, null);
+ }
+
+ @Override
+ public Stream<RDF4JQuad> stream(Optional<BlankNodeOrIRI> graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
+ Resource subj = (Resource) rdf4jTermFactory.asValue(subject);
+ org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
+ Value obj = rdf4jTermFactory.asValue(object);
+ Resource[] contexts = asContexts(graphName);
+
+ RepositoryConnection conn = getRepositoryConnection();
+ // NOTE: connection will be closed outside by the Iterations.stream()
+ RepositoryResult<Statement> statements = conn.getStatements(subj, pred, obj, includeInferred, contexts);
+ return Iterations.stream(statements).map(this::asTripleLike);
+ }
+
+ @Override
+ protected RDF4JQuad asTripleLike(Statement s) {
+ return rdf4jTermFactory.asQuad(s);
+ }
+
+ @Override
+ public Iterable<Quad> iterate() throws ConcurrentModificationException, IllegalStateException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public Graph getGraph() {
+ // TODO: Specify default context only
+ return new RepositoryGraphImpl(repository, includeInferred);
+ }
+
+ @Override
+ public Optional<Graph> getGraph(BlankNodeOrIRI graphName) {
+ Resource context = (Resource) rdf4jTermFactory.asValue(graphName);
+ return new RepositoryGraphImpl(repository, includeInferred, context);
+ }
+
+ @Override
+ public Stream<BlankNodeOrIRI> getGraphNames() {
+ RepositoryConnection conn = getRepositoryConnection();
+ RepositoryResult<Resource> contexts = conn.getContextIDs();
+ // NOTE: connection will be closed outside by the Iterations.stream()
+ return Iterations.stream(contexts).map(g -> (BlankNodeOrIRI) rdf4jTermFactory.asRDFTerm(g));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/ccd9e972/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
----------------------------------------------------------------------
diff --git a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
index 1fe1498..574ddb1 100644
--- a/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
+++ b/rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/impl/RepositoryGraphImpl.java
@@ -36,12 +36,16 @@ import org.eclipse.rdf4j.repository.RepositoryResult;
public class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> implements Graph, RDF4JGraph {
+ private Resource[] contextFilter;
+
public RepositoryGraphImpl(Repository repository) {
- super(repository, false);
+ // All contexts (supplying null would mean default graph only)
+ this(repository, false);
}
- public RepositoryGraphImpl(Repository repository, boolean includeInferred) {
+ public RepositoryGraphImpl(Repository repository, boolean includeInferred, Resource... contextFilter) {
super(repository, includeInferred);
+ this.contextFilter = contextFilter;
}
@Override
@@ -50,12 +54,10 @@ public class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> imp
org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
Value obj = rdf4jTermFactory.asValue(object);
try (RepositoryConnection conn = getRepositoryConnection()) {
- conn.add(subj, pred, obj);
+ conn.add(subj, pred, obj, contextFilter);
conn.commit();
}
}
-
-
@Override
public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) {
@@ -63,7 +65,7 @@ public class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> imp
org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
Value obj = rdf4jTermFactory.asValue(object);
try (RepositoryConnection conn = getRepositoryConnection()) {
- return conn.hasStatement(subj, pred, obj, includeInferred);
+ return conn.hasStatement(subj, pred, obj, includeInferred, contextFilter);
}
}
@@ -73,7 +75,7 @@ public class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> imp
org.eclipse.rdf4j.model.IRI pred = (org.eclipse.rdf4j.model.IRI) rdf4jTermFactory.asValue(predicate);
Value obj = rdf4jTermFactory.asValue(object);
try (RepositoryConnection conn = getRepositoryConnection()) {
- conn.remove(subj, pred, obj);
+ conn.remove(subj, pred, obj, contextFilter);
conn.commit();
}
}
@@ -90,7 +92,7 @@ public class RepositoryGraphImpl extends AbstractRepositoryGraphLike<Triple> imp
Value obj = rdf4jTermFactory.asValue(object);
RepositoryConnection conn = getRepositoryConnection();
// FIXME: Is it OK that we don't close the connection?
- RepositoryResult<Statement> statements = conn.getStatements(subj, pred, obj);
+ RepositoryResult<Statement> statements = conn.getStatements(subj, pred, obj, contextFilter);
return Iterations.stream(statements).map(this::asTripleLike);
}