gpt4 book ai didi

Jena 上的 OPTION(TRANSITIVE) 的 SPARQL 查询错误

转载 作者:行者123 更新时间:2023-12-02 15:23:42 25 4
gpt4 key购买 nike

我有以下查询

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?type
WHERE
{
{
SELECT *
WHERE
{
?x rdfs:subClassOf ?type .
}
}
OPTION (TRANSITIVE, t_distinct, t_in (?x), t_out (?type) ) .
FILTER (?x = <http://dbpedia.org/ontology/Hospital>)
}

当我将其发送到 Virtuoso 端点时它工作正常,但在我的 Jena 实例上不起作用。具体来说,我收到以下错误:

INFO  [1] 400 Parse error: 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?type
WHERE
{
{
SELECT *
WHERE
{
?x rdfs:subClassOf ?type .
}
}
OPTION (TRANSITIVE, t_distinct, t_in (?x), t_out (?type) ) .
FILTER (?x = <http://dbpedia.org/ontology/Hospital>)
}
Lexical error at line 12, column 39. Encountered: " " (32), after : "OPTION" (17 ms)

如果这是 Virtuoso 特定的函数,我很高兴知道该查询的等效函数可以与 *Jena/Standard SPARQL 配合使用。预期输出应该是:

http://dbpedia.org/ontology/Building
http://dbpedia.org/ontology/ArchitecturalStructure
http://dbpedia.org/ontology/Place
http://dbpedia.org/ontology/d0:Location

代表“Hospital”的所有父类(super class)

最佳答案

这是预期的行为。这部分查询:

OPTION (TRANSITIVE, t_distinct, t_in (?x), t_out (?type) ) 

不是标准 SPARQL 1.1,但它是 Virtuoso 特定的扩展。

Jena 是符合 SPARQL 1.1 的实现。

以下查询使用标准 SPARQL 1.1 语法执行相同的操作,并且应该适用于 Fuseki 和 Virtuoso(刚刚在 dbpedia 端点上进行测试并获得相同的结果):

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?type
WHERE
{
{
SELECT *
WHERE
{
?x rdfs:subClassOf+ ?type .
}
}
FILTER (?x = <http://dbpedia.org/ontology/Hospital>)
}

使用的功能是“属性路径”。

参见http://www.w3.org/TR/sparql11-query/

关于Jena 上的 OPTION(TRANSITIVE) 的 SPARQL 查询错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26008521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com