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

如何在Google Colab中通过Python连接Apache Jena Fuseki执行SPARQL查询?

可行方案及解决办法

问题原因

你代码里的http://localhost:3030/Quran/sparql指向的是Colab云端虚拟机的本地地址,而你的Apache Jena Fuseki运行在自己的本地设备上,两者不在同一个网络环境,因此Colab无法连接到你本地的Fuseki服务,导致出现Cannot assign requested address错误。

两种可行解决方案

方案一:在Colab虚拟机内部部署Fuseki并加载本体

直接在Colab的云端虚拟机里安装、启动Fuseki,上传你的本体文件后进行查询,步骤如下:

  1. 安装Apache Jena Fuseki
    在Colab单元格中运行以下命令下载并解压Fuseki:

    !wget https://dlcdn.apache.org/jena/binaries/apache-jena-fuseki-4.9.0.tar.gz
    !tar -xzf apache-jena-fuseki-4.9.0.tar.gz
    
  2. 后台启动Fuseki服务
    使用nohup让Fuseki在后台运行,避免阻塞Colab:

    !cd apache-jena-fuseki-4.9.0 && nohup ./fuseki-server &
    
  3. 上传本体文件到Colab
    点击Colab左侧面板的「文件」图标,选择「上传到会话存储」,把你的本体文件(比如quran-ontology.ttl)上传到Colab虚拟机中。

  4. 创建数据集并加载本体
    使用Fuseki的命令行工具tdbloader加载本体到名为Quran的数据集:

    !cd apache-jena-fuseki-4.9.0 && ./tdbloader --loc=databases/Quran /content/quran-ontology.ttl
    

    (注意替换/content/quran-ontology.ttl为你实际上传的本体文件路径)

  5. 执行原有查询代码
    此时Fuseki运行在Colab自己的虚拟机里,你的原有SPARQL查询代码可以直接运行,无需修改端点地址。

方案二:将本地Fuseki暴露给公网供Colab访问

如果你想继续使用本地的Fuseki服务,可以通过内网穿透工具把本地3030端口映射到公网,步骤如下:

  1. 本地启动Fuseki并开放端口
    确保本地Fuseki正常运行,并且电脑防火墙允许3030端口的入站连接。

  2. 使用内网穿透工具映射端口
    下载ngrok并运行以下命令(替换3030为你的Fuseki端口):

    ./ngrok http 3030
    

    运行后会生成一个公网URL(比如https://abc123.ngrok.io)。

  3. 修改Colab代码中的SPARQL端点
    将代码里的http://localhost:3030/Quran/sparql替换为ngrok生成的公网URL,比如:

    sparql = SPARQLWrapper('https://abc123.ngrok.io/Quran/sparql')
    

    之后即可正常执行查询。

注意:使用内网穿透时,公网URL会定期变化,且要注意数据安全,查询完成后建议关闭ngrok和Fuseki的公网访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:02:18