以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Semantic Web(语义Web)/描述逻辑/本体 』 (http://bbs.xml.org.cn/list.asp?boardid=2) ---- [求助]如何通过调用JenaAPI来修改本体实例的属性值 (http://bbs.xml.org.cn/dispbbs.asp?boardid=2&rootid=&id=77737) |
-- 作者:绿色心情1231 -- 发布时间:10/11/2009 5:27:00 PM -- [求助]如何通过调用JenaAPI来修改本体实例的属性值 我阅读Jena API,查到有关修改Individual的datatypeProperty的方法是 void setPropertyValue(Property property,RDFNode value),其中property是所要修改的属性,value是修改的值。而且该方法的调用会首先清除所有property的值,然后在设置新值value。 但是这个value必须是RDFNode形式,而查了好久,没有那个方法是可以输入对应值返回相应的RDFNode的。比如我需要的方式是修改实例Bill的属性值hasAge为"12",如何能够将12转换为RDFNode??? 或者这个思路不行,还有什么方式可以用JenaAPI来实现对本题实例的属性值的修改的?? |
-- 作者:绿色心情1231 -- 发布时间:10/11/2009 10:22:00 PM -- 看了好久的JenaAPI,尝试了好久,终于找到解决之道了! 方法一:应用于实例Individual的某个Property只有单一属性值的情况,只需将新值替代劳值即可。 import java.io.FileInputStream; import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.rdf.model.ModelFactory; public class OntologyModifyTest { 另外,如果需要对某个Individual的Property覆盖多个属性值,可以先调用一次Individual.setPropertyValue(Property pro, RDFNode value), 然后调用几次Individual.addProperty(Property p, RDFNode o)。 ---------------------------------------------------------------------------------------------------------------- P.S. |
-- 作者:Humphrey -- 发布时间:10/12/2009 4:53:00 PM -- 是强制类型转换的方法吗? 感谢楼主分享经验,谢谢! |
-- 作者:绿色心情1231 -- 发布时间:10/12/2009 5:06:00 PM --
不能完全算是强制类型转换,应该是子类的对象可以赋值给超类的对象,或者子接口及实现该接口的类的对象(实现该接口的类以接口的形式传递)可以赋值给超接口。 以下三个jena中Interface的继承关系为: RDFNode extends FrontsNode,Literal extends RDFNode 所以以下赋值是有效的: RDFNode rdfNode = ontModel.createLiteral("killer") 因此这是属于子类赋值超类的情况。否则不在继承树同一路径上的类型,Java中是需要显示写出强制转换的类型的。 |
-- 作者:andyneo -- 发布时间:1/18/2011 4:57:00 PM -- 楼主有没有什么方法 可以区分个体实例的对象属性和数据属性的 谢谢! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |