SPARQL Anything behaves as a standard SPARQL query engine. For example, the SPARQL Anything server will act as a virtual endpoint that can be queried exactly as a remote SPARQL endpoint. In addition, SPARQL Anything provides a rich Command Line Interface (CLI). For information for how to run SPARQL Anything, please see the quickstart and usage sections of the documentation.
In order to instruct the query processor to delegate the execution to SPARQL Anything, you can use the following IRI-schema within SERVICE clauses.
x-sparql-anything ':' ([option] ('=' [value])? ','?)+
A minimal URI that uses only the resource locator is also possible.
x-sparql-anything ':' URL
In this case SPARQL Anything guesses the data source type from the file extension.
Alternatively, options can be provided as basic graph pattern inside the SERVICE clause as follows
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:> {
fx:properties fx:location "https://sparql-anything.cc/example1.json" .
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Note that
- The SERVICE IRI scheme must be
x-sparql-anything:
. - Each triplification option to pass to the engine corresponds to a triple of the Basic Graph Pattern inside the SERVICE clause.
- Such triples must have
fx:properties
as subject,fx:[OPTION-NAME]
as predicate, and a literal or a variable as object.
You can also mix the two modalities as follows.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:blank-nodes=false> {
fx:properties fx:location "https://sparql-anything.cc/example1.json" .
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Option name | Description | Valid Values | Default Value |
---|---|---|---|
location* | The URL of the data source. | Any valid URL or (absolute or relative) path of the file system. | * |
content* | The content to be transformed. | Any valid literal. | * |
command* | An external command line to be executed. The output is handled according to the option 'media-type' | Any valid literal. | * |
read-from-std-in* | It tells SPARQL Anything to read the content to be transformerd from standard input (see issue #244) | true/false | false |
from-archive | The filename of the resource to be triplified within an archive. | Any filename. | No value |
root | The IRI of generated root resource. The root will be used as a namespace for the graphs and containers that will be generated. | Any valid IRI. | location (in the case of location argument set) or 'http://sparql.xyz/facade-x/data/' + md5Hex(content) (in the case of content argument set) or 'http://sparql.xyz/facade-x/data/' + md5Hex(command) (in the case of command argument set) |
media-type | The media-type of the data source. | Any valid Media-Type. Supported media types are specified in the pages dedicated to the supported formats | No value (the media-type will be guessed from the the file extension) |
namespace | The namespace prefix for the properties and classes that will be generated. | Any valid namespace prefix. | http://sparql.xyz/facade-x/data/ |
blank-nodes | It tells SPARQL Anything to generate blank nodes or not. | true/false | true |
trim-strings | Trim all string literals. | true/false | false |
null-string | Do not produce triples where the specified string would be in the object position of the triple. | Any string | No value |
triplifier | It forces sparql.anything to use a specific triplifier for transforming the data source | A canonical name of a Java class | No value |
charset | The charset of the data source. | Any charset. | UTF-8 |
metadata | It tells SPARQL Anything to extract metadata from the data source and to store it in the named graph with URI <http://sparql.xyz/facade-x/data/metadata> More details | true/false | false |
ondisk | It tells SPARQL Anything to use an on disk graph (instead of the default in memory graph). The string should be a path to a directory where the on disk graph will be stored. Using an on disk graph is almost always slower (than using the default in memory graph) but with it you can triplify large files without running out of memory. | A path to a directory | No value |
ondisk.reuse | When using an on disk graph, it tells sparql.anything to reuse the previous on disk graph. | true/false | true |
strategy | The execution strategy. 0 = in memory, all triples; 1 = in memory, only triples matching any of the triple patterns in the where clause | 0,1 | 1 |
slice | The resource is sliced and the SPARQL query executed on each one of the parts. Supported by: CSV (row by row); JSON (when array slice by item, when json object requires json.path ); XML (requires xml.path ) |
true/false | false |
use-rdfs-member | It tells SPARQL Anything to use the (super)property rdfs:member instead of container membership properties (rdf:_1, rdf:_2 ...) | true/false | false |
annotate-triples-with-slot-keys | It tells SPARQL Anything to annotate slot statements with slot keys (see issue #378) | true/false | false |
generate-predicate-labels | It tells SPARQL Anything to create labels for extracted predicates and classes (see issue #462) | true/false | false |
audit | It tells SPARQL Anything to generate an additional graph containing information for auditing the result of the triplification. The audit graph has the URI <http://sparql.xyz/facade-x/data/audit> | true/false | false |
* It is mandatory to provide either location
, content
, or command
.
location
tells the SPARQL Anything engine the URL of the input resource.
Any valid URL or (absolute or relative) path of the file system.
It is mandatory to provide either location
, content
, or command
.
UC1: Retrieving from https://sparql-anything.cc/example1.json the names of the TV Series starring Courtney Cox.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:https://sparql-anything.cc/example1.json> {
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Result
seriesName |
---|
"Cougar Town" |
"Friends" |
UC2: Retrieving from /absolute/path/to/example1.json the names of the TV Series starring Courtney Cox.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:/absolute/path/to/example1.json> {
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Result
seriesName |
---|
"Cougar Town" |
"Friends" |
UC2: Retrieving from relative/path/to/example1.json the names of the TV Series starring Courtney Cox.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:relative/path/to/example1.json> {
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Result
seriesName |
---|
"Cougar Town" |
"Friends" |
The content to be transformed.
Note: if the media-type
is not provided, the content is interpreted as plain text.
Any valid literal.
It is mandatory to provide either location
, content
, or command
.
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT (count(*) AS ?c)
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "one,two,tree" ;
fx:txt.split "," .
?s fx:anySlot ?o
}
}
Result
-----
| c |
=====
| 4 |
-----
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT (count(*) AS ?c)
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "[\"one\",\"two\",\"three\", \"four\"]" ;
fx:media-type "application/json" .
?s fx:anySlot ?o
}
}
Result
-----
| c |
=====
| 4 |
-----
An external command line to be executed.
The output is handled according to the option 'media-type'. If the 'media-type' is not provided, the output is interpreted as plain text.
Note: Don't use double quotes to delimit command arguments.
For example, if you want to execute the command echo "[\"one\",\"two\",\"three\", \"four\"]"
just provide echo [\"one\",\"two\",\"three\", \"four\"]
as option (see example below).
Any valid command line.
It is mandatory to provide either location
, content
, or command
.
UC1: Count the number of items in the JSON Array generated by the command echo "[\"one\",\"two\",\"three\", \"four\"]"
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT (COUNT(?o) AS ?nOfItems)
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:command "echo [\"one\",\"two\",\"three\", \"four\"]" ;
fx:media-type "application/json" .
?s fx:anySlot ?o
}
}
Result
------------
| nOfItems |
============
| 4 |
------------
The filename of the resource to be triplified within an archive.
Any filename
No Value
UC1: Select and triplify only .csv and .txt files within the archive available at https://sparql-anything.cc/examples/example.tar
See also Archive
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?s1 ?p1 ?o1 .
}
WHERE
{ SERVICE <x-sparql-anything:location=https://sparql-anything.cc/examples/example.tar>
{ fx:properties
fx:archive.matches ".*txt|.*csv" .
?s fx:anySlot ?file1
SERVICE <x-sparql-anything:>
{ fx:properties
fx:location ?file1 ;
fx:from-archive "https://sparql-anything.cc/examples/example.tar" .
?s1 ?p1 ?o1
}
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ rdf:type fx:root ;
rdf:_1 [ rdf:_1 "Year" ;
rdf:_2 "Make" ;
rdf:_3 "Model" ;
rdf:_4 "Description" ;
rdf:_5 "Price"
] ;
rdf:_2 [ rdf:_1 "1997" ;
rdf:_2 "Ford" ;
rdf:_3 "E350" ;
rdf:_4 "ac, abs, moon" ;
rdf:_5 "3000.00"
] ;
rdf:_3 [ rdf:_1 "1999" ;
rdf:_2 "Chevy" ;
rdf:_3 "Venture \"Extended Edition\"" ;
rdf:_4 "" ;
rdf:_5 "4900.00"
] ;
rdf:_4 [ rdf:_1 "1999" ;
rdf:_2 "Chevy" ;
rdf:_3 "Venture \"Extended Edition, Very Large\"" ;
rdf:_4 "" ;
rdf:_5 "5000.00"
] ;
rdf:_5 [ rdf:_1 "1996" ;
rdf:_2 "Jeep" ;
rdf:_3 "Grand Cherokee" ;
rdf:_4 "MUST SELL!\nair, moon roof, loaded" ;
rdf:_5 "4799.00"
]
] .
[ rdf:type fx:root ;
rdf:_1 "this is a test"
] .
The IRI of generated root resource. The root will be used as a namespace for the graphs and containers that will be generated.
Any valid IRI.
location + '#' (in the case of location argument set)
or
'http://sparql.xyz/facade-x/data/' + md5Hex(content) + '#' (in the case of content argument set)
or
'http://sparql.xyz/facade-x/data/' + md5Hex(command) + '#'(in the case of command argument set)
UC1: Set the root of the Facade-X model generated from the JSON Object {"name":"Vincent", "surname": "Vega"} as http://example.org/myRoot
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\"}" ;
fx:media-type "application/json" ;
fx:root "http://example.org/myRoot" ;
fx:blank-nodes false .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
<http://example.org/myRoot>
a fx:root ;
<http://sparql.xyz/facade-x/data/name>
"Vincent" ;
<http://sparql.xyz/facade-x/data/surname>
"Vega" .
UC2: Set the root of the Facade-X model generated from the string "Hello World!" as http://example.org/myRoot
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "Hello World!" ;
fx:root "http://example.org/myRoot" ;
fx:blank-nodes false .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
<http://example.org/myRoot> a fx:root ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> "Hello World!" .
Note: blank-nodes=false is needed for generating named entities instead of blank nodes.
The media-type of the data source.
Any valid Media-Type. Supported media types are specified in the pages dedicated to the supported formats
No value (the media-type will be guessed from the file extension).
UC1: Enforcing media-type for content string to count the number of elements in the JSON Array ["one", "two", "three", "four"]
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT (count(*) AS ?c)
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "[\"one\",\"two\",\"three\", \"four\"]" ;
fx:media-type "application/json" .
?s fx:anySlot ?o
}
}
Result
-----
| c |
=====
| 4 |
-----
The namespace prefix for the properties and classes that will be generated.
Any valid namespace prefix.
http://sparql.xyz/facade-x/data/
UC1: Set the namespace prefix to http://example.org/myNamespace/ for the properties generated from the JSON Object {"name":"Vincent", "surname": "Vega"}
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\"}" ;
fx:media-type "application/json" ;
fx:namespace "http://example.org/myNamespace/" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
[ a fx:root ;
<http://example.org/myNamespace/name>
"Vincent" ;
<http://example.org/myNamespace/surname>
"Vega"
] .
It tells SPARQL Anything to generate blank nodes or not.
true/false
true
UC1: Transform the JSON Object {"name":"Vincent", "surname": "Vega", "performer" : {"name": "John", "surname": "Travolta"} } into RDF without using blank nodes
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\", \"performer\" : {\"name\": \"John\", \"surname\": \"Travolta\"}}" ;
fx:media-type "application/json" ;
fx:blank-nodes false .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
<http://sparql.xyz/facade-x/data/8e6a66944bcc9366cad8377556ea2302#>
a fx:root ;
xyz:name "Vincent" ;
xyz:performer <http://sparql.xyz/facade-x/data/8e6a66944bcc9366cad8377556ea2302#/performer> ;
xyz:surname "Vega" .
<http://sparql.xyz/facade-x/data/8e6a66944bcc9366cad8377556ea2302#/performer>
xyz:name "John" ;
xyz:surname "Travolta" .
Trim all string literals.
true/false
false
UC1: Transform the JSON Object {"name":"Vincent", "surname": "Vega", "performer" : {"name": "John ", "surname": " Travolta"} } and trim the strings "John " and " Travolta"
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\", \"performer\" : {\"name\": \"John \", \"surname\": \" Travolta\"} }" ;
fx:media-type "application/json" ;
fx:trim-strings true .
?s ?p ?o
}
}
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
xyz:name "Vincent" ;
xyz:performer [ xyz:name "John" ;
xyz:surname "Travolta"
] ;
xyz:surname "Vega"
] .
Do not produce triples where the specified string would be in the object position of the triple.
Any string
No value
UC1: Transform the JSON Object {"name":"Vincent", "surname": "Vega", "ID": "myNull", "performer" : {"name": "John", "surname": "Travolta"} } and consider the string "myNull" as null
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\", \"ID\": \"myNull\", \"performer\" : {\"name\": \"John\", \"surname\": \"Travolta\"} }" ;
fx:media-type "application/json" ;
fx:null-string "myNull" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
xyz:name "Vincent" ;
xyz:performer [ xyz:name "John" ;
xyz:surname "Travolta"
] ;
xyz:surname "Vega"
] .
It forces SPARQL Anything to use a specific triplifier for transforming the data source.
A canonical name of a Java class
No value
UC1: Transform the JSON Object {"name":"Vincent", "surname": "Vega"" } (provided as a content string)into RDF by using the JSON Triplifier
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\" }" ;
fx:triplifier "io.github.sparqlanything.json.JSONTriplifier" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
xyz:name "Vincent" ;
xyz:surname "Vega"
] .
The charset of the data source.
Any charset.
UTF-8
UC1: Triplify the UTF-16 file located at https://sparql-anything.cc/examples/utf16.txt
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:location "https://sparql-anything.cc/examples/utf16.txt" ;
fx:charset "UTF16" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
"UTF-16 test file"
] .
It tells SPARQL Anything to use an on disk graph (instead of the default in memory graph). The string should be a path to a directory where the on disk graph will be stored. Using an on disk graph is almost always slower (than using the default in memory graph) but with it you can triplify large files without running out of memory.
A path to a directory.
No value
UC1: Use on disk graph for triplifying the JSON Object {"name":"Vincent", "surname": "Vega" } (provided as a content string).
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\" }" ;
fx:ondisk "/tmp" ;
fx:media-type "application/json" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
xyz:name "Vincent" ;
xyz:surname "Vega"
] .
When using an on disk graph, it tells SPARQL Anything to reuse the previous on disk graph.
true/false
true
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "{\"name\":\"Vincent\", \"surname\": \"Vega\" }" ;
fx:ondisk "/tmp/" ;
fx:ondisk.reuse true ;
fx:media-type "application/json" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ a fx:root ;
xyz:name "Vincent" ;
xyz:surname "Vega"
] .
Note: the result doesn't change, but no new ondisk graph is created.
The execution strategy. 0 = in memory, all triples; 1 = in memory, only triples matching any of the triple patterns in the where clause.
0, 1
1
UC1: Retrieving from relative/path/to/example1.json the names of the TV Series starring Courtney Cox.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
SELECT ?seriesName
WHERE {
SERVICE <x-sparql-anything:relative/path/to/example1.json,strategy=0> {
?tvSeries xyz:name ?seriesName .
?tvSeries xyz:stars ?star .
?star fx:anySlot "Courteney Cox" .
}
}
Result
seriesName |
---|
"Cougar Town" |
"Friends" |
Note: the strategy option does not affect the result.
The resource is sliced and the SPARQL query executed on each one of the parts. Supported by: CSV (row by row); JSON (when array slice by item, when json object requires json.path
); XML (requires xml.path
)
true/false
false
UC1: Retrieving name and surname of the actors in https://sparql-anything.cc/examples/simpleArray.json along with the movie they performed in.
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?name ?surname ?movie
WHERE
{ SERVICE <x-sparql-anything:location=https://sparql-anything.cc/examples/simpleArray.json,slice=true>
{ ?p xyz:name ?name ;
xyz:surname ?surname ;
xyz:movie ?movie
}
}
Result
------------------------------------------
| name | surname | movie |
==========================================
| "Vincent" | "Vega" | "Pulp fiction" |
| "Winnfield" | "Vega" | "Pulp fiction" |
| "Beatrix" | "Kiddo" | "Kill Bill" |
------------------------------------------
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT *
WHERE
{ SERVICE <x-sparql-anything:location=https://sparql-anything.cc/examples/simpleArray.json,slice=true>
{ ?p1 xyz:name ?name1 ;
xyz:surname ?surname1 ;
xyz:movie ?movie .
?p2 xyz:name ?name2 ;
xyz:surname ?surname2 ;
xyz:movie ?movie
FILTER ( ?p1 != ?p2 )
}
}
Note: the query contains a join over two slices, therefore, running the query with slicing option enabled affects the result.
Result
---------------------------------------------------------
| p1 | name1 | surname1 | movie | p2 | name2 | surname2 |
=========================================================
---------------------------------------------------------
It tells SPARQL Anything to use the (super)property rdfs:member instead of container membership properties (rdf:_1, rdf:_2 ...)
true/false
false
UC1: Using rdfs:member instead of container membership properties for triplifying the JSON Array [1,2,3]
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:use-rdfs-member true ;
fx:content "[1,2,3]" ;
fx:media-type "application/json" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
[ rdf:type fx:root ;
rdfs:member "3"^^xsd:int , "2"^^xsd:int , "1"^^xsd:int
] .
It tells SPARQL Anything to annotate slot statements with slot keys (see issue #378)
true/false
false
UC1: Using rdfs:member instead of container membership properties for triplifying the JSON Array [1,2,3], but keeping the ordinal number of the slots
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:use-rdfs-member true ;
fx:content "[1,2,3]" ;
fx:annotate-triples-with-slot-keys true ;
fx:media-type "application/json" .
?s ?p ?o
}
}
Result
@prefix fx: <http://sparql.xyz/facade-x/ns/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix xyz: <http://sparql.xyz/facade-x/data/> .
<< _:b0 rdfs:member "1"^^xsd:int >>
fx:slot-key 1 .
_:b0 rdf:type fx:root ;
rdfs:member "3"^^xsd:int , "2"^^xsd:int , "1"^^xsd:int .
<< _:b0 rdfs:member "2"^^xsd:int >>
fx:slot-key 2 .
<< _:b0 rdfs:member "3"^^xsd:int >>
fx:slot-key 3 .
It tells SPARQL Anything to create labels for extracted predicates and classes (see issue #462)
true/false
false
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
CONSTRUCT
{
?s ?p ?o .
}
WHERE
{ SERVICE <x-sparql-anything:>
{ fx:properties
fx:content "<Element1 attr=\"value\"/> " ;
fx:generate-predicate-labels true ;
fx:media-type "application/xml" .
?s ?p ?o
}
}
Result
PREFIX fx: <http://sparql.xyz/facade-x/ns/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xyz: <http://sparql.xyz/facade-x/data/>
[ rdf:type xyz:Element1 , fx:root;
xyz:attr "value"
] .
xyz:attr <http://www.w3.org/2000/01/rdf-schema#label>
"attr" .
xyz:Element1 <http://www.w3.org/2000/01/rdf-schema#label>
"Element1" .
It tells SPARQL Anything to read the content to be transformed from standard input channel (STDIN) -- see issue #244.
When it is set to true, the engine reads from the STDIN and sets the input as the value for the content
option.
Therefore, the input from the STDIN is processed as inline content (and the inline content is overwritten by the input from the STDIN).
true
/false
false
SELECT ?v {
SERVICE <x-sparql-anything:read-from-std-in=true> {
?root a <http://sparql.xyz/facade-x/ns/root> ;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_1> ?v
}
}
Standard Input
abc
Result
?v |
---|
abc |
It tells SPARQL Anything to generate an additional graph containing information for auditing the result of the triplification. The audit graph has the URI <http://sparql.xyz/facade-x/data/audit> For each content graph generated by the triplifier, the audit graph specifies:
- the graph name;
- the number of triples in the content graph;
- whether the graph was retrieved from the cache;
- the datetime when the graph was created;
- a string representation of the SPARQL algebra of the operation that generated the graph.
Note Do not use strategy 1 (i.e. triple filtering) for querying the audit graph (specifically, do not add triple patterns matching the audit graph) otherwise the engine will filter out all the triples in the content graph.
true
/false
false
CONSTRUCT
{
GRAPH ?g
{ ?s ?p ?o .}
}
WHERE
{ SERVICE <x-sparql-anything:content=abc,audit=true,strategy=0>
{ GRAPH ?g
{ ?s ?p ?o }
}
}
Result
<http://sparql.xyz/facade-x/data/900150983cd24fb0d6963f7d28e17f72#> {
[ a <http://sparql.xyz/facade-x/ns/root>;
<http://www.w3.org/1999/02/22-rdf-syntax-ns#_1>
"abc"
] .
}
<http://sparql.xyz/facade-x/data/audit> {
<http://sparql.xyz/facade-x/data/900150983cd24fb0d6963f7d28e17f72#>
a <http://www.w3.org/ns/sparql-service-description#NamedGraph>;
<http://rdfs.org/ns/void#triples>
"2"^^<http://www.w3.org/2001/XMLSchema#long>;
<http://sparql.xyz/facade-x/ns/cachedGraph>
false;
<http://sparql.xyz/facade-x/ns/cachedGraphCreation>
"2024-09-03T14:32:57.174Z"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
<http://sparql.xyz/facade-x/ns/sparqlAlgebra>
"(service <x-sparql-anything:content=abc,audit=true,strategy=0>\n (graph ?g\n (bgp (triple ?s ?p ?o))))\n";
<http://www.w3.org/ns/sparql-service-description#name>
"http://sparql.xyz/facade-x/data/900150983cd24fb0d6963f7d28e17f72#" .
<http://sparql.xyz/facade-x/data/audit#root>
<http://www.w3.org/ns/sparql-service-description#namedGraph>
<http://sparql.xyz/facade-x/data/900150983cd24fb0d6963f7d28e17f72#> .
}
When set to true, the result of the triplification is cached in memory and used to answer the same query again. (see issue #371 and #372).
You can check out whether a query has been evaluated over a cached graph via the fx:cachedGraph
assertion of the audit graph.
true
/false
false
SPARQL Anything relies on Apache Commons HTTP for HTTP connections.
Option name | Description | Valid Values | Default Value |
---|---|---|---|
http.client.* | Calls methods on the HTTPClient Java object. E.g. http.client.useSystemProperties=false means to avoid inheriting Java system properties (Default 'yes') |
||
http.client.useSystemProperties | Use Java System Properties to configure the HTTP Client. | true/false | true |
http.header.* | To add headers to the HTTP request. E.g. http.header.accept=application/json |
||
http.query.* | To add parameters to the query string. E.g. http.query.var=value or http.query.var.1=value to add more variable of the same name |
||
http.form.* | To add parameters to the POST content. E.g. http.form.var=value or http.form.var.1=value to add more variable of the same name |
||
http.method | HTTP Method | GET,POST,... | GET |
http.payload | Sets the payload of the request | ||
http.protocol | Protocol | 0.9,1.0,1.1 | 1.1 |
http.auth.user | Authentication: user name | ||
http.auth.password | Authentication: password | ||
http.redirect | Follow redirect? | true,false | true |