sparql_client.pl -- SPARQL client library
This module provides a SPARQL client. For example:
?- sparql_query('select * where { ?x rdfs:label "Amsterdam" }', Row, [ host('dbpedia.org'), path('/sparql/')]). Row = row('http://www.ontologyportal.org/WordNet#WN30-108949737') ; false.
Or, querying a local server using an ASK
query:
?- sparql_query('ask { owl:Class rdfs:label "Class" }', Row, [ host('localhost'), port(3020), path('/sparql/')]). Row = true.
HTTPS servers are supported using the scheme(https)
option:
?- sparql_query('select * where { ?x rdfs:label "Amsterdam"@nl }', Row, [ scheme(https), host('query.wikidata.org'), path('/sparql') ]).
- sparql_query(+Query, -Result, +Options) is nondet
- Execute a SPARQL query on an HTTP SPARQL endpoint. Query is an
atom that denotes the query. Result is unified to a term
rdf(S,P,O)
forCONSTRUCT
andDESCRIBE
queries,row(...)
forSELECT
queries andtrue
orfalse
forASK
queries. Options are- host(+Host)
- port(+Port)
- path(+Path)
- scheme(+Scheme)
- The above four options set the location of the server.
- search(+ListOfParams)
- Provide additional query parameters, such as the graph.
- variable_names(-ListOfNames)
- Unifies ListOfNames with a list of atoms that describe the
names of the variables in a
SELECT
query.
Remaining options are passed to http_open/3. The defaults for Host, Port and Path can be set using sparql_set_server/1. The initial default for port is 80 and path is
/sparql/
.For example, the ClioPatria server understands the parameter
entailment
. The code below queries for all triples using _rdfs_entailment.?- sparql_query('select * where { ?s ?p ?o }', Row, [ search([entailment=rdfs]) ]).
- sparql_extra_headers(-List)[private]
- Send extra headers with the request. Note that, although we also process RDF embedded in HTML, we do not explicitely ask for it. Doing so causes some (e.g., http://w3.org/2004/02/skos/core to reply with the HTML description rather than the RDF).
- ssl_verify(+SSL, +ProblemCert, +AllCerts, +FirstCert, +Error)[private]
- Currently we accept all certificates.
- read_reply(+Status, +ContentType, +In, -Close, -Row)[private]
- sparql_set_server(+OptionOrList)
- Set sparql server default options. Provided defaults are:
host, port and repository. For example:
sparql_set_server([ host(localhost), port(8080) path(world) ])
The default for port is 80 and path is
/sparql/
. - sparql_read_xml_result(+Input, -Result)
- Specs from http://www.w3.org/TR/rdf-sparql-XMLres/. The returned
Result term is of the format:
- select(VarNames, Rows)
- Where VarNames is a term
v(Name, ...)
and Rows is a list ofrow(....)
containing the column values in the same order as the variable names. - ask(Bool)
- Where Bool is either
true
orfalse
- variables(+DOM, -Varnames)[private]
- Deals with <variable name=Name>. Head also may contain <link href="..."/>. This points to additional meta-data. Not really clear what we can do with that.
- sub_element(+DOM, +Name, -Atttribs, -Content)[private]
- sparql_read_json_result(+Input, -Result) is det
- The returned Result term is of the format:
- select(VarNames, Rows)
- Where VarNames is a term
v(Name, ...)
and Rows is a list ofrow(....)
containing the column values in the same order as the variable names. - ask(Bool)
- Where Bool is either
true
orfalse