You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2020/05/18 20:51:09 UTC
[jena-site] 02/02: Documentation for RDF*
This is an automated email from the ASF dual-hosted git repository.
andy pushed a commit to branch rdfstar
in repository https://gitbox.apache.org/repos/asf/jena-site.git
commit 120dd96b8ac88ca2db595d62bd0706221b8f4d1b
Author: Andy Seaborne <an...@apache.org>
AuthorDate: Mon May 18 21:50:48 2020 +0100
Documentation for RDF*
---
.gitignore | 2 +
layouts/_default/baseof.html | 4 +-
source/documentation/rdfstar/__index.md | 118 ++++++++++++++++++++++++++++++++
3 files changed, 122 insertions(+), 2 deletions(-)
diff --git a/.gitignore b/.gitignore
index c1a3c44..374f427 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
/resources
target
+.vscode
+
# IntelliJ generated
*.iml
.idea
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index ab63f73..11666c4 100644
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -72,17 +72,17 @@
<li><a href="/documentation/javadoc.html">Javadoc</a></li>
<li><a href="/documentation/rdf/index.html">RDF API</a></li>
<li><a href="/documentation/io/">RDF I/O</a></li>
+ <li><a href="/documentation/fuseki2/index.html">Fuseki</a></li>
<li><a href="/documentation/query/index.html">ARQ (SPARQL)</a></li>
<li><a href="/documentation/rdfconnection/">RDF Connection - SPARQL API</a></li>
<li><a href="/documentation/tdb/index.html">TDB</a></li>
<li><a href="/documentation/tdb2/index.html">TDB2</a></li>
<li><a href="/documentation/query/text-query.html">Text Search</a></li>
<li><a href="/documentation/shacl/index.html">SHACL</a></li>
- <li><a href="/documentation/geosparql/index.html">GeoSPARQL</a></li>
+ <li><a href="/documentation/rdfstar/index.html">RDF*</a></li>
<li><a href="/documentation/tools/index.html">Command-line tools</a></li>
<li><a href="/documentation/hadoop/index.html">Elephas - tools for RDF on Hadoop</a></li>
<li><a href="/documentation/jdbc/index.html">SPARQL over JDBC</a></li>
- <li><a href="/documentation/fuseki2/index.html">Fuseki</a></li>
<li><a href="/documentation/permissions/index.html">Permissions</a></li>
<li><a href="/documentation/assembler/index.html">Assembler</a></li>
<li><a href="/documentation/ontology/">Ontology API</a></li>
diff --git a/source/documentation/rdfstar/__index.md b/source/documentation/rdfstar/__index.md
new file mode 100644
index 0000000..1360a26
--- /dev/null
+++ b/source/documentation/rdfstar/__index.md
@@ -0,0 +1,118 @@
+---
+title: Support of RDF*
+slug: index
+---
+[RDF\*](https://arxiv.org/abs/1406.3399) is an extension to RDF that provides
+a way for one triple to refer to another triple. Another resource about RDF\* is
+[Olaf Hartig's blog entry](https://blog.liu.se/olafhartig/2019/01/10/position-statement-rdf-star-and-sparql-star/).
+
+Example:
+
+```turtle
+<< :john foaf:name "John Smith" >> dct:source <http://example/directory> .
+```
+
+The part `<< :john foaf:name "John Smith" >>` is a triple term and refers to the triple with subject `:john`, property `foaf:name` and object `"John Smith"`.
+
+Triple terms can be in the subject or object position.
+
+Jena provides support for RDF\* and the related SPARQL\*.
+
+Support for RDF* is experimentation in Jena 3.15.0 (released May 2020):
+
+* Turtle, N-Triples, TriG and N-Quads extended for Triple Terms syntax. There is no output in RDF/XML.
+* SPARQL extended with Triple Term syntax for graph matching (in code, use `Syntax.syntaxARQ`).
+* SPARQL Result formats for JSON and XML extended to support Triple Terms in results.
+* Support in memory-based storage (graphs and datasets).
+* Support in the Model API.
+
+All this is active by default in Fuseki.
+
+This support is experimental and subject to change. The aim is to follow the definition of RDF* as well as emerging _de facto_ consensus in other implementations.
+
+Later releases will extend support to persistent storage in [TDB1](/documentation/tdb) and [TDB2](/documentation/tdb2/).
+
+## RDF\*
+
+RDF\* syntax for triple terms is added to the parsers for Turtle, N-Triples, TriG and N-Quads.
+
+Datasets may have graphs that have triple terms that refer to triples anywhere, not just in the same graph.
+
+## SPARQL\*
+
+Matches for triple terms:
+
+```sparql
+SELECT ?name { <<:john foaf:name ?name >> dct:source <http://example/directory> }
+```
+
+Insert triples terms into the default graph to record the graph source.
+
+```sparql
+INSERT { <<?s ?p ?o>> dct:source <http://example/directory> }
+WHERE {
+ GRAPH <http://example/directory> {
+ ?s ?p ?o
+ }
+}
+```
+
+### SPARQL Functions related to triple terms
+
+These functions cause an expression error if passed the wrong type of arguments. `afn:`
+is a prefix for `<http://jena.apache.org/ARQ/function#>`.
+
+| Function | Description |
+| -------- | ----------- |
+| `afn:subject(?t)` | Return the subject of the triple term |
+| `afn:predicate(?t)` | Return the predicate (property) of the triple term |
+| `afn:object(?t)` | Return the object of the triple term |
+| `afn:triple(?s, ?p, ?o)` | Create a triple term from s/p/o |
+| `afn:isTriple(?t)` | Return true if the argument value is a triple term |
+
+### SPARQL results
+
+The syntaxes for SPARQL results from a SELECT query, `application/sparql-results+json`,
+`application/sparql-results+xml` are extended to include triple terms:
+
+The triple term `<< _:b0 <http://example/p> 123 >>` is encoded, in
+`application/sparql-results+json` as:
+
+```json
+ {
+ "type": "triple" ,
+ "value": {
+ "subject": { "type": "bnode" , "value": "b0" } ,
+ "property": { "type": "uri" , "value": "http://example/p" } ,
+ "object": { "type": "literal" , "datatype": "http://www.w3.org/2001/XMLSchema#integer" , "value": "123" }
+ }
+```
+
+and similarly in `application/sparql-results+xml`:
+
+```xml
+ <triple>
+ <subject>
+ <bnode>b0</bnode>
+ </subject>
+ <property>
+ <uri>http://example/p</uri>
+ </property>
+ <object>
+ <literal datatype="http://www.w3.org/2001/XMLSchema#integer">123</literal>
+ </object>
+ </triple>
+```
+
+## Model API
+
+RDF* triple terms are treated as `Resource` to preserve the typed Model API.
+They are occur in the subject and object positions.
+
+A `Resource` contains a `Statement` object if the underlying RDF term is a RDF* triple term.
+
+New methods include:
+
+* `Statement Resource.getStatement()`
+* `Resource Model.createResource(Statement)`
+* `Resource ResourceFactory.createStatement`