在 sparql 查询中使用联合

use union in sparql query

我在 2 个 DBpedia 资源之间得到了这个 SPARQL 查询:法国和阿尔斯通

select * where{
<http://dbpedia.org/resource/France> ?pre ?obj.

?obj ?pre1 <http://dbpedia.org/resource/Alstom>
}

而且 returns 没什么

但是如果我这样颠倒主宾:

select * where{
<http://dbpedia.org/resource/Alstom> ?pre ?obj.
?obj ?pre1 <http://dbpedia.org/resource/France>
}

查询 returns 一些结果..

SPARQL Result

有什么方法可以使用 UNION 合并这两个查询吗?

根据您的评论,您只需要使用以下语法的简单联合:

prefix dbpedia: <http://dbpedia.org/resource/>
select * where{
{
    dbpedia:France ?pre ?obj.
    ?obj ?pre1 dbpedia:Alstom.
}
Union {
    dbpedia:Alstom ?pre ?obj.
?obj ?pre1 dbpedia:France
}
}