基本上,我在下面得到了一个SPARQL查询,它与arq 2.8.8一起工作,但不能与arq2.8.4一起工作,因为它不能识别+符号。我真的想要一个查询,可以在arq 2.8.4版本上工作,这是类似于我发布的。我发布的查询基本上是查找彼此相同的所有项目。例如,如果a与b相同,b与c相同,则查询将返回a的b和c。
PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?x owl:sameas+ ?y }发布于 2012-01-22 04:39:59
您正在使用的特性是SPARQL 1.1,因此早期版本的ARQ不支持该特性。要编写与您所做的事情更接近的查询,唯一的方法是执行以下操作之一。
不同长度的并集路径
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT *
WHERE
{
{ ?x owl:sameAs ?y }
UNION
{ ?s owl:sameAs [ owl:sameAs ?y ] . }
UNION
{ ?s owl:sameAs [ owl:sameAs [ owl:sameAs ?y ] ] . }
# Repeat the above pattern up to whatever limit you want
}使用客户端代码
发出初始查询,如下所示:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT * WHERE { ?x owl:sameAs ?y }创建一个?y值列表,然后为每个值发出如下形式的查询:
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT * WHERE { <constant> owl:sameAs ?y }每次用<constant>替换列表中的一个值,然后将?y的新值添加到列表中。
对于这种方法,您需要注意的唯一一件事是跟踪已经为其发出第二个查询的值,以避免重复查询。
https://stackoverflow.com/questions/8954889
复制相似问题