Configuration
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.
Passing triplification options via SERVICE IRI
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.
Passing triplification options via Basic Graph Pattern
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:propertiesas 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" .
}
}
General purpose options
Summary
| 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 |
| archive-format | The format of the archive whose URL is specified in from-archive. This option is needed only when the format of the archive (tar or zip) can not be guessed from the URL of the file (see Issue #554). |
Any supported archive format ("zip", "tar") | 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 |
| s3.endpoint | When set to true, the location is interpreted as an endpoint for a the S3 storage service | true/false | false |
| s3.bucket-name | The name of the s3 bucket to use as a source | Any valid bucket name | No value |
| s3.key | The path of the file to retrieve from the s3 bucket | Any valid file name | No value |
| s3.access-key | The key for accessing the s3 bucket (username) | Any valid access key | No value |
| s3.secret-key | The secret key for accessing the s3 bucket (password) | Any valid secret key | No value |
| s3.region | The region of the s3 bucket | Any valid region name | No value |
* It is mandatory to provide either location, content, or command.
location
location tells the SPARQL Anything engine the URL of the input resource.
Note
Paths beginning with '~' are resolved as the home directory of the current user.
Valid Values
Any valid URL or (absolute or relative) path of the file system.
Default value
It is mandatory to provide either location, content, or command.
Examples
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" |
content
The content to be transformed.
Note: if the media-type is not provided, the content is interpreted as plain text.
Valid Values
Any valid literal.
Default Value
It is mandatory to provide either location, content, or command.
Examples
UC1: Count the number of items in the words in "one,two,three"
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 |
-----
UC2: Count the number of items in the JSON Array ["one","two","three"]
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 |
-----
command
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).
Valid Values
Any valid command line.
Default Value
It is mandatory to provide either location, content, or command.
Examples
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 |
------------
from-archive
The filename of the resource to be triplified within an archive.
The format of the archive can be specified via the option archive-format.
This option is only required when the archive format (tar or zip) cannot be determined from the file URL (see Issue #554).
Valid Values
Any filename
Default Value
No Value
Examples
UC1: Select and triplify only .csv and .txt files within the archive available at https://sparql-anything.cc/examples/example.tar
See also Archive
Query
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"
] .
root
The IRI of generated root resource. The root will be used as a namespace for the graphs and containers that will be generated.
Valid Values
Any valid IRI.
Default Value
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)
Examples
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.
media-type
The media-type of the data source.
Valid Values
Any valid Media-Type. Supported media types are specified in the pages dedicated to the supported formats
Default Value
No value (the media-type will be guessed from the file extension).
Examples
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 |
-----
namespace
The namespace prefix for the properties and classes that will be generated.
Valid Values
Any valid namespace prefix.
Default Value
http://sparql.xyz/facade-x/data/
Examples
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"
] .
blank-nodes
It tells SPARQL Anything to generate blank nodes or not.
Valid Values
true/false
Default Value
true
Examples
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-strings
Trim all string literals.
Valid Values
true/false
Default Value
false
Examples
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"
] .
null-string
Do not produce triples where the specified string would be in the object position of the triple.
Valid Values
Any string
Default Value
No value
Examples
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"
] .
triplifier
It forces SPARQL Anything to use a specific triplifier for transforming the data source.
Valid Values
A canonical name of a Java class
Default Value
No value
Examples
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"
] .
charset
The charset of the data source.
Valid Values
Any charset.
Default Value
UTF-8
Examples
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"
] .
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.
Valid Values
A path to a directory.
Default Value
No value
Examples
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"
] .
ondisk.reuse
When using an on disk graph, it tells SPARQL Anything to reuse the previous on disk graph.
Valid Values
true/false
Default Value
true
Examples
UC1:
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.
strategy
The execution strategy. 0 = in memory, all triples; 1 = in memory, only triples matching any of the triple patterns in the where clause.
Valid Values
0, 1
Default Value
1
Examples
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.
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)
Valid Values
true/false
Default Value
false
Examples
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" |
------------------------------------------
UC2: Retrieving pairs of actors that performed in the same movie
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 |
=========================================================
---------------------------------------------------------
use-rdfs-member
It tells SPARQL Anything to use the (super)property rdfs:member instead of container membership properties (rdf:_1, rdf:_2 ...)
Valid Values
true/false
Default Value
false
Examples
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
] .
annotate-triples-with-slot-keys
It tells SPARQL Anything to annotate slot statements with slot keys (see issue #378)
Valid Values
true/false
Default Value
false
Examples
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 .
generate-predicate-labels
It tells SPARQL Anything to create labels for extracted predicates and classes (see issue #462)
Valid Values
true/false
Default Value
false
Examples
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" .
read-from-std-in
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).
Valid Values
true/false
Default Value
false
Examples
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 |
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>
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.
Valid Values
true/false
Default Value
false
Examples
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#> .
}
use-cache
When set to true, the result of the triplification is cached in memory and persists across multiple query executions until the process terminates. This is the user-level cache. (see issue #371, #372, and #585).
Note: Even when use-cache=false (default), SPARQL Anything uses an internal query cache that is automatically enabled for each query execution. This internal cache prevents redundant triplification when the same source is accessed multiple times within a single query (e.g., nested SERVICE clauses). The internal cache is automatically cleared after each query completes.
You can check out whether a query has been evaluated over a cached graph via the fx:cachedGraph assertion of the audit graph.
When to use use-cache=true:
- When executing multiple queries against the same data sources
- When the data sources are large and expensive to triplify
- When the data in the source doesn't change
When to keep use-cache=false (default):
- When source data might chang between query executions
- When memory is limited
- For one-off queries
Valid Values
true/false
Default Value
false
HTTP options
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 |
| http.sleep | Wait the given milliseconds before sending the request |
S3
SPARQL Anything supports access to files stored in S3 buckets (see issue #560).
In order to access such resources, some options must be configured in SPARQL Anything, such as s3.endpoint (a boolean value; if true, the location is interpreted as a URI for the S3 endpoint), s3.bucket-name, s3.key (the file to retrieve from the bucket), s3.access-key (user), s3.secret-key (password) and s3.region.