Rdf 在本体中插入多个个体

Rdf 在本体中插入多个个体,rdf,sparql,jena,ontology,Rdf,Sparql,Jena,Ontology,我创建了一个简单的本体,如下图所示,包含4个类、1个objectTypeProperty和2个DatatypeProperties。现在我想创建相同本体的不同个体。我所说的个人是指下表所示的一行数据 . 我试图将这些个体直接插入Jena的本体论中 到目前为止,我已经阅读了耶拿的本体论,但我应该如何插入所有这些个体。我是否需要使用任何类型的循环,或者Jena中有具体规定插入重复信息 注意:我以前在上问过类似的问题。我得到了答案,但我想知道在不使用对齐ApI的情况下,我是否可以完全使用Jena来实现

我创建了一个简单的本体,如下图所示,包含4个类、1个objectTypeProperty和2个DatatypeProperties。现在我想创建相同本体的不同个体。我所说的个人是指下表所示的一行数据 . 我试图将这些个体直接插入Jena的本体论中

到目前为止,我已经阅读了耶拿的本体论,但我应该如何插入所有这些个体。我是否需要使用任何类型的循环,或者Jena中有具体规定插入重复信息

注意:我以前在上问过类似的问题。我得到了答案,但我想知道在不使用对齐ApI的情况下,我是否可以完全使用Jena来实现它

注意:answers.semanticweb.com似乎当前处于关闭状态。

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

前缀:
插入数据{
:个人1:地点:p1;:日期“110114”;温度13。
:个人2:地点:p2;:日期“120114”;温度14。
:个人3:地点:p3;:日期“130114”;温度15。
}

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

因为我不能发表评论,所以我将在这里进行

Haroon,关于answers.semanticweb.com上的问题,我刚刚介绍了Alignment API,因为您说需要找到CSV列和概念之间的映射。仅使用Jena是不行的,因为据我所知,Jena没有为对齐或语义注释提供任何方法或任何类型的支持。事实上,您也可以在不使用对齐API的情况下实现这一点,方法是使用其他库,如第二个字符串(我在这里的一条注释),或任何其他允许您运行字符串比较(或结构或语义…)的库

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

如果您的本体太大,您可以获取其中的一部分,或者只是创建所需的资源,然后将其附加到您的模型中。您可以通过使用Jena方法来实现这一点,或者像Joshua Taylor所说的那样通过代码创建SPARQL更新

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

在Jena模型中创建了个人之后,它们将成为本体的一部分,但只限于内存中的版本,因此,您需要将其保存回其来源:支持SPARQL更新支持的某个文件或SPARQL端点


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

泰约,我渐渐明白了。但是,由于我没有使用insert data命令引用任何本体/数据存储,所以在哪里可以插入这些数据。另外,Jena API支持这个过程吗?看看Jena的类。您可以使用UpdateAction.execute(字符串,模型)来运行模型的更新(插入数据…)。我正在这样做,但是我遇到了一些异常。请看一下生成的异常。我无法将我的代码和例外列表放在评论部分。谢谢,@Joshua。最后,它成功了。现在,我需要编写代码来自动完成它。