1

我想从两个不同的 SPARQL 端点获取人员列表,所以我在de.dbpedia上使用这个查询:

PREFIX category-en: <http://dbpedia.org/resource/Category:>
SELECT distinct *
WHERE {
?name dcterms:subject category-de:Haus_Liechtenstein.
?name rdf:type foaf:Person.
SERVICE <http://dbpedia.org/sparql> {
?name dcterms:subject category-en:Princely_Family_of_Liechtenstein.
?name rdf:type foaf:Person.
}
MINUS {?name dbpedia-owl:deathDate ?d}
}

然后我得到以下错误:

Virtuoso RDFZZ 错误 DB.DBA.SPARQL_REXEC(' http://dbpedia.org/sparql ', ...) has received result with unexpected variable name 'stubvar14'

知道我做错了什么吗?非常感谢!

4

1 回答 1

2

所以问题是,虽然这两个查询单独工作正常,但service组合查询中的部分试图根据第二组过滤第一组。我认为你缺少的是一个工会:

PREFIX category-en: <http://dbpedia.org/resource/Category:>
SELECT distinct count(?name)
WHERE {
{
    ?name dcterms:subject category-de:Haus_Liechtenstein.
    ?name rdf:type foaf:Person.
}
union{
    SERVICE silent <http://dbpedia.org/sparql>{
    ?name dcterms:subject category-en:Princely_Family_of_Liechtenstein.
    ?name rdf:type foaf:Person.
}
}
MINUS {?name dbpedia-owl:deathDate ?d}
}
于 2015-04-10T12:07:46.337 回答