Я пытаюсь захватить некоторое определение в dbpedia внутри моего тезауруса.Как использовать Sparql Содержит в соответствии с аналогичной строкой?
Хотя может найти страну, у которой есть метка, соответствующая моей стране, я не получаю все из них. Поэтому я пытаюсь сопоставить подобный ярлык с содержимым, но он не работает.
Любая идея, почему.
SELECT distinct ?idbcountry ?label ?labelDb ?def
WHERE {
?idbcountry a skos:Concept .
?idbcountry rdfs:label ?label .
?idbcountry skos:inScheme iadb:IdBCountries .
FILTER(lang(?label) = "en")
Service <http://dbpedia.org/sparql> {
?s a <http://dbpedia.org/ontology/Country> .
?s rdfs:label ?labelDb .
FILTER(CONTAINS (?labelDb, ?label)).
?s rdfs:comment ?def .
FILTER(lang(?def) = "en") .
FILTER(lang(?labelDb) = "en") .
}}
Точный запрос соответствия, который работает следующим образом:
ОбразцыSELECT distinct ?idbcountry ?label ?def
WHERE {
?idbcountry a skos:Concept .
?idbcountry rdfs:label ?label .
?idbcountry skos:inScheme iadb:IdBCountries .
FILTER(lang(?label) = "en")
Service <http://dbpedia.org/sparql> {
?s a <http://dbpedia.org/ontology/Country> .
?s rdfs:label ?label .
?s rdfs:comment ?def
FILTER(lang(?def) = "en")
}
}
EDIT1
данных:
<http://thesaurus.iadb.org/publicthesauri/10157002136735779158437>
rdf:type skos:Concept ;
dct:created "2015-03-27T16:43:48.052-04:00"^^xsd:dateTime ;
rdfs:label "BO"@en ;
rdfs:label "Bolivia"@en ;
rdfs:label "Bolivia"@es ;
rdfs:label "Bolivie"@fr ;
rdfs:label "Bolívia"@pt ;
skos:altLabel "BO"@en ;
skos:definition "Bolivia (/bəˈlɪviə/, Spanish: [boˈliβja], Quechua: Buliwya, Aymara: Wuliwya), officially known as the Plurinational State of Bolivia (Spanish: Estado Plurinacional de Bolivia locally: [esˈtaðo pluɾinasjoˈnal de βoˈliβja]), is a landlocked country located in western-central South America."@en ;
skos:inScheme :IdBCountries ;
skos:prefLabel "Bolivia"@en ;
skos:prefLabel "Bolivia"@es ;
skos:prefLabel "Bolivie"@fr ;
skos:prefLabel "Bolívia"@pt ;
skos:topConceptOf :IdBCountries ;
<http://xmlns.com/foaf/0.1/focus> <http://dbpedia.org/resource/Bolivia> ;
Предположительно, запрос не работает, потому что значение '? labelDB' фактически не содержит значения'? label' в качестве подстроки. Но поскольку вы не указали нам свои данные, вы не можете быть уверены. –
@JeenBroekstra Я знаю, что запросы на подвыборку сначала оцениваются (самые внутренние по отношению к внешним); знаете ли вы, относится ли это также к формам обслуживания? Если это так, то? Label может даже не иметь значения внутри служебного блока. –
@JoshuaTaylor Я не уверен на 100% сам, не глядя на спецификацию, но вы можете быть правы. Если это так, исправление будет состоять в том, чтобы переместить предложение FILTER из предложения SERVICE в _behind_ it - хотя предположительно это сделает запрос намного менее эффективным. –