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



我有一个RDF本体,它有一个函数属性hasTrendValue,它将类的实例与整数值相关联。我想使用 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,即使它声明为函数属性。有什么更好的方法可以做到这一点?

RDF没有"change"的概念,只有"add"和"remove"。 要更改值,您需要删除旧值并添加新值。

将其声明为函数属性不会更改此设置。 耶拿不会检查每个操作的本体。 事实上,函数属性表示对象标识一件事 - 它可以以多种方式编写。 001 和 1 是相同的值。 可能有多个三元组,它不会自动出错。

最新更新