使用 Jena 从 csv 文件填充现有本体

Maj*_*adi 2 ontology jena

如何使用 jena 读取本体(owl 文件)并从 CSV 文件填充此本体(ontModel),然后将填充的 OntModel 写入 OWL 文件

Ian*_*son 5

您的问题分为三个部分:

  • 将 OWL 文件读入 JenaModel
  • 将 CSV 文件转换为 RDF
  • 将 Jena 的内容Model写入文件

其中第一个和第三个对于 Jena 来说很容易(请参阅Model.read()Model.write()方法,以及FileManager为从不同位置读取提供一些额外的便利支持)。

第二部分是棘手的部分。通常,将 CSV 文件转换为 RDF 时,我们假设每一行代表一个 RDF 资源及其属性。您需要完成三项任务:

  1. 根据数据行中的某个键确定表示资源的 URI
  2. 确定表示给定列的值的 RDF 属性的 URI
  3. 将每个列值映射到适当的资源 URI 或文字值。

例如,考虑以下 CSV:

id,name,age,occupation
2718,fred,107,ninja
Run Code Online (Sandbox Code Playgroud)

我们可以使用 CSV 的第一行来建议 RDF 谓词名称。foaf:namefoaf:age对于前两列来说是合适的选择,但我们可能需要在命名空间中为第三列添加一个新谓词http://example.com/vocab#occupation。资源 URI 将基于数据的键(在本例中为id列),这表明第一行表示的资源的 URI 将为http://example.com/data/employee/2718。最后我们必须映射数据。名字只是一个字符串,年龄是一个整数,职业是一个资源。考虑到这些选择,我们最终可能会得到如下输出:

<http://example.org/data/employee/2718>
    a foaf:Person;
    foaf:name "fred";
    foaf:age "107"^^xsd:integer;
    example_com:occupation <http://dbpedia.org/resource/Ninja>.
Run Code Online (Sandbox Code Playgroud)

W3C 工作草案R2RML定义了用于执行此类翻译的标准化映射语言。R2RML 的各种实现都是可用的。当然,如果您的映射相当稳定,那么只需编写一些代码来对特定输入数据执行 CSV 的转换就非常简单了。