Semantica 本体建模不写 Schema自动推断类层级并导出 Turtle【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semantica实体和关系刚灌进图数据库麻烦就来了同一概念有人写 Person 有人写 threat_actor评分字段没人把关Malware 是软件这种常识推理引擎无从得知。Semantica 的本体建模专治这类问题不手写 schema直接从已有实体和关系数据自动推断出类与层级最后导出标准 Turtle交给 SHACL一种校验数据是否合身的约束语言和推理引擎使用。本体不该手写该从数据里长出来传统做法是先请领域专家画好 schema再往里面填数据。Semantica 的思路反了过来本体是从数据里长出来的。它会扫描你已有的实体和关系统计每种类型出现得多频繁把高频类型提拔为类把关系转成属性父子类关系靠模式推断——你只负责验收不负责起稿。本体里只有三类构件对应 OWLW3C 制定的本体描述语言里的三种声明构件作用生活化例子类owl:Class给实体定类型回答这是什么通讯录里的分组同事、家人、供应商对象属性owl:ObjectProperty两个实体之间的连边联系人卡片上就职于→某公司这条线数据属性owl:DatatypeProperty实体身上的字面量字段姓名文本、入职日期日期类与类之间还能形成继承关系比如恶意软件 是 软件 的子类——这正是推理引擎最需要的常识来源。最小可运行流程克隆仓库git clone https://gitcode.com/GitHub_Trending/sema/semantica进入目录后pip install -e .即可。如果数据来自文档、网页或数据库可以先用 semantica/ingest/ 摄取模块抽出实体与关系再喂给生成器最简输入就是一个装着entities和relationships的字典from semantica.ontology import OntologyGenerator gen OntologyGenerator(base_urihttps://example.org/ontology/, min_occurrences1) data { entities: [ {id: e1, name: Alice, type: Person}, {id: e2, name: Acme, type: Company}, ], relationships: [{source_id: e1, target_id: e2, type: works_for}], } ontology gen.generate_ontology(data, nameOrgOntology, build_hierarchyTrue)min_occurrences是出现次数门槛设为 1 表示每个出现过的类型都升格为类。这一次调用内部跑完 6 个阶段每段只干一件事语义网络解析——从实体和关系里提取领域概念概念转定义——把概念整理成类定义定义映射类型——归到 owl:Class、对象属性、数据属性层级生成——推断父子类并做循环依赖检测TTL 生成——序列化为 Turtle 语法符号校验——一致性检查流水线细节在 semantica/ontology/ontology_generator.py。生成的本体长什么样返回值是个普通字典但每部分各有分工classes例子里得到 Person 和 Company 两个类各带名称、IRI 与可能的父类properties对象属性works_fordomain 为 Person、range 为 Company外加数据属性name范围是 stringbase_uri生成时设定的地址前缀所有类的 IRI 都按 base_uri 拼本地名生成IRI国际资源标识符是语义网里给实体起的完整地址多套本体因此能共存于同一三元组库而不撞名。导出的 Turtle一种紧凑可读的 RDF 三元组文本格式开头大致长这样prefix ex: https://example.org/ontology/ . ex:Person a owl:Class . ex:works_for a owl:ObjectProperty ; rdfs:domain ex:Person ; rdfs:range ex:Company . ex:name a owl:DatatypeProperty ; rdfs:range xsd:string .导出前先自检导出前先跑一次结构校验成本低、防翻车from semantica.ontology import validate_ontology result validate_ontology(ontology) print(result[valid], result[warnings])返回 valid、consistent、satisfiable 三个布尔量外加 errors 与 warnings 列表。几个典型警告和处理办法警告含义处理Ontology has no classes defined输入数据里没找到实体类型检查实体是否漏了 type 字段某类没有声明数据属性类被推断出来但节点上没有任何属性值用 PropertyGenerator 手动补属性或接受现状Ontology has no properties defined缺少关系数据补全 relationships 后重新生成校验逻辑在 semantica/ontology/ontology_validator.py。Turtle 通向哪里四种常用导出格式各自对应不同的下游turtle紧凑、人类可读SHACL 形状校验和三元组库加载的首选owl-xmlProtégé 和 HermiT 这类推理器对它最友好适合做深度推理的 OWL 生成jsonld面向 Web API 与链接数据前端渲染友好ntriples一行一个三元组批量灌库效率最高具体函数在 semantica/export/export_rdf(..., format...)覆盖上面四种 RDF 格式export_owl(..., formatowl-xml)产出 OWL/XML。完整说明见 docs/guides/export.md。让本体跟着图谱长大增量扩展图谱长出新实体类型时不必整库重跑。调ClassInferrer().infer_classes(new_entities)只对新批次做类推断人工修正父类后再合并进已有本体本体就能随图谱一起生长。LLM 冷启动完全没有结构化数据时LLMOntologyGenerator可以从纯文本直接抽取类和属性适合新领域起步一旦有了图谱优先改用generate_from_graph()——确定性、可复现也不耗 token。new_classes ClassInferrer().infer_classes(new_entities) llm_gen LLMOntologyGenerator(providergroq, modelllama-3.1-8b-instant) llm_ontology llm_gen.generate_ontology_from_text(APT29 使用 HAMMERTOSS 恶意软件……)踩坑清单坑典型表现应对过度建模10 个类能解决的事硬造 50 个从简开始需要形式化区分时再细化本体漂移图谱冒出新类型本体还停在旧版监控新类型定期增量推断合并命名混乱ThreatActor 与 threat_actor 混用定下约定类 PascalCase、属性 camelCase并坚持再养几个习惯✅ 生成后先跑validate_ontology再导出用min_occurrences过滤低频噪声类出现一两次未必配得上独立成类尽早写下胜任问题你希望本体回答的问题用 OntologyEvaluator 评估覆盖度命名约定统一执行代码层已内置 PascalCase / camelCase 的强制检查回到开头那个没人把关的图谱自动类推断、结构自检、Turtle 导出三次调用就能得到一份可被推理引擎消费的本体。源码在 semantica/ontology/指南在 docs/guides/ontology.md动手示例在 cookbook/introduction/14_Ontology.ipynb。【免费下载链接】semanticaGraph-Native Infrastructure for Context and Accountable AI Systems项目地址: https://gitcode.com/GitHub_Trending/sema/semantica创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考