Sparql如何在联合搜索中选择一个结果询问另一个服务
如何选择一个rdf可能的标签将其发送到联合搜索 我有一个rdf记录,它有几个到另一个数据库的链接:Sparql如何在联合搜索中选择一个结果询问另一个服务,sparql,semantic-web,dbpedia,virtuoso,federated-queries,Sparql,Semantic Web,Dbpedia,Virtuoso,Federated Queries,如何选择一个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/reso
<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"/>
我怎么能告诉你用它就行了
问候
更新最初作为答案发布
也许我问的问题很糟糕:
我尝试在一次中完成两个不同的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
}
我应用过滤器
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') .
}
我想将其发送到DBPEDIA的服务,但只需发送以下URL:
并非我从第一部分获得的所有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
}
FILTER regex?dbpediaid、'dbpedia'、'i'可能会失败,因为?dbpediaid不是字符串;但是一个URI。相反,您应该执行FILTER regexstr?dbpediaid、'dbpedia'、'i'。但是,第二个查询返回一些结果这一事实使URI似乎被隐式转换为字符串。不过,这可能是您正在使用的特定实现的扩展
但是,当我使用Apache Jena执行以下查询时,得到的结果为空:
prefix dbpedia: <http://dbpedia.org/resource/>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select * where {
bind( dbpedia:Emma_Roberts as ?dbpediaid )
filter regex( ?dbpediaid,'dbpedia','i')
service <http://dbpedia.org/sparql> {
?dbpediaid dbpedia-owl:birthPlace ?naixement
}
}
如果更改为使用str?dbpediaid,则会得到以下结果:
prefix dbpedia: <http://dbpedia.org/resource/>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select * where {
bind( dbpedia:Emma_Roberts as ?dbpediaid )
filter regex( str(?dbpediaid),'dbpedia','i')
service <http://dbpedia.org/sparql> {
?dbpediaid dbpedia-owl:birthPlace ?naixement
}
}
请注意,如果查询引擎首先执行服务部分,那么这可能是一个非常昂贵的查询,因为它将首先检索所有dbpedia owl:birthPlace三元组,将它们带回来,然后与您关心的特定查询进行匹配。如果?dbpediaid的值只是来自一些三重匹配,而不是像我上面所做的那样使用bind,那么可能会有不同的行为。对不起,也许我需要解释一下badly@jordiPallares您发布的答案实际上不是答案,应该是对问题的编辑。我想我理解您试图做的事情:您试图从一个地方而不是DBpedia查询数据,然后在由服务{…}执行的DBpedia查询中使用其中一些值作为参数。对吗?然后你说,因为其中一些与Dbpedia无关,然后Dbpedia向我发送了这样一个错误:…。错误消息并没有说问题在于URI与DBpedia无关,而是说DBpedia返回的是文本而不是SPARQL结果。它返回的实际文本是来自DBpedia:Virtuoso 37000 error SP030:SPARQL编译器的错误消息,第3行:在“:”之前的“u”处的语法错误,我猜想,这是指查询的行:FILTER uo::default-20-7=。我想它是在抱怨默认值20-7,但我不确定。如果你收到了如此详细的错误信息,那么你应该在原始问题中发布它。你确实收到了比原始问题中更详细的错误。你把它贴在了回信里;那就是我复制它的地方!
http://arties.cbuc.cat/openccuc/a10985256/ http://dbpedia.org/resource/Emma_Roberts
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
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
}
prefix dbpedia: <http://dbpedia.org/resource/>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select * where {
bind( dbpedia:Emma_Roberts as ?dbpediaid )
filter regex( ?dbpediaid,'dbpedia','i')
service <http://dbpedia.org/sparql> {
?dbpediaid dbpedia-owl:birthPlace ?naixement
}
}
-------------------------
| dbpediaid | naixement |
=========================
-------------------------
prefix dbpedia: <http://dbpedia.org/resource/>
prefix dbpedia-owl: <http://dbpedia.org/ontology/>
select * where {
bind( dbpedia:Emma_Roberts as ?dbpediaid )
filter regex( str(?dbpediaid),'dbpedia','i')
service <http://dbpedia.org/sparql> {
?dbpediaid dbpedia-owl:birthPlace ?naixement
}
}
--------------------------------------------------------------------------------------
| dbpediaid | naixement |
======================================================================================
| dbpedia:Emma_Roberts | <http://dbpedia.org/resource/Rhinebeck_(village),_New_York> |
--------------------------------------------------------------------------------------