首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在本体中插入多个个体

在本体中插入多个个体
EN

Stack Overflow用户
提问于 2015-02-18 16:03:35
回答 2查看 423关注 0票数 2

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

有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目前似乎在下降。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-18 16:34:20

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

代码语言:javascript
复制
prefix : <...>

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

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

票数 3
EN

Stack Overflow用户

发布于 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更新。

希望这能对您的解决方案有所启发!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28588079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档