agentic_huge_data_base / wiki
页面 Cognee · 12.8 本体集成·DeepWiki 中文全文译文

12.8 · 本体集成(Ontology Integration)

记忆管道与知识图谱构建 · 聚焦本章的模块关系、源码依据与实现要点。

项目Cognee 章节12.8 状态全文译文 模块图谱与关系、系统架构、接口与服务契约、配置治理
源码线索
  • cognee/api/v1/ontologies/__init__.py
  • cognee/api/v1/ontologies/ontologies.py
  • cognee/api/v1/ontologies/routers/__init__.py
  • cognee/api/v1/ontologies/routers/get_ontology_router.py
  • cognee/eval_framework/corpus_builder/task_getters/get_cascade_graph_tasks.py
  • cognee/eval_framework/corpus_builder/task_getters/get_default_tasks_by_indices.py
  • cognee/modules/graph/utils/expand_with_nodes_and_edges.py
  • cognee/modules/ontology/base_ontology_resolver.py
  • cognee/modules/ontology/get_default_ontology_resolver.py
  • cognee/modules/ontology/matching_strategies.py
模块标签
  • 图谱与关系
  • 系统架构
  • 接口与服务契约
  • 配置治理
  • 测试、发布与运维

章节正文

本体集成

本体集成

相关源文件

本章引用的主要源码文件:

  • cognee/api/v1/ontologies/__init__.py
  • cognee/api/v1/ontologies/ontologies.py
  • cognee/api/v1/ontologies/routers/__init__.py
  • cognee/api/v1/ontologies/routers/get_ontology_router.py
  • cognee/eval_framework/corpus_builder/task_getters/get_cascade_graph_tasks.py
  • cognee/eval_framework/corpus_builder/task_getters/get_default_tasks_by_indices.py
  • cognee/modules/graph/utils/expand_with_nodes_and_edges.py
  • cognee/modules/ontology/base_ontology_resolver.py
  • cognee/modules/ontology/get_default_ontology_resolver.py
  • cognee/modules/ontology/matching_strategies.py
  • cognee/modules/ontology/models.py
  • cognee/modules/ontology/ontology_config.py
  • cognee/modules/ontology/ontology_env_config.py
  • cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py
  • cognee/tasks/graph/extract_graph_from_data.py
  • cognee/tasks/graph/extract_graph_from_data_v2.py
  • cognee/tests/test_cognee_server_start.py
  • cognee/tests/unit/api/test_ontology_endpoint.py
  • cognee/tests/unit/eval_framework/test_get_default_tasks_by_indices.py
  • cognee/tests/unit/modules/ontology/test_ontology_adapter.py
  • cognee/tests/unit/tasks/graph/test_extract_graph_from_data_v2.py

Cognee 提供了一个全面的系统,用于将正式本体集成到知识图谱构建过程中。这种集成确保提取的实体和关系遵循预定义的语义结构,从而提高数据一致性并支持推理能力。

架构总览

本体系统围绕 BaseOntologyResolver 抽象构建,该抽象管理自然语言实体与正式本体定义之间的映射。默认实现 RDFLibOntologyResolver 使用 rdflib 库处理 OWL 和 RDF 文件。

自然语言到代码实体的映射

下图展示了系统在 cognify 过程中如何弥合原始文本数据与结构化本体空间之间的差距。

本体引导的提取流程

Cognee · 自然语言到代码实体的映射 · 图 1
Cognee · 自然语言到代码实体的映射 · 图 1

来源:cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py:20-25cognee/modules/graph/utils/expand_with_nodes_and_edges.py:114-146

本体解析器

系统支持使用不同的策略将实体解析到本体。

RDFLibOntologyResolver

这是处理标准本体格式的主要实现。它支持:

  • 从文件路径、类文件对象或原始字符串加载本体 cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py:27-53
  • 使用 rdflib 解析 RDF/XML 和 OWL 格式 cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py:55-62
  • 构建类和个体的内部查找字典,以实现快速检索 cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py:118-143
匹配策略

解析器使用 MatchingStrategy 将提取的文本链接到本体术语。

  • FuzzyMatchingStrategy:如果未找到精确匹配,则使用字符串相似度(通过 difflib)在本体中查找最佳匹配 cognee/modules/ontology/matching_strategies.py:18-25
  • 截断值配置:可以通过截断值参数调整模糊匹配的灵敏度 cognee/tests/unit/modules/ontology/test_ontology_adapter.py:194-198

来源:cognee/modules/ontology/rdf_xml/RDFLibOntologyResolver.py:20-154cognee/modules/ontology/matching_strategies.py:1-25

与 Cognify 管线的集成

本体验证发生在 cognify 工作流的图提取阶段。

integrate_chunk_graphs

此函数是提取的大语言模型(LLM)图与本体解析器相遇的中心点。

  1. 它遍历文档片段及其对应的提取图 cognee/tasks/graph/extract_graph_from_data.py:100-103
  2. 它调用 expand_with_nodes_and_edges,并传递 ontology_resolver cognee/tasks/graph/extract_graph_from_data.py:110-112
  3. 匹配本体的实体被标记为 ontology_valid=True cognee/modules/graph/utils/expand_with_nodes_and_edges.py:49-60
数据流图

下图显示了提取数据与本体集成期间的函数调用序列。

函数执行流程

Cognee · 数据流图 · 图 2
Cognee · 数据流图 · 图 2

来源:cognee/tasks/graph/extract_graph_from_data.py:56-125cognee/modules/graph/utils/expand_with_nodes_and_edges.py:110-162

本体管理 API

Cognee 提供了 REST 端点来管理每个用户的本体文件。

端点方法描述
/api/v1/ontologiesPOST上传一个带有唯一 ontology_key.owl 文件 cognee/api/v1/ontologies/routers/get_ontology_router.py:17-38
/api/v1/ontologiesGET列出所有已上传的本体及其元数据 cognee/api/v1/ontologies/routers/get_ontology_router.py:116-125
/api/v1/ontologies/{key}DELETE从系统中移除一个本体文件 cognee/api/v1/ontologies/routers/get_ontology_router.py:83-97
上传逻辑

OntologyService 处理这些文件的持久化:

  • 文件存储在 data_root_directory 中特定于用户的目录下 cognee/api/v1/ontologies/ontologies.py:31-34
  • 元数据(文件名、大小、上传时间)存储在相同目录下的 metadata.json 文件中 cognee/api/v1/ontologies/ontologies.py:36-49
  • 目前 API 仅接受 .owl 文件 cognee/api/v1/ontologies/ontologies.py:56-57

来源:cognee/api/v1/ontologies/ontologies.py:22-86cognee/api/v1/ontologies/routers/get_ontology_router.py:12-141

配置

本体行为可以通过环境变量配置,或直接传递给 cognify 调用。

基于环境的设置

get_ontology_resolver_from_env 函数允许根据环境设置动态实例化解析器:

  • ontology_resolver:支持的值 "rdflib" cognee/modules/ontology/get_default_ontology_resolver.py:20-21
  • matching_strategy:支持的值 "fuzzy" cognee/modules/ontology/get_default_ontology_resolver.py:22-23
  • ontology_file_path:本地文件的路径或以逗号分隔的路径列表 cognee/modules/ontology/get_default_ontology_resolver.py:24-26
直接注入

使用 cognify API 时,可以以数组形式提供 ontology_key。系统会检索这些键的内容,并在管线执行期间初始化解析器 cognee/tests/test_cognee_server_start.py:158-164

来源:cognee/modules/ontology/get_default_ontology_resolver.py:10-48cognee/api/v1/ontologies/ontologies.py:129-157