You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jena命名图与联合图查询异常:Fuseki配置错误致无结果

[编辑] 是我的问题:我配置Jena-Fuseki时出错,tdb2:unionDefaultGraph参数未设置为true。难怪Jena未返回预期结果。另外,我不得不承认,我之前没用简单的全三元组查询检查配置。抱歉打扰大家!


Jena查询依赖联合默认图的矛盾问题

我正试图让一个查询在Jena中正常运行。该查询由两部分组成:

  • 子查询通过:in关系,检查指定图被虚拟“嵌套”在哪些其他图中
  • 主查询针对子查询返回的每个嵌套图,检查该指定图在嵌套图中是否存在属性

该查询在部分RDF存储中可正常运行,在另一些存储中返回略超预期的结果,还有部分存储完全无法运行,Jena便属于后者,但我不确定原因,也不清楚是否是自己操作有误。

该查询依赖于默认图为所有命名图的并集。Jena的TDB2可通过tdb2:unionDefaultGraph true参数配置实现此功能,我已在Jena-Fuseki的Docker容器中进行了配置。

示例数据

PREFIX :   <http://ex.org> .

GRAPH :A { :A :pA :DS .}
GRAPH :B { :A :in :B .
           :A :pB :DN .}
GRAPH :C { :B :in :C .}
GRAPH :D { :C :in :D .
           :A :pD :DN .}

完整查询语句

PREFIX :   <http://ex.org> 

SELECT DISTINCT ?graph ?prop ?val ?nesting
# FROM <urn:x-arq:UnionGraph>
WHERE {
    BIND ( :A AS ?graph ) .
    # 子查询:收集?graph被嵌套的图
    { SELECT ?graph ?nesting WHERE {
        ?graph :in* ?path .
        ?path  :in+ ?nesting . 
    } }
    # 嵌套图中?graph的属性信息
    GRAPH ?nesting { ?graph ?prop ?val }
    FILTER ( ?prop != :in )
} ORDER BY ?prop

# 预期结果
# graph     prop    val     nesting
# :A        :pB     :DN     :B   
# :A        :pD     :DN     :D   

在Jena中,无论是否添加FROM子句,该查询均无结果返回。

分部分测试结果

子查询测试

PREFIX :   <http://ex.org>

SELECT DISTINCT ?graph ?nesting
FROM <urn:x-arq:UnionGraph>
WHERE {
    BIND ( :A AS ?graph ) .
    ?graph :in* ?path .
    ?path  :in+ ?nesting . 
} ORDER BY ?nesting

# 预期结果
# graph     nesting
# :A        :B
# :A        :C
# :A        :D

添加FROM <urn:x-arq:UnionGraph>子句时,子查询可正常返回预期结果;无该子句则无结果。

主查询测试

PREFIX :   <http://ex.org>

SELECT DISTINCT ?graph ?prop ?val ?nesting
# FROM <urn:x-arq:UnionGraph>
WHERE {
    BIND ( :A AS ?graph ) .
    GRAPH ?nesting { ?graph ?prop ?val }
    FILTER ( ?prop != :in )
} ORDER BY ?graph ?nesting

# 预期结果
# graph     prop    val       nesting  
# :A        :pA     :DS       :A 
# :A        :pB     :DN       :B
# :A        :pD     :DN       :D

添加FROM <urn:x-arq:UnionGraph>子句时主查询无结果;无该子句则正常返回预期结果。

如此看来,子查询依赖FROM子句引用联合默认图,而主查询仅在无该引用时生效。情况是否如此?若是,该如何解决此矛盾?


内容的提问来源于stack exchange,提问作者tom lurge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 08:20:06