在本体中插入多个人

时间:2015-02-18 16:03:35

标签: rdf sparql jena ontology

我创建了一个简单的本体,如下所示shown有4个类,1个objectTypeProperty和2个DatatypeProperties。现在我想创建相同本体的不同个体。按个人而言,我的意思是下表中显示的一行数据 fig。我试图直接将这些人插入到Jena的本体中。

直到现在,我已经阅读了耶拿的本体论,但我应该如何插入所有这些人。我是否需要使用任何类型的循环,或者Jena中有特定条款来插入重复信息。

注意:我在http://answers.semanticweb.com/questions/31641/use-an-ontology-to-store-csv-data-into-rdf-form之前提出过类似的问题。我得到了答案,但我想知道不使用对齐ApI,我可以纯粹使用Jena。

注意:似乎answers.semanticweb.com目前已关闭。

2 个答案:

答案 0 :(得分:3)

使用SPARQL插入多个三元组可能最简单。它基本上是

prefix : <...>

insert data {
  :individual1 :place :p1 ; :date "110114" ; temperature 13 .
  :individual2 :place :p2 ; :date "120114" ; temperature 14 .
  :individual3 :place :p3 ; :date "130114" ; temperature 15 .
}

如果您已经知道需要插入的数据,这很方便。如果您不这样做,或者您正在从其他文件中读取它,则可能更容易通过代码构建它。

答案 1 :(得分:2)

由于我无法发表评论,我会在这里发表评论......

Haroon,关于answer.semanticweb.com上的问题,我刚跟着Alignment API,因为你说你需要找到CSV列和概念之间的映射。只使用Jena,你不能这样做,因为据我所知,Jena并没有给你任何方法或任何形式的对齐或语义注释支持。事实上,你可以在没有Alignment API的情况下,通过使用其他库,如第二个字符串(我的一个评论),或任何其他允许你运行字符串比较(或结构或语义......)。

如果你不需要在运行时计算对齐,我的意思是,如果你手动设置它,你可以使用Jena来创建个体。除了在第一个答案中指出使用SPARQL之外,您还可以将本体加载到Jena模型中并使用Jena方法创建个体。如果你获得了一个OntClass,那么有一种方法可以创造出个人化的方法。这允许您创建该类型的个人。

如果你的本体太大,你可以获得它的一部分,或者只是创建你需要的资源,然后将它附加到你的模型中。您可以使用Jena方法执行此操作,或者通过代码创建SPARQL更新,如Joshua Taylor所说。

如果您在另一个答案中使用代码示例并排除Alignment API部分,那么您就拥有了这个Jena实现(官方文档也很容易理解)。只需将映射保留在某个存储(文件,数据库等)中,然后使用它将列映射到概念。

在Jena模型中创建个体后,它们将成为本体的一部分,但仅限于内存中的版本,因此,您需要将其保存回原来的位置:某个文件或SPARQL端点使用SPARQL Update支持。

希望这可以启发你的解决方案!