Как сопоставить точные строковые литералы в SPARQL? - PullRequest
6 голосов
/ 07 апреля 2010

У меня есть этот запрос.Это соответствует всему, что имеет «Юг» в своем названии.Но мне нужен только тот, у которого foaf:name точно "Юг".

SELECT Distinct ?TypeLabel 
WHERE
{
    ?a     foaf:name   "South" .
    ?a     rdf:type    ?Type .
    ?Type  rdfs:label  ?TypeLabel .
}

Ответы [ 3 ]

5 голосов
/ 21 июля 2010

немного поздно, но в любом случае ... Я думаю, это то, что вы ищете:

SELECT Distinct ?TypeLabel Where { 
?a foaf:name ?name . 
?a rdf:type ?Type . 
?Type rdfs:label ?TypeLabel . 
FILTER (?name="South"^^xsd:string)
}

вы можете использовать FILTER с типами xsd, чтобы ограничить результат. надеюсь это поможет... ура!

4 голосов
/ 07 апреля 2010

(Выделение комментариев для этого)

Проблемы с данными

Проблема в данных, а не в вашем запросе. Если использовать следующий запрос:

SELECT DISTINCT ?a 
WHERE { 
    ?a foaf:name "Imran Khan" . 
}

Вы находите (как вы говорите) "Имран Хан Ниази". Но, глядя на запись в dbpedia для Имран Хан , вы увидите оба:

foaf:name "Imran Khan Niazy"
foaf:name "Imran Khan"

Это потому, что RDF допускает многократное использование свойств.

Причина

У «Юга» была та же проблема (альбом, исполнитель и странно «Южный Лутон»). В этих случаях существуют как знакомые имена («Имран Хан», «Юг»), так и более точные имена («Имран Хан Ниази», «Юг (альбом)») в целях правильности или устранения неоднозначности.

Разрешение

Если вы хотите более точное совпадение, попробуйте добавить тип (например, http://dbpedia.org/ontology/MusicalWork для альбома).

Осторожно

Помните, что DBpedia происходит из Википедии, и процесс извлечения не идеален. Это область, в которой хранятся сомнительные данные, поэтому не думайте, что ваш запрос ошибся.

3 голосов
/ 07 апреля 2010

Этот запрос должен точно совпадать с литералом South, а не с литералами, просто содержащими South в качестве подстроки. Для частичных совпадений вы должны перейти на FILTER, например, с. REGEX(). В этом смысле ваш механизм запросов не работает - с каким механизмом запросов вы работаете?

...