Proceso
Proceso

Reputation: 567

Updating values of functional data properties doesn't remove old values, only adds new triples

I have an RDF Ontology with a functional property hasTrendValue which relates instances of a class with integer values. I want to change these values programmatically using Jena. I tried the following code:

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();

This code executes correctly but, it does not update the already hasTrendValue value in the RDF; instead it adds a new hasTrendValue to the RDF ontology even though it declared as a functional property. What is the better way of doing this?

Upvotes: 1

Views: 303

Answers (1)

AndyS
AndyS

Reputation: 16630

RDF does not have the concept of "change", only "add" and "remove". To change a value, you need to remove the old one and add the new one.

Declaring it as a functional property does not change this. Jena does not check the ontology on every operation. In fact, a functional property says that the object identifies one thing - it may be written in many ways. 001 and 1 are the same value. There may be multiple triples, it's not automatically wrong.

Upvotes: 3

Related Questions