import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import org.simantics.databoard.Bindings;
} else if (p.value instanceof Expression) {
Expression expression = (Expression)p.value;
this.properties.put(pn, new StructuralProceduralExpressionPropertyVariable(graph, this, p.relation, expression.text) );
+ } else if (this.properties.containsKey(pn)) {
+ // The property overrides the value of an asserted property variable
+ StandardAssertedGraphPropertyVariable assertedValue = (StandardAssertedGraphPropertyVariable) this.properties.get(pn);
+ if (Objects.equals(assertedValue.property.predicate, p.relation)) {
+ this.properties.put(pn, new StandardProdeduralPropertyVariable(graph, this, assertedValue, p.value));
+ } else {
+ LOGGER.warn("Ignored attempt to override asserted property {}/{}#{} with a different relation", parent.getURI(graph), name, pn);
+ }
} else {
this.properties.put(pn, new StandardConstantGraphPropertyVariable(graph, this, p.relation, p.value) );
}