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 <[email protected]>
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`

Reply via email to