我有一个带有功能属性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
,即使它被声明为功能属性。这样做的更好方法是什么?
答案 0 :(得分:3)
RDF没有“改变”的概念,只有“添加”和“删除”。要更改值,您需要删除旧值并添加新值。
将其声明为功能属性不会改变这一点。 Jena没有检查每个操作的本体。事实上,一个功能属性表示该对象识别一件事 - 它可能以多种方式编写。 001和1是相同的值。可能有多个三元组,它不会自动出错。