Как я могу выбрать одну из возможных меток rdf для отправки в федеративный поиск?
У меня есть запись rdf, у которой есть несколько ссылок на другие базы данных:
<owl:sameAs rdf:resource="http://cantic.bnc.cat/registres/CUCId/a10035400"/>
<owl:sameAs rdf:resource="http://viaf.org/viaf/61502721"/>
<owl:sameAs rdf:resource="http://dbpedia.org/resource/Delfi_Abella"/>
<owl:sameAs rdf:resource="http://id.loc.gov/authorities/names/nr2005020137"/>
<owl:sameAs rdf:resource="http://d-nb.info/gnd/158288475"/>
Я просто получил ссылку на dbpedia, чтобы спросить в dbpedia некоторую информацию, используя ее.
Я создаю этот федеративный поиск, но он не работает:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl/>
PREFIX rdaGr2: <http://rdvocab.info/ElementsGr2/>
PREFIX dbo:<http://dbpedia.org/ontology/>
SELECT *
WHERE {
?autid rdaGr2:dateOfBirth "1991" .
?autid owl:sameAs ?dbpediaid
FILTER regex(?dbpediaid,'dbpedia','i') .
SERVICE <http://dbpedia.org/sparql>
{
?dbpediaid dbo:birthPlace ?naixement
}
}
Что я делаю не так?
Если я использую одиночный поиск:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl/>
PREFIX rdaGr2: <http://rdvocab.info/ElementsGr2/>
PREFIX dbo:<http://dbpedia.org/ontology/>
SELECT *
WHERE {
?autid rdaGr2:dateOfBirth "1991" .
?autid owl:sameAs ?dbpediaid
FILTER regex(?dbpediaid,'dbpedia','i') .
}
Я получаю autid и ссылку на dbpedia.
autid dbpediaid
http://arties.cbuc.cat/openccuc/a10985256/ http://dbpedia.org/resource/Emma_Roberts
Как я могу сказать СЕРВИ, просто используйте его.
С Уважением
Обновление (изначально опубликовано как ответ)
Может я плохо задаю вопрос:
Я пытаюсь сделать два разных sparql всего за один. Используя результаты первой части вопроса (применен фильтр), я пытаюсь обратиться в DBPEDIA, чтобы получить нужные мне результаты.
Из первой части без фильтра
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX owl: <http://www.w3.org/2002/07/owl/>
PREFIX rdaGr2: <http://rdvocab.info/ElementsGr2/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbo:<http://dbpedia.org/ontology/>
SELECT *
WHERE {
?autid rdaGr2:dateOfBirth "1991" .
?autid owl:sameAs ?dbpediaid
}
Я получаю такие результаты:
http://arties.cbuc.cat/openccuc/a10603050/ http://cantic.bnc.cat/registres/CUCId/a10603050
http://arties.cbuc.cat/openccuc/a10603050/ http://viaf.org/viaf/169463957
http://arties.cbuc.cat/openccuc/a10667283/ http://cantic.bnc.cat/registres/CUCId/a10667283
http://arties.cbuc.cat/openccuc/a10667283/ http://viaf.org/viaf/303916880
http://arties.cbuc.cat/openccuc/a10895814/ http://cantic.bnc.cat/registres/CUCId/a10895814
http://arties.cbuc.cat/openccuc/a10895814/ http://viaf.org/viaf/107201286
http://arties.cbuc.cat/openccuc/a10895814/ http://d-nb.info/gnd/140511695
http://arties.cbuc.cat/openccuc/a10895814/ http://id.loc.gov/authorities/names/no2010103795
http://arties.cbuc.cat/openccuc/a10985256/ http://cantic.bnc.cat/registres/CUCId/a10985256
http://arties.cbuc.cat/openccuc/a10985256/ http://viaf.org/viaf/85925873
http://arties.cbuc.cat/openccuc/a10985256/ http://id.loc.gov/authorities/names/no2005021393
http://arties.cbuc.cat/openccuc/a10985256/ http://d-nb.info/gnd/141167203
http://arties.cbuc.cat/openccuc/a10985256/ http://dbpedia.org/resource/Emma_Roberts
http://arties.cbuc.cat/openccuc/a11019682/ http://cantic.bnc.cat/registres/CUCId/a11019682
http://arties.cbuc.cat/openccuc/a11019682/ http://viaf.org/viaf/157747131
http://arties.cbuc.cat/openccuc/a11045553/ http://cantic.bnc.cat/registres/CUCId/a11045553
http://arties.cbuc.cat/openccuc/a11045553/ http://viaf.org/viaf/126161085
Применяю фильтр
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX owl: <http://www.w3.org/2002/07/owl/>
PREFIX rdaGr2: <http://rdvocab.info/ElementsGr2/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbo:<http://dbpedia.org/ontology/>
SELECT *
WHERE {
?autid rdaGr2:dateOfBirth "1991" .
?autid owl:sameAs ?dbpediaid
FILTER regex(?dbpediaid,'dbpedia','i') .
}
чтобы получить один результат:
http://arties.cbuc.cat/openccuc/a10985256/ http://dbpedia.org/resource/Emma_Roberts
И я хочу отправить его в службу DBPEDIA, но просто отправлю этот URL: http://dbpedia.org/resource/Emma_Roberts
Не все URL-адреса, которые я получил из первой части:
http://cantic.bnc.cat/registres/CUCId/a10603050
http://viaf.org/viaf/169463957
http://cantic.bnc.cat/registres/CUCId/a10667283
http://viaf.org/viaf/303916880
http://cantic.bnc.cat/registres/CUCId/a10895814
http://viaf.org/viaf/107201286
http://d-nb.info/gnd/140511695
http://id.loc.gov/authorities/names/no2010103795
http://cantic.bnc.cat/registres/CUCId/a10985256
http://viaf.org/viaf/85925873
http://id.loc.gov/authorities/names/no2005021393
http://d-nb.info/gnd/141167203
http://dbpedia.org/resource/Emma_Roberts
Поскольку некоторые из них не связаны с Dbpedia, DBPEDIA отправляет мне такую ошибку:
Virtuoso RDFZZ Error DB.DBA.SPARQL_REXEC('http://dbpedia.org/sparql', ...) returned Content-Type 'text/plain' status 'HTTP/1.1 400 Bad Request
'
Virtuoso 37000 Error SP030: SPARQL compiler, line 3: syntax error at '_' before ':'
SPARQL query:
define sql:big-data-const 0 SELECT ?naixement
WHERE { <http://dbpedia.org/resource/Emma_Roberts> <http://dbpedia.org/ontology/birthPlace> ?naixement .
FILTER (_::default-20-7 = <http://arties.cbuc.es:8990/CCUCAF>) }
SPARQL query:
define sql:big-data-const 0
#output-format:text/html
define sql:signal-void-variables 1 define get:soft "soft" define input:default-graph-uri <http://arties.cbuc.es:8990/CCUCAF> PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX owl: <http://www.w3.org/2002/07/owl/>
PREFIX rdaGr2: <http://rdvocab.info/ElementsGr2/>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dbo:<http://dbpedia.org/ontology/>
SELECT ?naixement
WHERE {
?autid rdaGr2:dateOfBirth "1991" .
?autid owl:sameAs ?dbpediaid
filter regex( str(?dbpediaid),'dbpedia','i')
SERVICE <http://dbpedia.org/sparql>
{
?dbpediaid dbo:birthPlace ?naixement
}