我创建了一个简单的本体,如下所示

有4个类,1个objectTypeProperty和2个DatatypeProperties。现在我想要创建相同本体论的不同个体。个人而言,我指的是下表所示的一行数据。

。我正试图将这些人直接插入到本体中。
到目前为止,我已经阅读了耶拿的本体论,但是我应该如何插入所有这些个体。我是否需要使用任何类型的循环,还是在Jena中有特定的规定来插入重复的信息。
注:我曾在http://answers.semanticweb.com/questions/31641/use-an-ontology-to-store-csv-data-into-rdf-form问过类似的问题。我得到了答案,但我想知道在不使用对齐ApI的情况下,我是否可以完全使用Jena。
注意: answers.semanticweb.com目前似乎在下降。
发布于 2015-02-18 16:34:20
使用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 .
}如果您已经知道需要插入的数据,这是很方便的。如果您不这样做,或者您正在从其他文件中读取它,那么通过代码构建它可能会更容易。
发布于 2015-02-19 12:03:08
既然我不能发表评论,我就在这里.
关于answers.semanticweb.com的问题,我只关注了对齐API,因为您说您需要找到CSV列和概念之间的映射。仅使用Jena,您不能这样做,因为据我所知,Jena没有为您提供任何方法或对对齐或语义注释的支持。实际上,您也可以通过使用其他库(比如第二个字符串(我在那里的注释之一)或允许运行字符串比较(或结构或语义.)的任何其他库来实现这一点,而无需使用对齐API。
如果您不需要在运行时计算对齐,我的意思是,如果手动设置它,可以使用Jena来创建个人。除了使用第一个答案中指出的SPARQL之外,您还可以将本体加载到Jena模型中,并使用Jena方法创建个体。如果您得到一个OntClass,有一个方法“createIndividual”允许您创建该类型的个人。
如果您的本体太大,您可以获取其中的一部分,或者创建所需的资源,并在以后将其附加到您的模型中。您可以使用Jena方法,或者像约书亚·泰勒所说的那样,通过代码创建SPARQL更新。
如果以另一个答案中的代码示例为例,并排除了对齐API部分,那么您就有了这个Jena实现(官方文档也很容易理解)。只需将映射保存在某个存储区(文件、数据库等),并使用它将列映射到概念。
一旦在Jena模型中创建了个人,它们将成为本体的一部分,但只限于内存中的版本,因此,您需要将其保存回它的来源:一些文件或SPARQL端点,支持SPARQL更新。
希望这能对您的解决方案有所启发!
https://stackoverflow.com/questions/28588079
复制相似问题