如何使用编程(动态)资源s1,资源s2 ,,,创建具有不同名称的资源,

时间:2011-12-08 05:33:17

标签: rdf jena

Q1。使用Jena框架和Java,我可以创建一个资源数组,原因是读取CSV文件并为每一行创建资源,假设两行重新相关,所以我需要做到这一点:

Resource single_process1 = createResource()

然后是第二行:

Resource single_process2 = createRessource()

你注意到数字1,2,我需要创建它(将它添加为资源名称的一部分),所以稍后因为这两个资源是相关的所以我需要将它们组合起来作为引用这个组合过程包含的两个单一进程(资源)。是可能的资源数组,任何其他选项?

Q2。如何在Jena中引用rdf:type或sio:

1 个答案:

答案 0 :(得分:1)

首先,请一次只向StackOverflow发一个问题。本网站的目的是尝试收集针对个别问题的准确,高质量的答案,以便未来的用户可以从中受益。因此,每个问题都需要在一个单独的帖子中。

我对你的问题有点困难。如果我可以解释:

  • 您正在处理CSV文件
  • 在处理过程中,文件的每一行对应一个资源及其属性,并将相应的三元组添加到Jena Model。创建单个Resource作为给定行的每个三元组的主题
  • 随后,您发现两个主题资源应该引用相同的内容(即CSV文件的两行中的数据引用相同的真实世界实体)
  • 您想要合并两个资源中的三元组以仅使用一个主题资源

如果这是一个准确的摘要,那肯定有点不寻常......但这是你的数据!无论如何,您可以合理地将两个资源中的语句合并为一个:

Resource r0 = .... ; // the first subject resource
Resource r1 = .... ; // the second subject resource

// we discover that r0 and r1 refer to the same thing, so we 
// want to merge their properties ...

List<Statement> r1Props = r1.listProperties().toList();

for (Statement s: r1Props) {
    // add the property to r0, so <r1 P O> becomes <r0 P O>
    r0.addProperty( s.getPredicate(), s.getObject() );

    // remove the statement about r1
    // once all of r1's triples are removed, r1 is no longer in the Model
    s.remove();
}

我不确定的是这与资源数组有什么关系。你需要多解释一下。

关于Q2,您可以使用类com.hp.hpl.jena.vocabulary.RDFS来引用RDFS名称空间中的URI,类似地使用RDFOWL和其他一些名称。要创建自己的词汇表课程,请参阅Jena schemagen

相关问题