Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SPARQL Query with colon in predicate

I am trying to query the RDF Data from linkedgeodata.org for States within a Country. In RDF it is represented as such:

<http://linkedgeodata.org/triplify/node1055351027>  <http://linkedgeodata.org/property/is_in%3Acountry> "LT" .

As you might notice, the predicate contains an escaped colon, so "%3A" instead of ":" I was not able to find a suitable SPARQL query for this, these are some of my attempts

?node lgdp:is_in "LT".
?node lgdp:is_in:country "LT".
?node lgdp:is_in%3Acountry "LT".
?node lgdp:is_in\u003Acountry "LT".
?node lgdp:is_in"\u003A"country "LT".

I am using the opensource version of virtuoso as my triple store, this is the errormessage I receive with all except the first form:

    Virtuoso 37000 Error SP030: SPARQL compiler, line 0: Invalid character in SPARQL expression at '\'

SPARQL query:
define sql:big-data-const 0 
#output-format:text/html
define input:default-graph-uri  PREFIX lgdo: 
PREFIX lgdp: 
PREFIX lgd: 
PREFIX pos: 
PREFIX rdf: 

SELECT ?node, ?label
Where {
 ?node a lgdo:State .
 ?node lgdp:is_in\u003Acountry "LT".
 ?node rdfs:label ?label .
} 
like image 872
Markus Avatar asked Apr 28 '11 14:04

Markus


1 Answers

Characters encoded with % are not allowed when using namespaces, in this case you'll have to use the full predicate directly (without the namespace). The following query works:

Prefix lgdo:<http://linkedgeodata.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?node, ?label
Where {
 ?node a lgdo:State .
 ?node <http://linkedgeodata.org/property/is_in%3Acountry> "LT".
 ?node rdfs:label ?label
}

see the results here.

like image 148
Manuel Salvadores Avatar answered Nov 10 '22 10:11

Manuel Salvadores