跳转到主要内容

Elementary MultiperspectiveMaterial Ontology的Python参考API。

项目描述

EMMOntoPy

Python中表示和处理本体库。

CI tests PyPI version DOI

EMMOntoPy是一个基于优秀的Owlready2的Python包,它为Python中本体的表示提供了自然直观的方式。EMMOntoPy扩展了Owlready2,并增加了额外的功能,如通过标签访问实体、使用FaCT++进行推理以及以曼彻斯特语法解析逻辑表达式。它还包含一系列工具,如从Excel表创建本体、生成本体的参考文档以及图形化地可视化本体。EMMOntoPy在GitHub和PyPI上免费提供,遵循宽松的开源BSD 3-Clause许可证

EMMOntoPy最初是为了与Elemental Multiperspective Material Ontology(EMMO)和基于EMMO的领域本体有效地工作而开发的。
它现在有两个子包,ontopyemmopy,其中ontopy是一个通用包,用于处理任何OWL本体,而emmopy提供了一些针对EMMO的特定功能。

Owlready2以及EMMOntoPy,在Python中将OWL类和个体表示为类和实例。OWL属性表示为Python属性。因此,它提供了一个新的dot表示法,用于将本体表示为有效的Python代码。这种表示法简单易懂,适合对OWL和Python有一定了解的人。由于Python是一种多用途的编程语言,Owlready2不仅可以表示OWL本体,还可以编程地使用它们,包括解释、修改和生成。EMMOntoPy提供的其他一些附加功能如下

通过标签访问

在Owlready2本体中,类、属性和个体通过它们的IRI的名称部分访问(即IRI最后的斜杠或井号之后的一切)。这对于像EMMO或Wikidata这样的本体来说非常不方便,这些本体通过长的数字名称来标识本体实体。例如,EMMO中Atom类的IRI名称部分是‘EMMO_eb77076b_a104_42ac_a065_798b2d2809ad’,既不适合人类阅读,也不容易书写。EMMOntoPy允许通过标签(或更准确地说,skos:prefLabel)‘Atom’访问实体,这要友好得多。

Turtle序列化/反序列化

Terse RDF Triple Language(Turtle)是表示本体的常用语法和文件格式。EMMOntoPy增加了对以turtle格式读取和写入本体的支持。

FaCT++推理

Owlready2仅支持与HermiT和Pellet进行推理。EMMOntoPy增加了对快速基于表格的[FaCT++推理器]对描述逻辑的支持。

曼彻斯特语法

尽管Owlready2的dot表示法对于了解Python的人来说既清晰又容易阅读和理解,但它是一种新的语法,对于习惯了使用Protégé的人来说可能看起来很陌生。EMMOntoPy提供了支持解析和序列化曼彻斯特语法中的逻辑表达式,这使得创建对习惯了使用Protégé的人来说更加熟悉的工作工具成为可能。

可视化

EMMOntoPy提供了一个用于本体图形可视化的Python模块。该模块不仅允许图形化表示分类法,还可以表示限制和逻辑结构。要包含在图中的类可以手动指定,也可以从分类法中推断出来(例如,所有不是其他类集的任何类的子类的给定类的所有子类)。

工具

EMMOntoPy包含一组作为Python脚本实现的命令行工具

  • ontoconvert:在不同的文件格式之间转换本体。它还支持转换过程中的某些附加转换,如运行推理器、合并多个本体模块(压扁)、重命名IRI、生成目录文件以及自动注释实体及其源IRI。
  • ontograph:可视化(部分)本体的垂直工具,利用上述提到的可视化功能。
  • ontodoc:对本体进行文档化。
  • excel2onto:从Excel文件生成基于EMMO的本体。这对于对本体知之甚少且不熟悉如Protégé等工具的领域专家非常有用。
  • ontoversion:打印本体版本号。
  • emmocheck:用于检查EMMO及其基于EMMO的领域本体的一致性以及它们是否符合EMMO约定的一个小型测试框架。

EMMOntoPy的一些用法示例包括

  • 从您的应用程序中访问和查询基于RDF的本体。这包括几种不同的RDF版本(OWL、Turtle(ttl等)。

  • 从您的应用程序中访问和查询基于EMMO的本体。

  • 通过新的领域或应用程序本体扩展EMMO。这可以通过静态的易于阅读的Python代码或在您的应用程序中动态地完成。

  • 生成本体的图表和文档。EMMOntoPy包括ontodoc:为此目的的专用命令行工具。您可以在tools/子目录中找到它。

  • 检查基于EMMO的领域或应用程序本体是否遵循EMMO的约定。

  • 在Python解释器中交互式地探索本体,例如IPython。Tab补全使探索变得简单快捷。以下是一个IPython会话示例,其中我们使用emmopy.get_emmo函数检查EMMO中Matter的关系

    In [1]: from emmopy import get_emmo
    
    In [2]: emmo = get_emmo()
    
    In [3]: emmo.Matter
    Out[3]: physicalistic.Matter
    
    In [4]: emmo.Matter.is_a
    Out[4]:
    [physicalistic.Physicalistic,
      physical.Physical,
      mereotopology.hasPart.some(physicalistic.Massive),
      physical.hasTemporalPart.only(physicalistic.Matter)]
    

文档和示例

Owlready2文档是一个好的起点。EMMOntoPy包也有它自己的专用文档

这包括一些示例和演示

  • demo/vertical展示了如何使用EMMO实现垂直互操作性的示例。文件define-ontology.py提供了一个很好的示例,说明了如何用Python定义基于EMMO的应用程序本体。

  • demo/horizontal展示了如何使用EMMO实现水平互操作性的示例。此演示还展示了如何使用EMMOntoPy使用低级元数据框架DLite来表示您的本体。除了实现互操作性外,如演示所示,DLite还允许您根据本体自动生成C或Fortran代码库。

  • examples/emmodoc展示了如何使用ontodoc工具生成EMMO的文档。

安装

使用以下命令安装

pip install EMMOntoPy

所需依赖项

可选依赖项

  • Graphviz:需要用于图形生成。支持为测试和自动生成文档(ontodoc)生成pdf、png和svg图。

  • pandoc:仅用于将markdown文档生成格式化的html或pdf。已与v2.1.2版本测试。

  • pdfLaTeXXeLaTeXupgreek LaTeX包(包含在基于RetHat的发行版的texlive-was和Ubuntu的texlive-latex-extra中),用于生成pdf文档。如果您的本体包含奇特的Unicode字符,我们建议使用XeLaTeX。

  • Java。需要用于推理。

  • 可选Python包

    • graphviz:生成文档和图形。
    • PyYAML:使用 pandoc 生成文档所需的。
    • blessings:为 emmocheck 提供干净的输出。
    • Pygments:为 emmocheck 提供彩色输出。
    • rdflib:用于 ontoversion-tool。
    • semver:用于 ontoversion-tool。
    • pydot:用于生成图形。将被弃用。
    • pyparsing:用于解析曼彻斯特语法。

有关如何构建 Docker 镜像的说明,请参阅 docs/docker-instructions.md

已知问题

  • 无效的 turtle 序列化:由于 rdflib 问题 #1043,如果您的本体包含使用科学记数法(小数部分不含点)的实数文字,则 ontoconvert 可能会生成无效的 turtle 输出。此问题在 rdflib 5.0.0 版本发布后已修复。因此,如果您需要将数据序列化为 turtle 格式,请从 PyPI 安装最新版本的 rdflib(pip install --upgrade rdflib)或直接从源代码仓库:[GitHub](https://github.com/RDFLib/rdflib)。

致谢和贡献者

EMMOntoPy 由 EMMC-ASBL 维护。它主要是由 SINTEF 开发的,具体如下:

贡献项目

项目详情


下载文件

下载适用于您平台上的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源代码分发

EMMOntoPy-0.7.1.tar.gz (20.7 MB 查看哈希值)

上传时间 源代码

构建分发

EMMOntoPy-0.7.1-py3-none-any.whl (20.8 MB 查看哈希值)

上传时间 Python 3

由以下支持