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

时间:2011-12-04 05:07:54

标签: jena ontology

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

1 个答案:

答案 0 :(得分:3)

您的问题分为三个部分:

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

使用Jena(参见Model.read()Model.write()方法可以很容易地实现第一和第三种方法,而FileManager则可以从不同位置获得一些额外的便利支持。)

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

  1. 根据数据行中的某些键确定代表资源的URI
  2. 确定表示给定列值的RDF属性的URI
  3. 将每个列值映射到适当的资源URI或文字值。
  4. 例如,请考虑以下CSV:

    id,name,age,occupation
    2718,fred,107,ninja
    

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

    <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>.
    

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