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. | * |
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 |
* 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 .
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 |