Mar*_*kus 6 rdf sparql virtuoso
我试图从linkedgeodata.org查询一个国家内的国家的RDF数据.在RDF中,它表示如下:
<http://linkedgeodata.org/triplify/node1055351027> <http://linkedgeodata.org/property/is_in%3Acountry> "LT" .
Run Code Online (Sandbox Code Playgroud)
您可能会注意到,谓词包含一个转义冒号,所以"%3A"而不是":"我无法为此找到合适的SPARQL查询,这些是我的一些尝试
?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".
Run Code Online (Sandbox Code Playgroud)
我使用开源版的virtuoso作为我的三重存储,这是我收到的错误消息,除了第一个表单:
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 .
}
Run Code Online (Sandbox Code Playgroud)
%使用命名空间时不允许使用编码的字符,在这种情况下,您必须直接使用完整谓词(不使用命名空间).以下查询有效:
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
}
Run Code Online (Sandbox Code Playgroud)
在这里看到结果.