mysql - 如何使用 D2RQ 合并多个 MySQL 数据库?

标签 mysql semantic-web linked-data d2rq

我有四个不同的 MySQL 数据库,我需要将它们转换为关联数据,然后对聚合数据运行查询。我分别生成了 D2RQ 映射,然后将它们手动复制到一个文件中。我已经阅读了一些关于自定义 map 的资料,但我发现在我的情况下很难这样做,因为:

  1. 本体类与表名不对应。事实上,大多数类都是列标题。
  2. 当我在 Protege 中打开组合映射时,它只生成 3 个类(ClassMap、数据库和 PropertyBridge)并将所有列标题列为这些类的实例。
  3. 如果我将这个文件导入我的本体,一切都变成了注释。

请提出一种有效的方法来生成单个图,该图是通过将这些数据库映射到我的本体而形成的。

这是一个例子。我正在使用 EEM 本体来优化 D2RQ 生成的映射文件。这是映射文件的一部分:

map:scan_event_scanDate a d2rq:PropertyBridge;
    d2rq:belongsToClassMap map:scan_event;
    d2rq:property vocab:scan_event_scanDate;
    d2rq:propertyDefinitionLabel "scan_event scanDate";
    d2rq:column "scan_event.scanDate";
    # Manually added
    d2rq:datatype xsd:int;
    .
map:scan_event_scanTime a d2rq:PropertyBridge;
    d2rq:belongsToClassMap map:scan_event;
    d2rq:property vocab:scan_event_scanTime;
    d2rq:propertyDefinitionLabel "scan_event scanTime";
    d2rq:column "scan_event.scanTime";
    # Manually added
    d2rq:datatype xsd:time;

我感兴趣的本体有以下几个:

Data property: eventOccurredAt
Domain: EPCISevent
Range: datetime

现在,我该如何修改映射文件,使日期和时间成为两种不同的关系呢?

最佳答案

我认为生成 4 个数据库的单个图形的最佳方法是将它们一个一个地转换为 Jena使用 D2RQ 建模,然后使用 Union创建全局模型的方法。 对于您的 D2RQ 映射文件,您应该仔细阅读 The mapping language ,有类对应列是不正常的。 如果你举一个表结构的例子,我可以给你一个映射文件的例子。 祝你好运

关于mysql - 如何使用 D2RQ 合并多个 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506666/

相关文章:

php - MySQL 不按毫秒排序

php - 将站点转换为 Drupal——噩梦开始了

sparql - SPARQL 查询中的 "or"

java - SPARQL 构造查询在 java 上不起作用

go - 将 freebase 数据转储修剪为仅英文实体

tomcat - 安装 GraphDB 时替换 .jar 文件后出现 "Invalid Server URL"错误

php - PHP Assoc 数组中的两个查询

php - PHP中如何从URL中获取数据库名和表名?

python - 如何自动实例化 OWL 本体类?