可以在SPARQL属性路径中将变量用作整数吗?
我目前正在尝试创建指向数据类型值的指针,因为它们不能直接链接。但是,我希望能够从SPARQL环境中评估指针,这是在所需值是有序rdf的一部分的情况下特别提出的:为我列出一些问题。我的方法是在SPARQL查询中使用属性路径,在该查询中,我可以使用指针所附加到的有序列表的已定义个体、属性和索引 给出以下示例数据以及ttl排序列表的缩写语法:可以在SPARQL属性路径中将变量用作整数吗?,sparql,semantic-web,linked-data,propertypath,Sparql,Semantic Web,Linked Data,Propertypath,我目前正在尝试创建指向数据类型值的指针,因为它们不能直接链接。但是,我希望能够从SPARQL环境中评估指针,这是在所需值是有序rdf的一部分的情况下特别提出的:为我列出一些问题。我的方法是在SPARQL查询中使用属性路径,在该查询中,我可以使用指针所附加到的有序列表的已定义个体、属性和索引 给出以下示例数据以及ttl排序列表的缩写语法: ex:myObject ex:somePropery ("1" "2" "3") . ex:myPointer ex:lookAtIndividual ex
ex:myObject ex:somePropery ("1" "2" "3") .
ex:myPointer ex:lookAtIndividual ex:myObject;
ex:lookAtProperty ex:someProperty ;
ex:lookAtIndex "3"^^xsd:integer .
现在我想创建一个SPARQL查询,它基于指针返回给定索引处的值。据我所知,查询可以/应该如下所示:
SELECT ?value
WHERE {
ex:myPointer ex:lookAtIndividual ?individual ;
ex:lookAtProperty ?prop ;
ex:lookAtIndex ?index .
?individual ?prop/rdf:rest{?index-1}/rdf:first ?value .
}
但是,如果我尝试使用TopBraid执行此查询,它会显示一条错误消息,即在预期的
时发现了?索引。我还尝试通过BIND(?index-1 AS?I)
在SPARQL查询中绑定索引,但同样没有成功。如果指向的值未存储在列表中,则不带属性路径的查询可以正常工作
通常是否可以使用SPARQL查询中通过datatype属性连接的值作为属性路径的路径长度 此语法:rdf:rest{}
不是标准的SPARQL。很遗憾,简短的回答是:不,您不能在SPARQL属性路径中使用变量作为整数,原因很简单,您根本不能在SPARQL属性路径中使用整数
在SPARQL标准的早期草案中,有人建议使用这种语法来指定属性路径的最小和最大长度,例如,rdf:rest{1,3}
将匹配长度为1和3之间使用rdf:rest
属性的任何路径。但这从未完全标准化,大多数SPARQL引擎都没有实现它
如果您碰巧使用了一个SPARQL引擎来实现它,那么您必须直接与开发人员联系,询问他们是否可以扩展该机制以允许在此位置使用变量(错误消息向我表明,目前不可能)
顺便说一句:有一个正在发生的事情。它才刚刚开始,但摆在桌面上的一个建议是 即使在属性路径草案中,也不允许使用最小/最大长度变量不可能,没有标准SPARQL。Virtuoso支持它,例如:p{1,3}
,但我不知道有任何系统也允许变量。您必须了解,这将使查询优化几乎不可能,我也看不到任何真实的用例。