SPARQL-запрос с двоеточием в предикате - PullRequest
6 голосов
/ 28 апреля 2011

Я пытаюсь запросить данные RDF на веб-сайте connectedgeodata.org для государств внутри страны. В RDF это выглядит так:

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

Как вы могли заметить, предикат содержит экранированное двоеточие, поэтому "% 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".

Я использую версию 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 .
} 

1 Ответ

7 голосов
/ 29 апреля 2011

Символы, закодированные %, не допускаются при использовании пространств имен, в этом случае вам придется использовать полный предикат напрямую (без пространства имен).Работает следующий запрос:

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
}

посмотреть результаты здесь .

...