Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jena:如何获得多值属性的值?_Java_Rdf_Jena - Fatal编程技术网

Java Jena:如何获得多值属性的值?

Java Jena:如何获得多值属性的值?,java,rdf,jena,Java,Rdf,Jena,我在本体论文献中定义了一个多值对象属性。有一本书的作者是writer-1和writer-2。如果我想获得第1本书的作者,我可以写这样的东西 Resource r; // r represents the individual book-1 r.getRequiredProperty(literature.hasAuthor).getObject().toString(); 或 但它们都只返回第一个值writer-1,writer-2被忽略 如何修改代码以获取所有作者?通常,get*操作获取单

我在本体论文献中定义了一个多值对象属性。有一本书的作者是writer-1和writer-2。如果我想获得第1本书的作者,我可以写这样的东西

Resource r;  // r represents the individual book-1
r.getRequiredProperty(literature.hasAuthor).getObject().toString();

但它们都只返回第一个值writer-1,writer-2被忽略


如何修改代码以获取所有作者?

通常,get*操作获取单个项目,list*返回多个项目的迭代器


使用.listproperty->StmtIterator。

通常,get*操作获取单个项,list*返回多个项的迭代器

使用.listproperty->StmtIterator。

Jena资源有一个方法,您可以使用该方法迭代将资源作为主题并具有给定属性的语句。为了与您的示例保持一致,下面的示例描述了及其两个编辑器(在本例中称为authors)

公共类多重属性{ 公共静态无效字符串[]args{ 字符串ns=http://www.example.com/; 模型模型=ModelFactory.createDefaultModel; model.setNsPrefix,ns; 属性hasAuthor=model.createProperty ns+hasAuthor; 资源rdfPrimer=model.createResourcehttp://www.w3.org/TR/rdf-primer/ ; 资源fm=model.createResource ns+FrankManola; Resource em=model.createResource ns+EricMiller; rdfPrimer.addProperty hasAuthor,fm; rdfPrimer.addProperty hasAuthor,em; System.out.println==模型==; 模型。写入系统。输出,N3; System.out.println\n==属性==; StmtIterator it=rdfPrimer.listProperties hasAuthor; 当它有下一个{ 报表stmt=it.nextStatement; System.out.println*+stmt.getObject; System.out.println*+stmt; } } } 输出:

==模型== @前缀:。 :作者:埃里克·米勒,:弗兰克马诺拉。 ==属性== * http://www.example.com/EricMiller * [http://www.w3.org/TR/rdf-primer/, http://www.example.com/hasAuthor, http://www.example.com/EricMiller] * http://www.example.com/FrankManola * [http://www.w3.org/TR/rdf-primer/, http://www.example.com/hasAuthor, http://www.example.com/FrankManola] Jena资源有一个方法,您可以使用该方法迭代将资源作为主题并具有给定属性的语句。为了与您的示例保持一致,下面的示例描述了及其两个编辑器(在本例中称为authors)

公共类多重属性{ 公共静态无效字符串[]args{ 字符串ns=http://www.example.com/; 模型模型=ModelFactory.createDefaultModel; model.setNsPrefix,ns; 属性hasAuthor=model.createProperty ns+hasAuthor; 资源rdfPrimer=model.createResourcehttp://www.w3.org/TR/rdf-primer/ ; 资源fm=model.createResource ns+FrankManola; Resource em=model.createResource ns+EricMiller; rdfPrimer.addProperty hasAuthor,fm; rdfPrimer.addProperty hasAuthor,em; System.out.println==模型==; 模型。写入系统。输出,N3; System.out.println\n==属性==; StmtIterator it=rdfPrimer.listProperties hasAuthor; 当它有下一个{ 报表stmt=it.nextStatement; System.out.println*+stmt.getObject; System.out.println*+stmt; } } } 输出:

==模型== @前缀:。 :作者:埃里克·米勒,:弗兰克马诺拉。 ==属性== * http://www.example.com/EricMiller * [http://www.w3.org/TR/rdf-primer/, http://www.example.com/hasAuthor, http://www.example.com/EricMiller] * http://www.example.com/FrankManola * [http://www.w3.org/TR/rdf-primer/, http://www.example.com/hasAuthor, http://www.example.com/FrankManola]
r.getPropertyResourceValue(literature.hasAuthor).toString();