返回市场
rdf探索者

rdf探索者

作者:emekaokoye39 星标更新:2025-07-03

项目介绍

RDF Explorer v1.0.0

概述

这是一个模型上下文协议(MCP)服务器,提供用于探索和分析基于RDF(Turtle)的知识图谱的对话接口。该服务器支持本地文件模式或SPARQL端点模式。此服务器促进了AI应用程序(主机/客户端)与RDF数据之间的通信,通过SPARQL查询进行图谱探索和数据分析。它是知识图谱研究和AI数据准备的理想工具。

组件

工具

该服务器实现了SPARQL查询和搜索功能:

  • execute_on_endpoint

    • 在外部端点上直接执行SPARQL查询
    • 输入:
      • endpoint (str): 要查询的SPARQL端点URL。
      • query (str): 要执行的SPARQL查询。
      • ctx (Context): FastMCP上下文对象。
    • 返回:以换行符分隔的查询结果字符串,或错误信息。
  • sparql_query

    • 在当前图或活动的外部端点上执行SPARQL查询
    • 输入:
      • query (str): 要执行的SPARQL查询。
      • ctx (Context): FastMCP上下文对象。
      • use_service (bool): 是否在本地模式下使用SERVICE子句进行联邦查询(默认值:True)。
    • 返回:以换行符分隔的查询结果字符串,或错误信息。
  • graph_stats

    • 计算并返回有关图的统计信息,以JSON格式表示
    • 输入:
      • ctx (Context): FastMCP上下文对象。
    • 返回:包含图统计信息的JSON字符串(例如,三元组数量、唯一主体)。
  • count_triples

    • 计算图中的三元组数量。在SPARQL端点模式下禁用;使用自定义提示代替。
    • 输入:
      • ctx (Context): FastMCP上下文对象。
    • 返回:三元组数量的字符串,或错误信息。
  • full_text_search

    • 对图或端点执行全文搜索,避免专有语法。
    • 输入:
      • search_term (str): 要搜索的术语。
      • ctx (Context): FastMCP上下文对象。
    • 返回:以换行符分隔的搜索结果字符串,或错误信息。
  • health_check

    • 检查三元组存储连接的状态。
    • 输入:
      • ctx (Context): FastMCP上下文对象。
    • 返回:如果连接良好,则返回'Healthy',否则返回'Unhealthy: <错误>'。
  • get_mode

    • 获取RDF Explorer的当前模式。对于知识图谱和语义技术用户来说,这有助于验证数据源。
    • 输入:
      • ctx (Context): FastMCP上下文对象。
    • 返回:指示模式和数据集或端点的消息。

资源

该服务器公开了以下资源:

  • schema://all: 从图中检索模式信息(类和属性)。

    • 返回:以换行符分隔的模式元素字符串(类和属性)。
  • queries://{template_name}: 根据名称检索预定义的SPARQL查询模板。

    • 返回:SPARQL查询字符串或'Template not found'。
  • explore://{query_name}: 根据名称执行探索性SPARQL查询,并以JSON形式返回结果。

    • query_name (str): 探索性查询的名称(例如,'classes', 'relationships/URI')。
    • 返回:查询结果的JSON字符串。
  • explore://report: 生成探索性查询的Markdown报告。

    • 返回:Markdown格式的报告字符串。

提示

该服务器公开了以下提示:

  • analyze_graph_structure: 启动带有模式数据的图结构分析。

    • 返回:指导图结构分析的消息列表。
  • find_relationships: 生成一个SPARQL查询来查找给定主题的关系。

    • 返回:用于查找关系的SPARQL查询字符串。
  • text_to_sparql: 将文本提示转换为SPARQL查询并执行它,同时检查令牌限制。

    • prompt (str): 要转换为SPARQL的文本提示。
    • 返回:带有使用统计的查询结果,或错误信息。

配置

在Claude Desktop上安装

开始之前,请确保已安装Claude Desktop

  1. 前往:设置 > 开发者 > 编辑配置

  2. 在您的claude_desktop_config.json中添加以下内容: 在MacOS上:~/Library/Application Support/Claude/claude_desktop_config.json 在Windows上:%APPDATA%/Claude/claude_desktop_config.json

要使用本地RDF Turtle文件,请使用带有--triple-file参数的版本

{
  "mcpServers": {
    "rdf_explorer": {
      "command": "C:\\path\\to\\venv\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\server.py", "--triple-file", "your_file.ttl"]
    }
  }
}

要使用SPARQL端点,请使用带有--sparql-endpoint参数的版本

{
  "mcpServers": {
    "rdf_explorer": {
      "command": "C:\\path\\to\\venv\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\server.py", "--sparql-endpoint", "https://example.com/sparql"]
    }
  }
}
  1. 重启Claude Desktop并开始查询和探索图数据。

  2. 提示:"RDF Explorer正在运行哪种模式?"

使用示例

这里有一些如何使用自然语言探索RDF数据的例子:

本地文件模式下的数据查询

您可以提出如下问题:

  • "显示销售部门的所有员工"
  • "找出最老的前5位客户"
  • "谁在过去一个月购买了超过3种产品?"
  • "列出所有实体"
  • "使用DBpedia端点,列出Michael Jackson的10首歌曲"
  • "使用Wikidata端点,列出5个城市"
  • "计算三元组的数量"
  • "分析图结构"
  • "选择..."
  • "搜索'{text}'"
  • "查找'{URI}'的关系"
  • "RDF Explorer正在运行哪种模式?"

SPARQL端点模式下的数据查询

您可以提出如下问题:

  • "使用DBpedia端点,列出Michael Jackson的10首歌曲"
  • "使用Wikidata端点,列出5个城市"
  • "选择..."
  • "搜索'{text}'"
  • "查找'{URI}'的关系"
  • "RDF Explorer正在运行哪种模式?"

开发

# 克隆仓库
git clone https://github.com/emekaokoye/mcp-rdf-explorer.git
cd mcp-rdf-explorer

# 设置虚拟环境
python -m venv venv
source v
# windows: venv\Scripts\activate

# 安装开发依赖项
pip install -r requirements.txt

# 运行测试
pytest test_rdf_explorer.py -v

许可证

此MCP服务器根据MIT许可证发布。这意味着您可以在遵守MIT许可证条款和条件的前提下自由使用、修改和分发软件。如需更多详情,请参阅项目仓库中的许可证文件。