尝试使用rdf4j控制台对sparql端点执行查询,使用属性通配符查找两个节点之间的路径,但没有运气。第一个查询提供了一个错误,如
格式错误查询:非有效(绝对) IRI:
第二个查询使控制台崩溃。我是否应该尝试使用不同的方式来查询端点,因为这可能是rdf4j问题,还是查询本身是错误的?
PREFIX xy: <http://mainuri/>
select
*
where
{
<http://uriOfInstanceOfData> ((<>|!<>)|^(<>|!<>))* ?x .
?x ?p ?o .
?o ((<>|!<>)|^(<>|!<>))* <http://uriOfInstanceOfData>.
}和
PREFIX xy: <http://mainuri/>
select
*
where
{
<http://uriOfInstanceOfData> (xy:|!xy:)* ?x .
?x ?p ?o .
?o (xy:|!xy:)* <http://uriOfInstanceOfData>.
}发布于 2019-10-14 23:28:52
第一个查询在语法上是不正确的:<>不是有效的IRI引用。SPARQL语法允许空字符串,但规范还指出,任何IRI引用都必须是有效的RFC3987 IRI中(经过转义处理后的结果)的字符串。由于IRI在mimimum需要一个方案标识符,因此根据定义,空字符串可能不是有效的IRI。
当我在一个小的测试数据集上尝试它时,第二个查询可以工作。然而,这可能是非常昂贵的处理。
编辑--我实际尝试的查询:
PREFIX xy: <http://mainuri/>
select
*
where
{
rdfs:domain (xy:|!xy:)* ?x .
?x ?p ?o .
?o (xy:|!xy:)* rdf:Property.
}在启用基本RDFS推理的本地内存数据库上,这将提供以下结果:
Evaluating SPARQL query...
+------------------------+------------------------+------------------------+
| x | p | o |
+------------------------+------------------------+------------------------+
| rdfs:domain | rdf:type | rdf:Property |
| rdfs:domain | rdfs:domain | rdf:Property |
+------------------------+------------------------+------------------------+
2 result(s) (28 ms)https://stackoverflow.com/questions/58384296
复制相似问题