将关系数据库映射到本体

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

我正在尝试将关系数据库映射到本体。

我阅读了许多方法,例如12,他们都同意对桥表进行建模(以多对多关系相互连接的两个表之间的连接表)如下:

  1. 如果桥接表恰好包含两个外键而不存在独立属性,则可以将其映射为两个对象属性,后者是前者的逆。
  2. 如果桥接表恰好包含两个具有独立属性的外键,则应将其映射到单独的 OWL 类。

考虑到这一点,如果我们有两个表:学生和课程,并且联接表仅包含三列:

id、student_id、course_id

我们用两个类来建模本体:学生和课程,以及两个关系“对象属性”:

学生---学习--->课程

课程---学习者--->学生

但是如果连接表包含一个或多个独立属性,假设它包含:

id、student_id、course_id、年级

然后应该在本体中创建一个新类。我们用三个类来建模本体:student、course、student_course 和两个对象属性:

学生 ---student_has---> Student_course

课程 ---course_has---> 学生课程

这是最好的解决方案吗?

relational-database owl ontology semantic-web
2个回答
2
投票

这感觉像是创建知识图谱的错误方法。这种方法将您限制为数据库中的架构。您可以从一张白纸开始,根据下游用例设计本体,而不是依赖关系表中的共享属性。

斯坦福大学的这篇论文提供了如何创建本体的 7 个清晰步骤。。还有大量本体可以适应您的用例。

在将数据映射到本体方面,您可以考虑使用RML之类的东西。


0
投票

仅适用于开放生物和生物医学本体

我也遇到了和你一样的问题。我的案例中的一个关键区别是,本体是使用旧版 Java 框架 + PostgreSQL 从 OBO 文件创建的,然后使用 robot tool 将文件转换为 OWL。所以,我有一个本体论,我可以根据它来重新创建它。

在这种情况下,我可以告诉您我们如何从 PostgreSQL 数据库创建 ChEBI 本体。我们开发了一种 ETL,它从 PostgreSQL 中提取数据作为 TSV 模板,然后我们组装这些模板来创建一个机器人模板,其中包含所有必要的设置来建模对象属性、注释属性和类。

创建机器人模板后,您可以执行以下操作:

robot template --template robot_template.csv \
  --prefix "ex: http://example.com/" \
  --ontology-iri "https://github.com/ontodev/robot/examples/template.owl" \
  --output results/template.owl

如果您想查看代码,可以在这里找到。

© www.soinside.com 2019 - 2024. All rights reserved.