更新功能数据属性的值不会删除旧值,只会添加新的三元组

时间:2013-11-18 10:50:50

标签: java rdf jena owl ontology

我有一个带有功能属性hasTrendValue的RDF本体,它将类的实例与整数值相关联。我想使用Jena以编程方式更改这些值。我尝试了以下代码:

Property hasTrend = ontModel.getDatatypeProperty(preFix+"hasTrendValue");
Individual regionQualifier = ontModel.getIndividual(activityName); 
ontModel.addLiteral(regionQualifier,hasTrend,34); 

PrintStream p = new PrintStream(ontoPath);
ontModel.write(p,null);
p.close();

此代码正确执行,但它不会更新RDF中已有的hasTrendValue值;相反,它向RDF本体添加了新的hasTrendValue,即使它被声明为功能属性。这样做的更好方法是什么?

1 个答案:

答案 0 :(得分:3)

RDF没有“改变”的概念,只有“添加”和“删除”。要更改值,您需要删除旧值并添加新值。

将其声明为功能属性不会改变这一点。 Jena没有检查每个操作的本体。事实上,一个功能属性表示该对象识别一件事 - 它可能以多种方式编写。 001和1是相同的值。可能有多个三元组,它不会自动出错。