Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 5E662200BAC for ; Wed, 26 Oct 2016 13:51:26 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 5CEAB160AFD; Wed, 26 Oct 2016 11:51:26 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2B103160ACA for ; Wed, 26 Oct 2016 13:51:24 +0200 (CEST) Received: (qmail 91990 invoked by uid 500); 26 Oct 2016 11:51:23 -0000 Mailing-List: contact commits-help@commonsrdf.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commonsrdf.incubator.apache.org Delivered-To: mailing list commits@commonsrdf.incubator.apache.org Received: (qmail 91981 invoked by uid 99); 26 Oct 2016 11:51:23 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Oct 2016 11:51:23 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id C3DF71A00EF for ; Wed, 26 Oct 2016 11:51:22 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -6.219 X-Spam-Level: X-Spam-Status: No, score=-6.219 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-2.999] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id MBxQuQn3lr-J for ; Wed, 26 Oct 2016 11:51:09 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id B362F5FC8D for ; Wed, 26 Oct 2016 11:51:05 +0000 (UTC) Received: (qmail 89531 invoked by uid 99); 26 Oct 2016 11:51:04 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Oct 2016 11:51:04 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 05B55E97DD; Wed, 26 Oct 2016 11:51:04 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: stain@apache.org To: commits@commonsrdf.incubator.apache.org Date: Wed, 26 Oct 2016 11:51:30 -0000 Message-Id: <48527e42908e4d57ae4d74487c7b58c0@git.apache.org> In-Reply-To: <10fb478dcd89424eb1c3ee4c80d8e8bc@git.apache.org> References: <10fb478dcd89424eb1c3ee4c80d8e8bc@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [28/50] [abbrv] incubator-commonsrdf git commit: Jena*Impl prefixes archived-at: Wed, 26 Oct 2016 11:51:26 -0000 Jena*Impl prefixes Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/6c17d5ed Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/6c17d5ed Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/6c17d5ed Branch: refs/heads/COMMONSRDF-46 Commit: 6c17d5ed10400c840f749ac1f2d252a4010f8cad Parents: ef6a1af Author: Stian Soiland-Reyes Authored: Wed Sep 28 01:18:19 2016 +0100 Committer: Stian Soiland-Reyes Committed: Wed Sep 28 01:18:19 2016 +0100 ---------------------------------------------------------------------- .../commons/rdf/jena/JenaRDFTermFactory.java | 2 +- .../rdf/jena/impl/AbstractJenaRDFTerm.java | 47 +++++ .../commons/rdf/jena/impl/AbstractRDFTerm.java | 47 ----- .../apache/commons/rdf/jena/impl/AnyImpl.java | 54 ------ .../commons/rdf/jena/impl/BlankNodeImpl.java | 61 ------ .../commons/rdf/jena/impl/DatasetImpl.java | 187 ------------------- .../rdf/jena/impl/GeneralizedQuadImpl.java | 136 -------------- .../apache/commons/rdf/jena/impl/GraphImpl.java | 154 --------------- .../apache/commons/rdf/jena/impl/IRIImpl.java | 61 ------ .../commons/rdf/jena/impl/JenaAnyImpl.java | 54 ++++++ .../rdf/jena/impl/JenaBlankNodeImpl.java | 61 ++++++ .../commons/rdf/jena/impl/JenaDatasetImpl.java | 187 +++++++++++++++++++ .../commons/rdf/jena/impl/JenaFactory.java | 52 +++--- .../rdf/jena/impl/JenaGeneralizedQuad.java | 136 ++++++++++++++ .../commons/rdf/jena/impl/JenaGraphImpl.java | 154 +++++++++++++++ .../commons/rdf/jena/impl/JenaIRIImpl.java | 61 ++++++ .../commons/rdf/jena/impl/JenaLiteralImpl.java | 73 ++++++++ .../commons/rdf/jena/impl/JenaQuadImpl.java | 66 +++++++ .../commons/rdf/jena/impl/JenaTripleImpl.java | 67 +++++++ .../commons/rdf/jena/impl/JenaVariableImpl.java | 64 +++++++ .../commons/rdf/jena/impl/LiteralImpl.java | 73 -------- .../apache/commons/rdf/jena/impl/QuadImpl.java | 66 ------- .../commons/rdf/jena/impl/TripleImpl.java | 67 ------- .../commons/rdf/jena/impl/VariableImpl.java | 64 ------- 24 files changed, 997 insertions(+), 997 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTermFactory.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTermFactory.java b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTermFactory.java index ec84c0a..7359acb 100644 --- a/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTermFactory.java +++ b/jena/src/main/java/org/apache/commons/rdf/jena/JenaRDFTermFactory.java @@ -681,7 +681,7 @@ public final class JenaRDFTermFactory implements RDFTermFactory { return null; } if (term instanceof JenaRDFTerm) - // TODO: What if it's a BlankNodeImpl with + // TODO: What if it's a JenaBlankNodeImpl with // a different salt? Do we need to rewrite the // jena blanknode identifier? return ((JenaRDFTerm) term).asJenaNode(); http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractJenaRDFTerm.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractJenaRDFTerm.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractJenaRDFTerm.java new file mode 100644 index 0000000..9c0d7ec --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractJenaRDFTerm.java @@ -0,0 +1,47 @@ +/** + * 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.jena.impl; + +import org.apache.commons.rdf.api.RDFTerm; +import org.apache.commons.rdf.jena.JenaRDFTerm; +import org.apache.jena.graph.Node; +import org.apache.jena.riot.out.NodeFmtLib; + +class AbstractJenaRDFTerm implements JenaRDFTerm, RDFTerm { + private Node node; + // static private PrefixMapping empty = new PrefixMappingImpl() ; + + protected AbstractJenaRDFTerm(Node node) { + this.node = node; + } + + @Override + public Node asJenaNode() { + return node; + } + + public String ntriplesString() { + return NodeFmtLib.str(node); + } + + @Override + public String toString() { + return ntriplesString(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractRDFTerm.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractRDFTerm.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractRDFTerm.java deleted file mode 100644 index 5c828ef..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AbstractRDFTerm.java +++ /dev/null @@ -1,47 +0,0 @@ -/** - * 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.jena.impl; - -import org.apache.commons.rdf.api.RDFTerm; -import org.apache.commons.rdf.jena.JenaRDFTerm; -import org.apache.jena.graph.Node; -import org.apache.jena.riot.out.NodeFmtLib; - -class AbstractRDFTerm implements JenaRDFTerm, RDFTerm { - private Node node; - // static private PrefixMapping empty = new PrefixMappingImpl() ; - - protected AbstractRDFTerm(Node node) { - this.node = node; - } - - @Override - public Node asJenaNode() { - return node; - } - - public String ntriplesString() { - return NodeFmtLib.str(node); - } - - @Override - public String toString() { - return ntriplesString(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/AnyImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AnyImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/AnyImpl.java deleted file mode 100644 index e2d3809..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/AnyImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * 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.jena.impl; - -import org.apache.commons.rdf.jena.JenaAny; -import org.apache.commons.rdf.jena.JenaRDFTerm; -import org.apache.jena.graph.Node; - -public class AnyImpl implements JenaRDFTerm, JenaAny { - - static class Singleton { - static AnyImpl instance = new AnyImpl(); - } - - /** - * Private constructor - * - * @see {@link Singleton#instance} - */ - private AnyImpl() { - } - - @Override - public String ntriplesString() { - return "[]"; - } - - @Override - public Node asJenaNode() { - return Node.ANY; - } - - @Override - public boolean equals(Object obj) { - return obj == this || obj instanceof JenaAny; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/BlankNodeImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/BlankNodeImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/BlankNodeImpl.java deleted file mode 100644 index 2acb635..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/BlankNodeImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.UUID; - -import org.apache.commons.rdf.api.BlankNode; -import org.apache.commons.rdf.jena.JenaBlankNode; -import org.apache.jena.graph.Node; - -public class BlankNodeImpl extends AbstractRDFTerm implements JenaBlankNode { - - private UUID salt; - - /* package */ BlankNodeImpl(Node node, UUID salt) { - super(node); - if (! node.isBlank()) { - throw new IllegalArgumentException("Node is not a blank node: " + node); - } - this.salt = salt; - } - - @Override - public boolean equals(Object other) { - if (other == this) - return true; - if (other == null) - return false; - if (!(other instanceof BlankNode)) - return false; - BlankNode bNode = (BlankNode) other; - return uniqueReference().equals(bNode.uniqueReference()); - } - - @Override - public int hashCode() { - return uniqueReference().hashCode(); - } - - @Override - public String uniqueReference() { - return salt + asJenaNode().getBlankNodeLabel(); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/DatasetImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/DatasetImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/DatasetImpl.java deleted file mode 100644 index 4094efe..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/DatasetImpl.java +++ /dev/null @@ -1,187 +0,0 @@ -/** - * 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.jena.impl; - -import static org.apache.jena.graph.Node.ANY; - -import java.io.StringWriter; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Stream; - -import org.apache.commons.rdf.api.BlankNodeOrIRI; -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.jena.JenaDataset; -import org.apache.commons.rdf.jena.JenaRDFTermFactory; -import org.apache.jena.atlas.iterator.Iter; -import org.apache.jena.graph.Node; -import org.apache.jena.riot.Lang; -import org.apache.jena.riot.RDFDataMgr; -import org.apache.jena.sparql.core.DatasetGraph; -import org.apache.jena.sparql.core.GraphView; - -public class DatasetImpl implements JenaDataset { - - private DatasetGraph graph; - private UUID salt; - - /* package */ DatasetImpl(DatasetGraph graph, UUID salt) { - this.graph = graph; - this.salt = salt; - } - - @Override - public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - graph.add( - org.apache.jena.sparql.core.Quad.create( - JenaRDFTermFactory.toJena(graphName), - JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object))); - } - - @Override - public void add(Quad quad) { - graph.add(JenaRDFTermFactory.toJena(quad)); - } - - @Override - public DatasetGraph asJenaDatasetGraph() { - return graph; - } - - @Override - public void clear() { - graph.clear(); - } - - @Override - public void close() { - graph.close(); - } - - - @Override - public boolean contains(Optional graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - return graph.contains( - toJenaPattern(graphName), - toJenaPattern(subject), - toJenaPattern(predicate), - toJenaPattern(object)); - } - - private Node toJenaPattern(Optional graphName) { - // In theory we could have done: - // JenaRDFTermFactory.toJena(graphName.orElse(JenaFactory::createAnyVariable)) - // but because of generics casting rules that doesn't work :( - - if (graphName == null) { - return ANY; - } - // null: default graph - return JenaRDFTermFactory.toJena(graphName.orElse(null)); - } - - private Node toJenaPattern(RDFTerm term) { - if (term == null) - return ANY; - return JenaRDFTermFactory.toJena(term); - } - - @Override - public boolean contains(Quad quad) { - return graph.contains(JenaRDFTermFactory.toJena(quad)); - } - - @Override - public void remove(Optional graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - graph.delete(org.apache.jena.sparql.core.Quad.create( - toJenaPattern(graphName), - toJenaPattern(subject), - toJenaPattern(predicate), - toJenaPattern(object))); - } - - @Override - public void remove(Quad quad) { - graph.delete(JenaRDFTermFactory.toJena(quad)); - } - - @Override - public long size() { - return graph.size(); - } - - @Override - public Stream stream() { - JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); - return Iter.asStream(graph.find(ANY, ANY, ANY, ANY), true) - .map(factory::fromJena); - } - - @Override - public Stream stream(Optional g, BlankNodeOrIRI s, IRI p, RDFTerm o) { - JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); - return Iter.asStream(graph.find(toJenaPattern(g), toJenaPattern(s), toJenaPattern(p), toJenaPattern(o)), true) - .map(factory::fromJena); - } - - @Override - public String toString() { - StringWriter sw = new StringWriter(); - RDFDataMgr.write(sw, graph, Lang.NT); - return sw.toString(); - } - - @Override - public Graph getGraph() { - GraphView gv = GraphView.createDefaultGraph(graph); - return new GraphImpl(gv, salt); - } - - @Override - public Graph getUnionGraph() { - GraphView gv = GraphView.createUnionGraph(graph); - return new GraphImpl(gv, salt); - } - - @Override - public Optional getGraph(BlankNodeOrIRI graphName) { - GraphView gv = GraphView.createNamedGraph(graph, JenaRDFTermFactory.toJena(graphName)); - return Optional.of(new GraphImpl(gv, salt)); - } - - @Override - public Stream getGraphNames() { - JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); - return Iter.asStream(graph.listGraphNodes()).map(node -> - (BlankNodeOrIRI) factory.fromJena(node)); - } - - @Override - public Iterable iterate() { - return Iter.asStream(graph.find(), false) - .map(q -> (Quad) JenaRDFTermFactory.fromJena(q, salt)) - ::iterator; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/GeneralizedQuadImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/GeneralizedQuadImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/GeneralizedQuadImpl.java deleted file mode 100644 index e772bd1..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/GeneralizedQuadImpl.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; - -import org.apache.commons.rdf.api.QuadLike; -import org.apache.commons.rdf.api.RDFTerm; -import org.apache.commons.rdf.jena.JenaQuad; -import org.apache.commons.rdf.jena.JenaQuadLike; -import org.apache.commons.rdf.jena.JenaRDFTermFactory; -import org.apache.commons.rdf.jena.JenaTriple; -import org.apache.jena.graph.Triple; -import org.apache.jena.sparql.core.Quad; - -/** - * A generalized {@link QuadLike}, backed by a Jena {@link Quad} or {@link Triple}. - *

- * This class does not implement any particular {@link #equals(Object)} or - * {@link #hashCode()} but can otherwise be used as a base class for both - * a {@link JenaTriple} and a {@link JenaQuad}. - * - * @see TripleImpl - * @see QuadImpl - * @see JenaFactory#createGeneralizedTriple(RDFTerm, RDFTerm, RDFTerm) - * @see JenaFactory#createGeneralizedQuad(RDFTerm, RDFTerm, RDFTerm, RDFTerm) - * - */ -public class GeneralizedQuadImpl implements JenaQuadLike { - - final Optional graphName; - final S subject; - final P predicate; - final O object; - org.apache.jena.sparql.core.Quad quad = null; - org.apache.jena.graph.Triple triple = null; - - GeneralizedQuadImpl(S subject, P predicate, O object, Optional graphName) { - this.subject = Objects.requireNonNull(subject); - this.predicate = Objects.requireNonNull(predicate); - this.object = Objects.requireNonNull(object); - this.graphName = Objects.requireNonNull(graphName); - } - - GeneralizedQuadImpl(S subject, P predicate, O object) { - this(subject, predicate, object, Optional.empty()); - } - - @SuppressWarnings("unchecked") - GeneralizedQuadImpl(org.apache.jena.sparql.core.Quad quad, UUID salt) { - this.quad = Objects.requireNonNull(quad); - this.subject = (S) JenaFactory.fromJena(quad.getSubject(), salt); - this.predicate = (P) JenaFactory.fromJena(quad.getPredicate(), salt); - this.object = (O)JenaFactory.fromJena(quad.getObject(), salt); - this.graphName = Optional.of((G) JenaFactory.fromJena(quad.getGraph(), salt)); - } - - @SuppressWarnings("unchecked") - GeneralizedQuadImpl(org.apache.jena.graph.Triple triple, UUID salt) { - this.triple = Objects.requireNonNull(triple); - this.subject = (S) JenaFactory.fromJena(triple.getSubject(), salt); - this.predicate = (P) JenaFactory.fromJena(triple.getPredicate(), salt); - this.object = (O)JenaFactory.fromJena(triple.getObject(), salt); - this.graphName = Optional.empty(); - } - - @Override - public org.apache.jena.sparql.core.Quad asJenaQuad() { - if (quad == null) { - quad = org.apache.jena.sparql.core.Quad.create( - JenaRDFTermFactory.toJena(graphName.orElse(null)), - JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object)); - } - return quad; - } - - @Override - public org.apache.jena.graph.Triple asJenaTriple() { - if (triple == null) { - triple = org.apache.jena.graph.Triple.create(JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object)); - } - return triple; - } - - @Override - public S getSubject() { - return subject; - } - - @Override - public P getPredicate() { - return predicate; - } - - @Override - public O getObject() { - return object; - } - - @Override - public Optional getGraphName() { - return graphName; - } - - @Override - public String toString() { - // kind of nquad syntax - return getSubject().ntriplesString() + " " + - getPredicate().ntriplesString() + " " - + getObject().ntriplesString() + " " + - getGraphName().map(RDFTerm::ntriplesString).orElse("") + "."; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/GraphImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/GraphImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/GraphImpl.java deleted file mode 100644 index 3b74ee0..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/GraphImpl.java +++ /dev/null @@ -1,154 +0,0 @@ -/** - * 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.jena.impl; - -import java.io.StringWriter; -import java.util.UUID; -import java.util.stream.Stream; - -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.Triple; -import org.apache.commons.rdf.jena.JenaGraph; -import org.apache.commons.rdf.jena.JenaRDFTermFactory; -import org.apache.jena.atlas.iterator.Iter; -import org.apache.jena.graph.Node; -import org.apache.jena.rdf.model.Model; -import org.apache.jena.rdf.model.ModelFactory; -import org.apache.jena.riot.Lang; -import org.apache.jena.riot.RDFDataMgr; - -public class GraphImpl implements JenaGraph { - - private org.apache.jena.graph.Graph graph; - private UUID salt; - private Model model; - - GraphImpl(org.apache.jena.graph.Graph graph, UUID salt) { - this.graph = graph; - this.salt = salt; - } - - GraphImpl(Model model, UUID salt) { - this.model = model; - this.graph = model.getGraph(); - this.salt = salt; - } - - @Override - public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - graph.add(org.apache.jena.graph.Triple.create( - JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object))); - } - - @Override - public void add(Triple triple) { - graph.add(JenaRDFTermFactory.toJena(triple)); - } - - @Override - public org.apache.jena.graph.Graph asJenaGraph() { - return graph; - } - - @Override - public void clear() { - graph.clear(); - } - - @Override - public void close() { - graph.close(); - } - - @Override - public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - return graph.contains( - JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object)); - } - - @Override - public boolean contains(Triple triple) { - return graph.contains(JenaRDFTermFactory.toJena(triple)); - } - - @Override - public void remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - graph.delete(org.apache.jena.graph.Triple.create( - JenaRDFTermFactory.toJena(subject), - JenaRDFTermFactory.toJena(predicate), - JenaRDFTermFactory.toJena(object))); - } - - @Override - public void remove(Triple triple) { - graph.delete(JenaRDFTermFactory.toJena(triple)); - } - - @Override - public long size() { - return graph.size(); - } - - @Override - public Stream stream() { - JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); - return Iter.asStream(graph.find(null, null, null), true).map(factory::fromJena); - } - - @Override - public Stream stream(BlankNodeOrIRI s, IRI p, RDFTerm o) { - JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); - return Iter.asStream(graph.find(toJenaAny(s), toJenaAny(p), toJenaAny(o)), true) - .map(factory::fromJena); - } - - private Node toJenaAny(RDFTerm term) { - if (term == null) - return Node.ANY; - return JenaRDFTermFactory.toJena(term); - } - - @Override - public String toString() { - StringWriter sw = new StringWriter(); - RDFDataMgr.write(sw, graph, Lang.NT); - return sw.toString(); - } - - @Override - public Model asJenaModel() { - if (model == null) { - synchronized(this) { - // As Model can be used for locks, we should make sure we don't make - // more than one model - if (model == null) { - model = ModelFactory.createModelForGraph(graph); - } - } - } - return model; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/IRIImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/IRIImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/IRIImpl.java deleted file mode 100644 index e85c80f..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/IRIImpl.java +++ /dev/null @@ -1,61 +0,0 @@ -/** - * 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.jena.impl; - -import org.apache.commons.rdf.api.IRI; -import org.apache.commons.rdf.jena.JenaIRI; -import org.apache.jena.graph.Node; -import org.apache.jena.graph.NodeFactory; - -public class IRIImpl extends AbstractRDFTerm implements JenaIRI { - - /* package */ IRIImpl(Node node) { - super(node); - if (! node.isURI()) { - throw new IllegalArgumentException("Node is not a blank node: " + node); - } - - } - - /* package */ IRIImpl(String iriStr) { - super(NodeFactory.createURI(iriStr)); - } - - @Override - public boolean equals(Object other) { - if (other == this) - return true; - if (other == null) - return false; - if (!(other instanceof IRI)) - return false; - IRI iri = (IRI) other; - return getIRIString().equals(iri.getIRIString()); - } - - @Override - public String getIRIString() { - return asJenaNode().getURI(); - } - - @Override - public int hashCode() { - return getIRIString().hashCode(); - } -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaAnyImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaAnyImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaAnyImpl.java new file mode 100644 index 0000000..068cbd8 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaAnyImpl.java @@ -0,0 +1,54 @@ +/** + * 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.jena.impl; + +import org.apache.commons.rdf.jena.JenaAny; +import org.apache.commons.rdf.jena.JenaRDFTerm; +import org.apache.jena.graph.Node; + +public class JenaAnyImpl implements JenaRDFTerm, JenaAny { + + static class Singleton { + static JenaAnyImpl instance = new JenaAnyImpl(); + } + + /** + * Private constructor + * + * @see {@link Singleton#instance} + */ + private JenaAnyImpl() { + } + + @Override + public String ntriplesString() { + return "[]"; + } + + @Override + public Node asJenaNode() { + return Node.ANY; + } + + @Override + public boolean equals(Object obj) { + return obj == this || obj instanceof JenaAny; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaBlankNodeImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaBlankNodeImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaBlankNodeImpl.java new file mode 100644 index 0000000..0cbd764 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaBlankNodeImpl.java @@ -0,0 +1,61 @@ +/** + * 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.jena.impl; + +import java.util.UUID; + +import org.apache.commons.rdf.api.BlankNode; +import org.apache.commons.rdf.jena.JenaBlankNode; +import org.apache.jena.graph.Node; + +public class JenaBlankNodeImpl extends AbstractJenaRDFTerm implements JenaBlankNode { + + private UUID salt; + + /* package */ JenaBlankNodeImpl(Node node, UUID salt) { + super(node); + if (! node.isBlank()) { + throw new IllegalArgumentException("Node is not a blank node: " + node); + } + this.salt = salt; + } + + @Override + public boolean equals(Object other) { + if (other == this) + return true; + if (other == null) + return false; + if (!(other instanceof BlankNode)) + return false; + BlankNode bNode = (BlankNode) other; + return uniqueReference().equals(bNode.uniqueReference()); + } + + @Override + public int hashCode() { + return uniqueReference().hashCode(); + } + + @Override + public String uniqueReference() { + return salt + asJenaNode().getBlankNodeLabel(); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaDatasetImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaDatasetImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaDatasetImpl.java new file mode 100644 index 0000000..b756526 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaDatasetImpl.java @@ -0,0 +1,187 @@ +/** + * 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.jena.impl; + +import static org.apache.jena.graph.Node.ANY; + +import java.io.StringWriter; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Stream; + +import org.apache.commons.rdf.api.BlankNodeOrIRI; +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.jena.JenaDataset; +import org.apache.commons.rdf.jena.JenaRDFTermFactory; +import org.apache.jena.atlas.iterator.Iter; +import org.apache.jena.graph.Node; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFDataMgr; +import org.apache.jena.sparql.core.DatasetGraph; +import org.apache.jena.sparql.core.GraphView; + +public class JenaDatasetImpl implements JenaDataset { + + private DatasetGraph graph; + private UUID salt; + + /* package */ JenaDatasetImpl(DatasetGraph graph, UUID salt) { + this.graph = graph; + this.salt = salt; + } + + @Override + public void add(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + graph.add( + org.apache.jena.sparql.core.Quad.create( + JenaRDFTermFactory.toJena(graphName), + JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object))); + } + + @Override + public void add(Quad quad) { + graph.add(JenaRDFTermFactory.toJena(quad)); + } + + @Override + public DatasetGraph asJenaDatasetGraph() { + return graph; + } + + @Override + public void clear() { + graph.clear(); + } + + @Override + public void close() { + graph.close(); + } + + + @Override + public boolean contains(Optional graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + return graph.contains( + toJenaPattern(graphName), + toJenaPattern(subject), + toJenaPattern(predicate), + toJenaPattern(object)); + } + + private Node toJenaPattern(Optional graphName) { + // In theory we could have done: + // JenaRDFTermFactory.toJena(graphName.orElse(JenaFactory::createAnyVariable)) + // but because of generics casting rules that doesn't work :( + + if (graphName == null) { + return ANY; + } + // null: default graph + return JenaRDFTermFactory.toJena(graphName.orElse(null)); + } + + private Node toJenaPattern(RDFTerm term) { + if (term == null) + return ANY; + return JenaRDFTermFactory.toJena(term); + } + + @Override + public boolean contains(Quad quad) { + return graph.contains(JenaRDFTermFactory.toJena(quad)); + } + + @Override + public void remove(Optional graphName, BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + graph.delete(org.apache.jena.sparql.core.Quad.create( + toJenaPattern(graphName), + toJenaPattern(subject), + toJenaPattern(predicate), + toJenaPattern(object))); + } + + @Override + public void remove(Quad quad) { + graph.delete(JenaRDFTermFactory.toJena(quad)); + } + + @Override + public long size() { + return graph.size(); + } + + @Override + public Stream stream() { + JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); + return Iter.asStream(graph.find(ANY, ANY, ANY, ANY), true) + .map(factory::fromJena); + } + + @Override + public Stream stream(Optional g, BlankNodeOrIRI s, IRI p, RDFTerm o) { + JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); + return Iter.asStream(graph.find(toJenaPattern(g), toJenaPattern(s), toJenaPattern(p), toJenaPattern(o)), true) + .map(factory::fromJena); + } + + @Override + public String toString() { + StringWriter sw = new StringWriter(); + RDFDataMgr.write(sw, graph, Lang.NT); + return sw.toString(); + } + + @Override + public Graph getGraph() { + GraphView gv = GraphView.createDefaultGraph(graph); + return new JenaGraphImpl(gv, salt); + } + + @Override + public Graph getUnionGraph() { + GraphView gv = GraphView.createUnionGraph(graph); + return new JenaGraphImpl(gv, salt); + } + + @Override + public Optional getGraph(BlankNodeOrIRI graphName) { + GraphView gv = GraphView.createNamedGraph(graph, JenaRDFTermFactory.toJena(graphName)); + return Optional.of(new JenaGraphImpl(gv, salt)); + } + + @Override + public Stream getGraphNames() { + JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); + return Iter.asStream(graph.listGraphNodes()).map(node -> + (BlankNodeOrIRI) factory.fromJena(node)); + } + + @Override + public Iterable iterate() { + return Iter.asStream(graph.find(), false) + .map(q -> (Quad) JenaRDFTermFactory.fromJena(q, salt)) + ::iterator; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaFactory.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaFactory.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaFactory.java index 7a6a7ab..0551094 100644 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaFactory.java +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaFactory.java @@ -62,60 +62,60 @@ import org.apache.jena.sparql.graph.GraphFactory; public class JenaFactory { public static JenaBlankNode createBlankNode(String id, UUID salt) { - return new BlankNodeImpl(NodeFactory.createBlankNode(id), salt); + return new JenaBlankNodeImpl(NodeFactory.createBlankNode(id), salt); } public static JenaBlankNode createBlankNode(UUID salt) { - return new BlankNodeImpl(NodeFactory.createBlankNode(), salt); + return new JenaBlankNodeImpl(NodeFactory.createBlankNode(), salt); } public static Dataset createDataset(UUID salt) { DatasetGraph dg = DatasetGraphFactory.createGeneral(); // Or which createMethod() -- a bit confusing with lots of choice.. - return new DatasetImpl(dg, salt); + return new JenaDatasetImpl(dg, salt); } public static JenaGraph createGraph(UUID salt) { - return new GraphImpl(GraphFactory.createDefaultGraph(), salt); + return new JenaGraphImpl(GraphFactory.createDefaultGraph(), salt); } public static JenaIRI createIRI(String iriStr) { - return new IRIImpl(iriStr); + return new JenaIRIImpl(iriStr); } public static JenaLiteral createLiteral(String lexStr) { - return new LiteralImpl(NodeFactory.createLiteral(lexStr)); + return new JenaLiteralImpl(NodeFactory.createLiteral(lexStr)); } public static JenaLiteral createLiteralDT(String lexStr, String datatypeIRI) { - return new LiteralImpl(NodeFactory.createLiteral(lexStr, NodeFactory.getType(datatypeIRI))); + return new JenaLiteralImpl(NodeFactory.createLiteral(lexStr, NodeFactory.getType(datatypeIRI))); } public static JenaLiteral createLiteralLang(String lexStr, String langTag) { - return new LiteralImpl(NodeFactory.createLiteral(lexStr, langTag)); + return new JenaLiteralImpl(NodeFactory.createLiteral(lexStr, langTag)); } public static JenaTriple createTriple(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - return new TripleImpl(subject, predicate, object); + return new JenaTripleImpl(subject, predicate, object); } public static JenaQuad createQuad(BlankNodeOrIRI subject, IRI predicate, RDFTerm object, BlankNodeOrIRI graphName) { - return new QuadImpl(subject, predicate, object, Optional.ofNullable(graphName)); + return new JenaQuadImpl(subject, predicate, object, Optional.ofNullable(graphName)); } public static JenaVariable createVariable(String name) { - return new VariableImpl(NodeFactory.createVariable(name)); + return new JenaVariableImpl(NodeFactory.createVariable(name)); } public static JenaAny createAnyVariable() { - return AnyImpl.Singleton.instance; + return JenaAnyImpl.Singleton.instance; } public static JenaTripleLike createGeneralizedTriple(RDFTerm subject, RDFTerm predicate, RDFTerm object) { - return new GeneralizedQuadImpl(subject, predicate, object); + return new JenaGeneralizedQuad(subject, predicate, object); } public static JenaQuadLike createGeneralizedQuad(RDFTerm subject, RDFTerm predicate, RDFTerm object, RDFTerm graphName) { - return new GeneralizedQuadImpl(subject, predicate, object, Optional.ofNullable(graphName)); + return new JenaGeneralizedQuad(subject, predicate, object, Optional.ofNullable(graphName)); } public static JenaRDFTerm fromJena(Node node, UUID salt) throws ConversionException { @@ -127,49 +127,49 @@ public class JenaFactory { public static JenaRDFTerm fromJenaGeneralized(Node node, UUID salt) { if (node.isURI()) { - return new IRIImpl(node); + return new JenaIRIImpl(node); } if (node.isLiteral()) { - return new LiteralImpl(node); + return new JenaLiteralImpl(node); } if (node.isBlank()) { - return new BlankNodeImpl(node, salt); + return new JenaBlankNodeImpl(node, salt); } if (node.equals(Node.ANY)) { - return AnyImpl.Singleton.instance; + return JenaAnyImpl.Singleton.instance; } if (node.isVariable()) { - return new VariableImpl(node); + return new JenaVariableImpl(node); } throw new IllegalArgumentException("Unrecognized node type: " + node); } public static JenaGraph fromJena(org.apache.jena.graph.Graph graph, UUID salt) { - return new GraphImpl(graph, salt); + return new JenaGraphImpl(graph, salt); } public static JenaGraph fromJena(Model model, UUID salt) { - return new GraphImpl(model, salt); + return new JenaGraphImpl(model, salt); } public static JenaDataset fromJena(DatasetGraph datasetGraph, UUID salt) { - return new DatasetImpl(datasetGraph, salt); + return new JenaDatasetImpl(datasetGraph, salt); } public static JenaTriple fromJena(org.apache.jena.graph.Triple triple, UUID salt) { - return new TripleImpl(triple, salt); + return new JenaTripleImpl(triple, salt); } public static JenaTripleLike fromJenaGeneralized(org.apache.jena.graph.Triple triple, UUID salt) { - return new GeneralizedQuadImpl(triple, salt); + return new JenaGeneralizedQuad(triple, salt); } public static JenaQuadLike fromJenaGeneralized(org.apache.jena.sparql.core.Quad quad, UUID salt) { - return new GeneralizedQuadImpl(quad, salt); + return new JenaGeneralizedQuad(quad, salt); } public static Quad fromJena(org.apache.jena.sparql.core.Quad quad, UUID salt) { - return new QuadImpl(quad, salt); + return new JenaQuadImpl(quad, salt); } } http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGeneralizedQuad.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGeneralizedQuad.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGeneralizedQuad.java new file mode 100644 index 0000000..5456ec9 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGeneralizedQuad.java @@ -0,0 +1,136 @@ +/** + * 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.jena.impl; + +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; + +import org.apache.commons.rdf.api.QuadLike; +import org.apache.commons.rdf.api.RDFTerm; +import org.apache.commons.rdf.jena.JenaQuad; +import org.apache.commons.rdf.jena.JenaQuadLike; +import org.apache.commons.rdf.jena.JenaRDFTermFactory; +import org.apache.commons.rdf.jena.JenaTriple; +import org.apache.jena.graph.Triple; +import org.apache.jena.sparql.core.Quad; + +/** + * A generalized {@link QuadLike}, backed by a Jena {@link Quad} or {@link Triple}. + *

+ * This class does not implement any particular {@link #equals(Object)} or + * {@link #hashCode()} but can otherwise be used as a base class for both + * a {@link JenaTriple} and a {@link JenaQuad}. + * + * @see JenaTripleImpl + * @see JenaQuadImpl + * @see JenaFactory#createGeneralizedTriple(RDFTerm, RDFTerm, RDFTerm) + * @see JenaFactory#createGeneralizedQuad(RDFTerm, RDFTerm, RDFTerm, RDFTerm) + * + */ +public class JenaGeneralizedQuad implements JenaQuadLike { + + final Optional graphName; + final S subject; + final P predicate; + final O object; + org.apache.jena.sparql.core.Quad quad = null; + org.apache.jena.graph.Triple triple = null; + + JenaGeneralizedQuad(S subject, P predicate, O object, Optional graphName) { + this.subject = Objects.requireNonNull(subject); + this.predicate = Objects.requireNonNull(predicate); + this.object = Objects.requireNonNull(object); + this.graphName = Objects.requireNonNull(graphName); + } + + JenaGeneralizedQuad(S subject, P predicate, O object) { + this(subject, predicate, object, Optional.empty()); + } + + @SuppressWarnings("unchecked") + JenaGeneralizedQuad(org.apache.jena.sparql.core.Quad quad, UUID salt) { + this.quad = Objects.requireNonNull(quad); + this.subject = (S) JenaFactory.fromJena(quad.getSubject(), salt); + this.predicate = (P) JenaFactory.fromJena(quad.getPredicate(), salt); + this.object = (O)JenaFactory.fromJena(quad.getObject(), salt); + this.graphName = Optional.of((G) JenaFactory.fromJena(quad.getGraph(), salt)); + } + + @SuppressWarnings("unchecked") + JenaGeneralizedQuad(org.apache.jena.graph.Triple triple, UUID salt) { + this.triple = Objects.requireNonNull(triple); + this.subject = (S) JenaFactory.fromJena(triple.getSubject(), salt); + this.predicate = (P) JenaFactory.fromJena(triple.getPredicate(), salt); + this.object = (O)JenaFactory.fromJena(triple.getObject(), salt); + this.graphName = Optional.empty(); + } + + @Override + public org.apache.jena.sparql.core.Quad asJenaQuad() { + if (quad == null) { + quad = org.apache.jena.sparql.core.Quad.create( + JenaRDFTermFactory.toJena(graphName.orElse(null)), + JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object)); + } + return quad; + } + + @Override + public org.apache.jena.graph.Triple asJenaTriple() { + if (triple == null) { + triple = org.apache.jena.graph.Triple.create(JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object)); + } + return triple; + } + + @Override + public S getSubject() { + return subject; + } + + @Override + public P getPredicate() { + return predicate; + } + + @Override + public O getObject() { + return object; + } + + @Override + public Optional getGraphName() { + return graphName; + } + + @Override + public String toString() { + // kind of nquad syntax + return getSubject().ntriplesString() + " " + + getPredicate().ntriplesString() + " " + + getObject().ntriplesString() + " " + + getGraphName().map(RDFTerm::ntriplesString).orElse("") + "."; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java new file mode 100644 index 0000000..49a09ae --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaGraphImpl.java @@ -0,0 +1,154 @@ +/** + * 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.jena.impl; + +import java.io.StringWriter; +import java.util.UUID; +import java.util.stream.Stream; + +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.Triple; +import org.apache.commons.rdf.jena.JenaGraph; +import org.apache.commons.rdf.jena.JenaRDFTermFactory; +import org.apache.jena.atlas.iterator.Iter; +import org.apache.jena.graph.Node; +import org.apache.jena.rdf.model.Model; +import org.apache.jena.rdf.model.ModelFactory; +import org.apache.jena.riot.Lang; +import org.apache.jena.riot.RDFDataMgr; + +public class JenaGraphImpl implements JenaGraph { + + private org.apache.jena.graph.Graph graph; + private UUID salt; + private Model model; + + JenaGraphImpl(org.apache.jena.graph.Graph graph, UUID salt) { + this.graph = graph; + this.salt = salt; + } + + JenaGraphImpl(Model model, UUID salt) { + this.model = model; + this.graph = model.getGraph(); + this.salt = salt; + } + + @Override + public void add(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + graph.add(org.apache.jena.graph.Triple.create( + JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object))); + } + + @Override + public void add(Triple triple) { + graph.add(JenaRDFTermFactory.toJena(triple)); + } + + @Override + public org.apache.jena.graph.Graph asJenaGraph() { + return graph; + } + + @Override + public void clear() { + graph.clear(); + } + + @Override + public void close() { + graph.close(); + } + + @Override + public boolean contains(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + return graph.contains( + JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object)); + } + + @Override + public boolean contains(Triple triple) { + return graph.contains(JenaRDFTermFactory.toJena(triple)); + } + + @Override + public void remove(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + graph.delete(org.apache.jena.graph.Triple.create( + JenaRDFTermFactory.toJena(subject), + JenaRDFTermFactory.toJena(predicate), + JenaRDFTermFactory.toJena(object))); + } + + @Override + public void remove(Triple triple) { + graph.delete(JenaRDFTermFactory.toJena(triple)); + } + + @Override + public long size() { + return graph.size(); + } + + @Override + public Stream stream() { + JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); + return Iter.asStream(graph.find(null, null, null), true).map(factory::fromJena); + } + + @Override + public Stream stream(BlankNodeOrIRI s, IRI p, RDFTerm o) { + JenaRDFTermFactory factory = new JenaRDFTermFactory(salt); + return Iter.asStream(graph.find(toJenaAny(s), toJenaAny(p), toJenaAny(o)), true) + .map(factory::fromJena); + } + + private Node toJenaAny(RDFTerm term) { + if (term == null) + return Node.ANY; + return JenaRDFTermFactory.toJena(term); + } + + @Override + public String toString() { + StringWriter sw = new StringWriter(); + RDFDataMgr.write(sw, graph, Lang.NT); + return sw.toString(); + } + + @Override + public Model asJenaModel() { + if (model == null) { + synchronized(this) { + // As Model can be used for locks, we should make sure we don't make + // more than one model + if (model == null) { + model = ModelFactory.createModelForGraph(graph); + } + } + } + return model; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaIRIImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaIRIImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaIRIImpl.java new file mode 100644 index 0000000..2aa170f --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaIRIImpl.java @@ -0,0 +1,61 @@ +/** + * 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.jena.impl; + +import org.apache.commons.rdf.api.IRI; +import org.apache.commons.rdf.jena.JenaIRI; +import org.apache.jena.graph.Node; +import org.apache.jena.graph.NodeFactory; + +public class JenaIRIImpl extends AbstractJenaRDFTerm implements JenaIRI { + + /* package */ JenaIRIImpl(Node node) { + super(node); + if (! node.isURI()) { + throw new IllegalArgumentException("Node is not a blank node: " + node); + } + + } + + /* package */ JenaIRIImpl(String iriStr) { + super(NodeFactory.createURI(iriStr)); + } + + @Override + public boolean equals(Object other) { + if (other == this) + return true; + if (other == null) + return false; + if (!(other instanceof IRI)) + return false; + IRI iri = (IRI) other; + return getIRIString().equals(iri.getIRIString()); + } + + @Override + public String getIRIString() { + return asJenaNode().getURI(); + } + + @Override + public int hashCode() { + return getIRIString().hashCode(); + } +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaLiteralImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaLiteralImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaLiteralImpl.java new file mode 100644 index 0000000..5bbc166 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaLiteralImpl.java @@ -0,0 +1,73 @@ +/** + * 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.jena.impl; + +import java.util.Objects; +import java.util.Optional; + +import org.apache.commons.rdf.api.IRI; +import org.apache.commons.rdf.api.Literal; +import org.apache.commons.rdf.jena.JenaLiteral; +import org.apache.jena.graph.Node; + +public class JenaLiteralImpl extends AbstractJenaRDFTerm implements JenaLiteral { + + /* package */ JenaLiteralImpl(Node node) { + super(node); + if (! node.isLiteral()) { + throw new IllegalArgumentException("Node is not a literal: " + node); + } + } + + @Override + public boolean equals(Object other) { + if (other == this) + return true; + if (other == null) + return false; + if (!(other instanceof Literal)) + return false; + Literal literal = (Literal) other; + return getLexicalForm().equals(literal.getLexicalForm()) && getLanguageTag().equals(literal.getLanguageTag()) + && getDatatype().equals(literal.getDatatype()); + } + + @Override + public IRI getDatatype() { + return JenaFactory.createIRI(asJenaNode().getLiteralDatatype().getURI()); + } + + @Override + public Optional getLanguageTag() { + String x = asJenaNode().getLiteralLanguage(); + if (x == null || x.isEmpty()) + return Optional.empty(); + return Optional.of(x); + } + + @Override + public String getLexicalForm() { + return asJenaNode().getLiteralLexicalForm(); + } + + @Override + public int hashCode() { + return Objects.hash(getLexicalForm(), getDatatype(), getLanguageTag()); + } +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java new file mode 100644 index 0000000..0f3e3e3 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaQuadImpl.java @@ -0,0 +1,66 @@ +/** + * 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.jena.impl; + +import java.util.Objects; +import java.util.Optional; +import java.util.UUID; + +import org.apache.commons.rdf.api.BlankNodeOrIRI; +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.jena.ConversionException; +import org.apache.commons.rdf.jena.JenaQuad; + +public class JenaQuadImpl extends JenaGeneralizedQuad + implements JenaQuad { + + JenaQuadImpl(BlankNodeOrIRI subject, IRI predicate, RDFTerm object, Optional graphName) { + super(subject, predicate, object, graphName); + } + + JenaQuadImpl(org.apache.jena.sparql.core.Quad quad, UUID salt) { + super(quad, salt); + // Check the conversion + if ((graphName.isPresent() && ! (graphName.get() instanceof BlankNodeOrIRI)) || + ! (subject instanceof BlankNodeOrIRI) || + ! (predicate instanceof IRI) || + ! (object instanceof RDFTerm)) { + throw new ConversionException("Can't adapt generalized quad: " + quad); + } + } + + @Override + public boolean equals(Object other) { + if (other == this) + return true; + if (!(other instanceof Quad)) + return false; + Quad quad = (Quad) other; + return getGraphName().equals(quad.getGraphName()) && getSubject().equals(quad.getSubject()) + && getPredicate().equals(quad.getPredicate()) && getObject().equals(quad.getObject()); + } + + @Override + public int hashCode() { + return Objects.hash(getSubject(), getPredicate(), getObject(), getGraphName()); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaTripleImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaTripleImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaTripleImpl.java new file mode 100644 index 0000000..4e497f2 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaTripleImpl.java @@ -0,0 +1,67 @@ +/** + * 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.jena.impl; + +import java.util.Objects; +import java.util.UUID; + +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.Triple; +import org.apache.commons.rdf.jena.ConversionException; +import org.apache.commons.rdf.jena.JenaTriple; + +public class JenaTripleImpl extends JenaGeneralizedQuad + implements JenaTriple { + + JenaTripleImpl(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { + super(subject, predicate, object); + } + + JenaTripleImpl(org.apache.jena.graph.Triple triple, UUID salt) throws ConversionException { + super(triple, salt); + // Check the conversion + if (! (subject instanceof BlankNodeOrIRI) || + ! (predicate instanceof IRI) || + ! (object instanceof RDFTerm)) { + throw new ConversionException("Can't adapt generalized triple: " + quad); + } + } + + @Override + public boolean equals(Object other) { + if (other == this) + return true; + if (other == null) + return false; + if (!(other instanceof Triple)) + return false; + Triple triple = (Triple) other; + return getSubject().equals(triple.getSubject()) && getPredicate().equals(triple.getPredicate()) + && getObject().equals(triple.getObject()); + } + + @Override + public int hashCode() { + return Objects.hash(getSubject(), getPredicate(), getObject()); + } + + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaVariableImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaVariableImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaVariableImpl.java new file mode 100644 index 0000000..8027cf2 --- /dev/null +++ b/jena/src/main/java/org/apache/commons/rdf/jena/impl/JenaVariableImpl.java @@ -0,0 +1,64 @@ +/** + * 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.jena.impl; + +import java.util.Objects; + +import org.apache.commons.rdf.jena.JenaRDFTerm; +import org.apache.commons.rdf.jena.JenaVariable; +import org.apache.jena.graph.Node; + +public class JenaVariableImpl implements JenaRDFTerm, JenaVariable { + + private Node node; + + JenaVariableImpl(Node node) { + if (! node.isVariable()) { + throw new IllegalArgumentException("Node is not a variable: " + node); + } + this.node = node; + } + + @Override + public String ntriplesString() { + return "?" + getVariableName(); + } + + @Override + public String getVariableName() { + return node.getName(); + } + + @Override + public Node asJenaNode() { + return node; + } + + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (! (obj instanceof JenaVariable)) { + return false; + } + return Objects.equals(getVariableName(), ((JenaVariable)obj).getVariableName()); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/LiteralImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/LiteralImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/LiteralImpl.java deleted file mode 100644 index 2750198..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/LiteralImpl.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.Objects; -import java.util.Optional; - -import org.apache.commons.rdf.api.IRI; -import org.apache.commons.rdf.api.Literal; -import org.apache.commons.rdf.jena.JenaLiteral; -import org.apache.jena.graph.Node; - -public class LiteralImpl extends AbstractRDFTerm implements JenaLiteral { - - /* package */ LiteralImpl(Node node) { - super(node); - if (! node.isLiteral()) { - throw new IllegalArgumentException("Node is not a literal: " + node); - } - } - - @Override - public boolean equals(Object other) { - if (other == this) - return true; - if (other == null) - return false; - if (!(other instanceof Literal)) - return false; - Literal literal = (Literal) other; - return getLexicalForm().equals(literal.getLexicalForm()) && getLanguageTag().equals(literal.getLanguageTag()) - && getDatatype().equals(literal.getDatatype()); - } - - @Override - public IRI getDatatype() { - return JenaFactory.createIRI(asJenaNode().getLiteralDatatype().getURI()); - } - - @Override - public Optional getLanguageTag() { - String x = asJenaNode().getLiteralLanguage(); - if (x == null || x.isEmpty()) - return Optional.empty(); - return Optional.of(x); - } - - @Override - public String getLexicalForm() { - return asJenaNode().getLiteralLexicalForm(); - } - - @Override - public int hashCode() { - return Objects.hash(getLexicalForm(), getDatatype(), getLanguageTag()); - } -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/QuadImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/QuadImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/QuadImpl.java deleted file mode 100644 index d68fcaf..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/QuadImpl.java +++ /dev/null @@ -1,66 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.Objects; -import java.util.Optional; -import java.util.UUID; - -import org.apache.commons.rdf.api.BlankNodeOrIRI; -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.jena.ConversionException; -import org.apache.commons.rdf.jena.JenaQuad; - -public class QuadImpl extends GeneralizedQuadImpl - implements JenaQuad { - - QuadImpl(BlankNodeOrIRI subject, IRI predicate, RDFTerm object, Optional graphName) { - super(subject, predicate, object, graphName); - } - - QuadImpl(org.apache.jena.sparql.core.Quad quad, UUID salt) { - super(quad, salt); - // Check the conversion - if ((graphName.isPresent() && ! (graphName.get() instanceof BlankNodeOrIRI)) || - ! (subject instanceof BlankNodeOrIRI) || - ! (predicate instanceof IRI) || - ! (object instanceof RDFTerm)) { - throw new ConversionException("Can't adapt generalized quad: " + quad); - } - } - - @Override - public boolean equals(Object other) { - if (other == this) - return true; - if (!(other instanceof Quad)) - return false; - Quad quad = (Quad) other; - return getGraphName().equals(quad.getGraphName()) && getSubject().equals(quad.getSubject()) - && getPredicate().equals(quad.getPredicate()) && getObject().equals(quad.getObject()); - } - - @Override - public int hashCode() { - return Objects.hash(getSubject(), getPredicate(), getObject(), getGraphName()); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/TripleImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/TripleImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/TripleImpl.java deleted file mode 100644 index 9207b38..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/TripleImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.Objects; -import java.util.UUID; - -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.Triple; -import org.apache.commons.rdf.jena.ConversionException; -import org.apache.commons.rdf.jena.JenaTriple; - -public class TripleImpl extends GeneralizedQuadImpl - implements JenaTriple { - - TripleImpl(BlankNodeOrIRI subject, IRI predicate, RDFTerm object) { - super(subject, predicate, object); - } - - TripleImpl(org.apache.jena.graph.Triple triple, UUID salt) throws ConversionException { - super(triple, salt); - // Check the conversion - if (! (subject instanceof BlankNodeOrIRI) || - ! (predicate instanceof IRI) || - ! (object instanceof RDFTerm)) { - throw new ConversionException("Can't adapt generalized triple: " + quad); - } - } - - @Override - public boolean equals(Object other) { - if (other == this) - return true; - if (other == null) - return false; - if (!(other instanceof Triple)) - return false; - Triple triple = (Triple) other; - return getSubject().equals(triple.getSubject()) && getPredicate().equals(triple.getPredicate()) - && getObject().equals(triple.getObject()); - } - - @Override - public int hashCode() { - return Objects.hash(getSubject(), getPredicate(), getObject()); - } - - -} http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/6c17d5ed/jena/src/main/java/org/apache/commons/rdf/jena/impl/VariableImpl.java ---------------------------------------------------------------------- diff --git a/jena/src/main/java/org/apache/commons/rdf/jena/impl/VariableImpl.java b/jena/src/main/java/org/apache/commons/rdf/jena/impl/VariableImpl.java deleted file mode 100644 index b72ecde..0000000 --- a/jena/src/main/java/org/apache/commons/rdf/jena/impl/VariableImpl.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * 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.jena.impl; - -import java.util.Objects; - -import org.apache.commons.rdf.jena.JenaRDFTerm; -import org.apache.commons.rdf.jena.JenaVariable; -import org.apache.jena.graph.Node; - -public class VariableImpl implements JenaRDFTerm, JenaVariable { - - private Node node; - - VariableImpl(Node node) { - if (! node.isVariable()) { - throw new IllegalArgumentException("Node is not a variable: " + node); - } - this.node = node; - } - - @Override - public String ntriplesString() { - return "?" + getVariableName(); - } - - @Override - public String getVariableName() { - return node.getName(); - } - - @Override - public Node asJenaNode() { - return node; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (! (obj instanceof JenaVariable)) { - return false; - } - return Objects.equals(getVariableName(), ((JenaVariable)obj).getVariableName()); - } - -}