用于匹配多个谓词的SPARQL语法

用于匹配多个谓词的SPARQL语法,sparql,Sparql,我正在查询一个Protege OWL文件,希望得到多个谓词的结果。例如,以下两种模式可以工作: ?restriction owl:onProperty :has_part ; owl:someValuesFrom ?t . 及 我想要两个谓词的组合OR结果。我尝试过以下变化: ?restriction owl:onProperty (:has_part | :surrounded_by) ; owl:someValuesFrom ?t . 但是我尝试过的每件事都会给我一个语法错误(使用Pyt

我正在查询一个Protege OWL文件,希望得到多个谓词的结果。例如,以下两种模式可以工作:

?restriction owl:onProperty :has_part ; owl:someValuesFrom ?t .

我想要两个谓词的组合OR结果。我尝试过以下变化:

?restriction owl:onProperty (:has_part | :surrounded_by) ; owl:someValuesFrom ?t .

但是我尝试过的每件事都会给我一个语法错误(使用Python的ontospy库)。这在SPARQL中可能吗?如果可能,正确的语法是什么?

您可以仅在谓词位置使用
运算符来定义属性路径。您需要的是在前两个图形模式上使用良好的old
UNION
。或者更奇特的是,使用
VALUES?val{:has_part:被}包围?限制owl:onProperty?val;owl:t中的一些值。
-显然
值只在SPARQL 1.1中有效,不确定OntSpy是否支持它。否则,在SPARQL 1.0中使用
UNION`operator@AKSW似乎ontospy确实支持
,而且工作得非常完美。作为答案发布,我将接受。谢谢大家!@AKSW您可以将您的评论作为答案发布吗?您只能在谓词位置使用
|
运算符来定义属性路径。您需要的是在前两个图形模式上使用良好的old
UNION
。或者更奇特的是,使用
VALUES?val{:has_part:被}包围?限制owl:onProperty?val;owl:t中的一些值。
-显然
值只在SPARQL 1.1中有效,不确定OntSpy是否支持它。否则,在SPARQL 1.0中使用
UNION`operator@AKSW似乎ontospy确实支持
,而且工作得非常完美。作为答案发布,我将接受。谢谢大家!@AKSW你能把你的评论作为回答吗?
?restriction owl:onProperty (:has_part | :surrounded_by) ; owl:someValuesFrom ?t .