我需要在DBpedia中找到所有以http://dbpedia.org/resource/Benin作为主语或宾语的三元组。这个查询可以给我想要的输出格式(只有三个变量,没有空格):
PREFIX : <http://dbpedia.org/resource/>
SELECT * WHERE {
?s ?p ?o
FILTER (?s=:Benin OR ?o=:Benin)
}
如果我执行以下查询,我会得到类似的结果:
PREFIX : <http://dbpedia.org/resource/>
SELECT * WHERE {
{:Benin ?p ?o}
UNION
{?s ?p :Benin}
}
然而,后者的格式有误。它首先给出了
p
和o
的输出,留下了空白的s
,然后是s
和p
的输出,留下了空白的o
。此外,第一个查询需要更长的执行时间。我将感激您解释这两个查询的机制以及为什么输出会有差异。