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/10/28 13:07:55 UTC
[17/50] [abbrv] incubator-commonsrdf git commit: Merge branch
'avoid-unsupported' into COMMONSRDF-46
Merge branch 'avoid-unsupported' into COMMONSRDF-46
Project: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/commit/fa27a178
Tree: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/tree/fa27a178
Diff: http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/diff/fa27a178
Branch: refs/heads/COMMONSRDF-7
Commit: fa27a178994bbe718bf8bff5a8bf405df39e4de7
Parents: 3ed4272 17c0d27
Author: Stian Soiland-Reyes <st...@apache.org>
Authored: Sun Oct 23 01:42:03 2016 +0100
Committer: Stian Soiland-Reyes <st...@apache.org>
Committed: Sun Oct 23 01:42:03 2016 +0100
----------------------------------------------------------------------
.../java/org/apache/commons/rdf/api/RDF.java | 2 -
.../rdf/api/AbstractRDFTermFactoryTest.java | 235 ++++---------------
.../commons/rdf/jsonldjava/JsonLdBlankNode.java | 1 +
.../rdf/jsonldjava/JsonLdFactoryTest.java | 6 +-
.../rdf/rdf4j/MemoryRDFTermFactoryTest.java | 2 +-
.../commons/rdf/rdf4j/NativeStoreGraphTest.java | 2 -
.../rdf/rdf4j/Rdf4JRDFTermFactoryTest.java | 2 +-
7 files changed, 52 insertions(+), 198 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/api/src/main/java/org/apache/commons/rdf/api/RDF.java
----------------------------------------------------------------------
diff --cc api/src/main/java/org/apache/commons/rdf/api/RDF.java
index 0565ba4,0000000..32b7f66
mode 100644,000000..100644
--- a/api/src/main/java/org/apache/commons/rdf/api/RDF.java
+++ b/api/src/main/java/org/apache/commons/rdf/api/RDF.java
@@@ -1,246 -1,0 +1,244 @@@
+/**
+ * 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.api;
+
+import java.io.Serializable;
+import java.util.Locale;
+
+/**
+ * A RDF implementation.
+ * <p>
+ * A <code>RDF</code> implementation can create instances of
+ * the {@link RDFTerm} types
+ * {@link IRI}, {@link BlankNode} and {@link Literal}, as well as creating
+ * instances of the types {@link Triple}, {@link Quad}, {@link Graph} or
+ * {@link Dataset}.
+ * <p>
+ * A <em>partial RDF implementation</em>
+ * should be clearly documented as such, and may throw
+ * {@link UnsupportedOperationException} where applicable, e.g. if it
+ * does not support creating {@link Dataset}s or {@link Quad}s.
+ * <p>
+ * Instances of <code>RDF</code> work like a factory for
+ * creating Commons RDF instances.
+ * spezializations of this interface may also provide methods
+ * for conversions from/to their underlying RDF framework.
+ * <p>
+ * If a factory method of a particular implementation does not allow or support
+ * a provided parameter, e.g. because an IRI is considered invalid, then it
+ * SHOULD throw {@link IllegalArgumentException}.
+ *
+ * @since 0.3.0-incubating
+ * @see RDFTerm
+ * @see Graph
+ * @see Quad
+ */
+public interface RDF {
+
+ /**
+ * Create a new blank node.
+ * <p>
+ * The returned blank node MUST NOT be equal to any existing
+ * {@link BlankNode} instances according to {@link BlankNode#equals(Object)}.
+ *
+ * @return A new, unique {@link BlankNode}
- * @throws UnsupportedOperationException
- * If the operation is not supported.
+ */
+ public BlankNode createBlankNode();
+
+ /**
+ * Create a blank node based on the given name.
+ * <p>
+ * All {@link BlankNode}s created with the given <code>name</code>
+ * <em>on a particular instance</em> of <code>RDF</code> MUST be
+ * equivalent according to {@link BlankNode#equals(Object)},
+ * <p>
+ * The returned BlankNode MUST NOT be equal to <code>BlankNode</code>
+ * instances returned for any other <code>name</code> or those returned from
+ * {@link #createBlankNode()}.
+ * <p>
+ * The returned BlankNode SHOULD NOT be equivalent to any BlankNodes created
+ * on a <em>different</em> <code>RDF</code> instance, e.g.
+ * different instances of <code>RDF</code> should produce
+ * different blank nodes for the same <code>name</code> unless they
+ * purposely are intending to create equivalent {@link BlankNode}
+ * instances (e.g. a reinstated {@link Serializable} factory).
+ *
+ * @param name
+ * A non-empty, non-null, String that is unique to this blank
+ * node in the context of this {@link RDF}.
+ * @return A BlankNode for the given name
+ */
+ public BlankNode createBlankNode(String name);
+
+ /**
+ * Create a new graph.
+ *
+ * It is undefined if the graph will be persisted by any underlying storage
+ * mechanism.
+ *
+ * @return A new Graph
+ */
+ public Graph createGraph();
+
+ /**
+ * Create a new dataset.
+ *
+ * It is undefined if the dataset will be persisted by any underlying storage
+ * mechanism.
+ *
+ * @return A new Dataset
+ */
+ public Dataset createDataset();
+
+ /**
+ * Create an IRI from a (possibly escaped) String.
+ *
+ * The provided iri string MUST be valid according to the <a
+ * href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">W3C RDF-1.1 IRI</a>
+ * definition.
+ *
+ * @param iri Internationalized Resource Identifier
+ * @return A new IRI
+ * @throws IllegalArgumentException If the provided string is not acceptable, e.g. does not
+ * conform to the RFC3987 syntax.
+ */
+ public IRI createIRI(String iri) throws IllegalArgumentException;
+
+ /**
+ * Create a simple literal.
+ *
+ * The provided lexical form should not be escaped in any sense, e.g. should
+ * not include "quotes" unless those are part of the literal value.
+ *
+ * The returned Literal MUST have a {@link Literal#getLexicalForm()} that is
+ * equal to the provided lexical form, MUST NOT have a
+ * {@link Literal#getLanguageTag()} present, and SHOULD return a
+ * {@link Literal#getDatatype()} that is equal to the IRI
+ * <code>http://www.w3.org/2001/XMLSchema#string</code>.
+ *
+ * @param lexicalForm The literal value in plain text
+ * @return The created Literal
+ * @throws IllegalArgumentException If the provided lexicalForm is not acceptable, e.g. because
+ * it is too large for an underlying storage.
+ */
+ public Literal createLiteral(String lexicalForm)
+ throws IllegalArgumentException;
+
+ /**
+ * Create a literal with the specified data type.
+ *
+ * The provided lexical form should not be escaped in any sense, e.g. should
+ * not include "quotes" unless those are part of the literal value.
+ *
+ * It is RECOMMENDED that the provided dataType is one of the <a
+ * href="http://www.w3.org/TR/rdf11-concepts/#xsd-datatypes">RDF-compatible
+ * XSD types</a>.
+ *
+ * The provided lexical form SHOULD be in the <a
+ * href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-space">lexical
+ * space</a> of the provided dataType.
+ *
+ * The returned Literal SHOULD have a {@link Literal#getLexicalForm()} that
+ * is equal to the provided lexicalForm, MUST NOT have a
+ * {@link Literal#getLanguageTag()} present, and MUST return a
+ * {@link Literal#getDatatype()} that is equivalent to the provided dataType
+ * IRI.
+ *
+ * @param lexicalForm The literal value
+ * @param dataType The data type IRI for the literal value, e.g.
+ * <code>http://www.w3.org/2001/XMLSchema#integer</code>
+ * @return The created Literal
+ * @throws IllegalArgumentException If any of the provided arguments are not acceptable, e.g.
+ * because the provided dataType is not permitted.
+ */
+ public Literal createLiteral(String lexicalForm, IRI dataType)
+ throws IllegalArgumentException;
+
+ /**
+ * Create a language-tagged literal.
+ *
+ * The provided lexical form should not be escaped in any sense, e.g. should
+ * not include "quotes" unless those are part of the literal value.
+ *
+ * The provided language tag MUST be valid according to <a
+ * href="http://tools.ietf.org/html/bcp47">BCP47</a>, e.g. <code>en</code>.
+ *
+ * The provided language tag <a
+ * href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string"
+ * >MAY be converted to lower case</a>.
+ *
+ * The returned Literal SHOULD have a {@link Literal#getLexicalForm()} which
+ * is equal to the provided lexicalForm, MUST return a
+ * {@link Literal#getDatatype()} that is equal to the IRI
+ * <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#langString</code>, and
+ * MUST have a {@link Literal#getLanguageTag()} present which SHOULD be
+ * equal to the provided language tag (compared as
+ * {@link String#toLowerCase(Locale)} using {@link Locale#ENGLISH}).
+ *
+ * @param lexicalForm The literal value
+ * @param languageTag The non-empty language tag as defined by <a
+ * href="http://tools.ietf.org/html/bcp47">BCP47</a>
+ * @return The created Literal
+ * @throws IllegalArgumentException If the provided values are not acceptable, e.g. because the
+ * languageTag was syntactically invalid.
+ */
+ public Literal createLiteral(String lexicalForm, String languageTag)
+ throws IllegalArgumentException;
+
+ /**
+ * Create a triple.
+ *
+ * The returned Triple SHOULD have a {@link Triple#getSubject()} that is
+ * equal to the provided subject, a {@link Triple#getPredicate()} that is
+ * equal to the provided predicate, and a {@link Triple#getObject()} that is
+ * equal to the provided object.
+ *
+ * @param subject The IRI or BlankNode that is the subject of the triple
+ * @param predicate The IRI that is the predicate of the triple
+ * @param object The IRI, BlankNode or Literal that is the object of the triple
+ * @return The created Triple
+ * @throws IllegalArgumentException If any of the provided arguments are not acceptable, e.g.
+ * because a Literal has a lexicalForm that is too large for an
+ * underlying storage.
+ */
+ public Triple createTriple(BlankNodeOrIRI subject, IRI predicate,
+ RDFTerm object) throws IllegalArgumentException;
+
+ /**
+ * Create a quad.
+ * <p>
+ * The returned Quad SHOULD have a
+ * {@link Quad#getGraphName()} that is equal to the provided graphName, a
+ * {@link Quad#getSubject()} that is
+ * equal to the provided subject, a {@link Quad#getPredicate()} that is
+ * equal to the provided predicate, and a {@link Quad#getObject()} that is
+ * equal to the provided object.
+ *
+ * @param graphName The IRI or BlankNode that this quad belongs to, or <code>null</code> for the public graph
+ * @param subject The IRI or BlankNode that is the subject of the quad
+ * @param predicate The IRI that is the predicate of the quad
+ * @param object The IRI, BlankNode or Literal that is the object of the quad
+ * @return The created Quad
+ * @throws IllegalArgumentException If any of the provided arguments are not acceptable, e.g.
+ * because a Literal has a lexicalForm that is too large for an
+ * underlying storage.
+ */
+ public Quad createQuad(BlankNodeOrIRI graphName, BlankNodeOrIRI subject, IRI predicate,
+ RDFTerm object) throws IllegalArgumentException;
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/api/src/test/java/org/apache/commons/rdf/api/AbstractRDFTermFactoryTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
----------------------------------------------------------------------
diff --cc jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
index 81fb532,fd65c2a..22010f7
--- a/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
+++ b/jsonld-java/src/test/java/org/apache/commons/rdf/jsonldjava/JsonLdFactoryTest.java
@@@ -18,7 -18,8 +18,8 @@@
package org.apache.commons.rdf.jsonldjava;
import org.apache.commons.rdf.api.AbstractRDFTermFactoryTest;
-import org.apache.commons.rdf.api.RDFFactory;
+import org.apache.commons.rdf.api.RDF;
+ import org.junit.Assume;
import org.junit.Ignore;
import org.junit.Test;
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/MemoryRDFTermFactoryTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/NativeStoreGraphTest.java
----------------------------------------------------------------------
diff --cc rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/NativeStoreGraphTest.java
index e5a9772,91a0b14..3697069
--- a/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/NativeStoreGraphTest.java
+++ b/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/NativeStoreGraphTest.java
@@@ -61,13 -61,9 +61,12 @@@ public class NativeStoreGraphTest exten
Set<RDF4JBlankNode> context = Collections.singleton(rdf4jFactory.createBlankNode());
return rdf4jFactory.asRDFTermGraph(getRepository(), context);
}
+ @Override
public Dataset createDataset() {
- return rdf4jFactory.asRDFTermDataset(getRepository());
+ throw new UnsupportedOperationException("Can't create more than one Dataset in this test");
+ // ...as the below would re-use the same repository:
+ //return rdf4jFactory.asRDFTermDataset(getRepository());
}
-
// Delegate methods
public RDF4JBlankNode createBlankNode() {
http://git-wip-us.apache.org/repos/asf/incubator-commonsrdf/blob/fa27a178/rdf4j/src/test/java/org/apache/commons/rdf/rdf4j/Rdf4JRDFTermFactoryTest.java
----------------------------------------------------------------------