在Python中加载本体

问题描述 投票:0回答:6

我有一个用 OWL 编写的本体。有谁知道我可以将它加载到Python中吗?任何软件包甚至手动? 其他问题中提到的 rdflib 不适合我,因为它主要与 RDF 相关,而“Seth”这个非常好的库不起作用,因为它需要“Pellet”库,而该库的网站似乎已关闭并且它(seth) 也仅适用于 JVM 1.4!

python owl ontology
6个回答
2
投票

我还没有完全尝试过这一点,但您可以考虑将本体加载到 Sesame 数据库中,然后使用 Python 包装器对其进行查询。我玩过一些 RDFAlchemypySesame ,但我仍然不知道它们有多好。总的来说,RDF/OWL 数据库对我来说非常不成熟,因此预计会遇到一些重大的技术困难。


2
投票

如果有人再次偶然发现这个问题,这个包现在可用于与 Python 中的 OWL 本体进行交互:https://pypi.org/project/Owlready2/

从项目描述来看,它具有以下功能:

  1. 导入 NTtriples、RDF/XML 或 OWL/XML 格式的 OWL 2.0 本体。
  2. 将 OWL 2.0 本体导出到 NTtriples 或 RDF/XML。
  3. 透明地操作本体类、实例和属性,就像它们是普通的 Python 对象一样。
  4. 将 Python 方法添加到本体类。
  5. 使用 HermiT 推理器执行类和实例的自动分类。
  6. 测试了多达 1 亿个 RDF 三元组(但可能支持更多)。
  7. 此外,quadstore 与 RDFlib Pyton 模块兼容,可用于执行 SPARQL 查询。

2
投票

commands.py 文件的 rdfAlchemy 中,有一个命令部分正是为此目的而启动的。 有一段时间没有使用它了,但这正是您所问问题的开始,即从本体创建 python skel。

事实上,它使用了粘贴“命令”。如果您转到 rdfalchemy 子目录并输入:

paster rdfSubject -h

你应该看到:

Usage: /home/phil/venv/some_path/bin/paster rdfSubject [options] 
paster rdfalchemy.commands
Create an rdfSubject subclass with descriptors from an RDF Schema

    will set the rdf_type
    Descriptors will be created
    
      1.  rdfs:domain and rdfs:range are respected
      2.  rdfSingle is used for properties that are
            * owl:InverseFunctionalProperty
            * owl:FunctionalProperty   
      3.  rdfList or rdfContainer is used if the proper range is set
      4.  rdfMultiple is used for all others
      
    The resulting .py file is ment to be a skeleton for the developers confvience.  
    Do not expect to be able to use the raw results.
    
Create an rdfSubject subclass with descriptors from an RDF Schema

Options:
  -h, --help            show this help message and exit
  -v, --verbose         
  -n, --simulate        
  -s SCHEMA, --schema=SCHEMA
                        file name or url of rdfSchema for this class
  -o FOUT, --fout=FOUT  output file name default: stdout (e.g.
                        ../MyRdfModel.py)
  -l, --list            list valid instances of `owl:Class` in the schema file

1
投票

是的,RDFLib 适用于 RDF 语义,因此您需要一个工具包来管理 OWL 语义。

我通常首先使用另一个工具获取所有三元组(例如OWLAPIOWLRL),然后将其加载到RDFLib中。


0
投票

我也可以找到这个ordf,但似乎他们只是为自己写了一些文字,根本不清楚如何使用它,很遗憾!


0
投票

Java owlapi 的一个很好的 Python 对应物是 owlapy(注意末尾的 y):https://github.com/dice-group/owlapy

根据其文档,它具有以下功能(https://dice-group.github.io/owlapy/usage/main.html#what-is-owlapy):

  • 创建、操作和保存本体。
  • 从本体签名中检索信息。
  • 本体论推理。
  • 表示 OWL 2 结构规范和函数式语法中的每个符号,包括:
    • 实体、文字和匿名个体
    • 属性表达式
    • 数据范围
    • 类表达式
    • 公理
    • 注释
  • 构造复杂的类表达式。
  • 为OWL Ontology、Ontology manager和Reasoner提供接口。
  • 将 owl 表达式转换为 SPARQL 查询。
  • 将 owl 表达式渲染为描述逻辑或曼彻斯特语法。
  • 将描述逻辑或曼彻斯特表达式解析为 owl 表达式。
© www.soinside.com 2019 - 2024. All rights reserved.