SPARQL
rudof
has some basic support for SPARQL queries, which can be interacted with by means of the query
command.
It is possible not only to perform SPARQL queries on SPARQL endpoints, but also on local files.
Querying over local files
For querying over local files you need both a SPARQL file and a data graph.
The idea is that we will apply the SPARQL query over the provided graph.
For us to do so you just need to use the query
command.
Let's assume you have the following content in a file called user.sparql
:
prefix : <http://example.org/>
prefix schema: <http://schema.org/>
select ?person ?name ?status where {
?person schema:name ?name ;
:status ?status .
}
and the following content in a file called user.ttl
:
prefix : <http://example.org/>
prefix schema: <http://schema.org/>
:a schema:name "Alice" ;
:status :Active ;
schema:knows :a, :b .
:b schema:name "Bob" ;
:status :Waiting ;
schema:knows :c .
:c schema:name "Carol" .
:d schema:name 23 .
:e schema:name "Emily" ;
schema:knows :d .
Then you can run the instruction below.
rudof query -q user.sparql user.ttl
?person ?name ?status
:b "Bob" :Waiting
:a "Alice" :Active
Querying over SPARQL endpoints
It is also possible to run a SPARQL query that obtains its data from a SPARQL endpoint.
However, the idea is the exact same as in the case above, with the difference that the SPARQL endpoint should be provided by means of the -e
argument.
Assuming you have the following content in a file called wikidata_query.sparql
:
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wd: <http://www.wikidata.org/entity/>
select * where {
?person wdt:P31 wd:Q5 ;
wdt:P19 ?birth_place ;
rdfs:label ?label .
?birth_place rdfs:label ?birth_place_name
Filter(Lang(?label)='en' && Lang(?birth_place_name)='en')
} limit 10
You can run the following command to run the SPARQL query:
rudof query -q wikidata.sparql -e wikidata
?person ?birth_place ?label ?birth_place_name
wd:Q517764 wd:Q16 "Rob Pike"@en "Canada"@en
wd:Q518834 wd:Q16 "André Gingras"@en "Canada"@en
wd:Q535692 wd:Q16 "Michael Reed"@en "Canada"@en
wd:Q574507 wd:Q16 "Elza Kephart"@en "Canada"@en
wd:Q579599 wd:Q16 "Isaiah L. Kenen"@en "Canada"@en
wd:Q601125 wd:Q16 "Jack Wetherall"@en "Canada"@en
wd:Q679597 wd:Q16 "Moishe Postone"@en "Canada"@en
wd:Q2896159 wd:Q16 "Benjamin Lumley"@en "Canada"@en
wd:Q2926838 wd:Q16 "Bruno Hébert"@en "Canada"@en
wd:Q2938960 wd:Q16 "Carl Marotte"@en "Canada"@en
Registered endpoints
rudof
contains a list of registered endpoints like wikidata that can be invoked by their name.