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

Fuseki查询返回“No data available”但实际存在数据的问题排查

问题:Fuseki查询返回“无可用数据”但默认图可见数据

我在Fuseki UI中执行预定义查询:

SELECT ?subject ?predicate ?object
WHERE {
  ?subject ?predicate ?object
}
LIMIT 25

返回“无可用数据”,但在编辑标签页点击默认图时能看到所有数据。已确认是配置问题,但未找到文档线索。

现有配置信息

  • Shiro匿名访问配置:

    /**/query = anon
    
  • Fuseki端点配置(基础模式):

    fuseki:endpoint [ 
            fuseki:operation fuseki:query ;
            fuseki:name "sparql" ;
            ## Set default-union-graph for this endpoint.
            ja:context [ ja:cxtName "tdb:unionDefaultGraph" ; ja:cxtValue true ] ;
        ] ;
        fuseki:endpoint [
            fuseki:operation fuseki:query ;
            fuseki:name "query" 
        ] ;
    
  • Docker Compose配置:

    version: '3'
    services:
      web:
        image: tomcat:9.0
        ports:
          - "8081:8080"
        volumes:
          - ./logs/fuseki:/etc/fuseki/logs
          - ./logs/tomcat:/usr/local/tomcat/logs
          - ./triplestore/ROOT.war:/usr/local/tomcat/webapps/ROOT.war
          - ./shiro.ini:/etc/fuseki/shiro.ini
          - ./config.ttl:/etc/fuseki/config.ttl
    
  • 数据加载方式(Python脚本):

    def write_to_fuseki():
        print('write to fuseki')
        headers = {'Content-Type': 'text/turtle;charset=utf-8'}
        r = requests.put('http://localhost:8081/dataset/data?default',headers=headers, data=open('ontology/test.ttl', 'rb'), auth=('user', 'pw'))
    

补充信息

  • 通过HTTP请求http://localhost:8081/dataset/data?default可获取包含所有数据的ttl文件;
  • 已尝试WebUI和curl查询,结果一致,仅HTTP下载数据正常。

排查思路

  1. 检查端点默认图配置差异
    当前sparql端点开启了tdb:unionDefaultGraph,但query端点未配置。Fuseki UI默认使用/dataset/query端点,尝试直接访问/dataset/sparql端点执行查询,看是否返回结果。若确实是端点配置问题,给query端点添加相同的联合图配置:

    fuseki:endpoint [
        fuseki:operation fuseki:query ;
        fuseki:name "query" ;
        ja:context [ ja:cxtName "tdb:unionDefaultGraph" ; ja:cxtValue true ] ;
    ] ;
    
  2. 显式指定默认图查询
    在SPARQL查询中显式指定默认图范围,验证是否能获取数据:

    SELECT ?subject ?predicate ?object
    WHERE {
        GRAPH <urn:x-arq:DefaultGraph> {
            ?subject ?predicate ?object
        }
    }
    LIMIT 25
    
  3. 对比两个端点的查询结果
    用curl分别测试两个端点,确认配置差异的影响:

    • 测试sparql端点:
      curl -X POST http://localhost:8081/dataset/sparql --data-urlencode "query=SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 25"
      
    • 测试query端点:
      curl -X POST http://localhost:8081/dataset/query --data-urlencode "query=SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 25"
      
  4. 查看Fuseki日志排查错误
    检查挂载的./logs/fuseki目录下的日志文件,查看执行查询时是否有权限、图访问相关的错误提示。

  5. 验证数据加载的完整性
    确认Python脚本的PUT请求返回状态码是否为200/201,可尝试改用POST请求追加数据(PUT会替换整个默认图的数据,可能导致数据覆盖):

    r = requests.post('http://localhost:8081/dataset/data?default', headers=headers, data=open('ontology/test.ttl', 'rb'), auth=('user', 'pw'))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:20:11