Hi!
I have been using the out of the box GraphQL mutations, "createX", 
"addToX", "updateX" where X is one of my class/shapes.
I have been observing some behaviors that are not immediately evident from 
the 
documentation here:
https://www.topquadrant.com/doc/7.8/graphql/mutations.html

For example, "createX(uri)" does not violate any constraint if "uri" 
already 
exists as an individual, but reports a violation if uri is an instance of X.
That is, it does not check that "uri ?p ?o", but rather "uri a _ 
subClassOf* X".
This would be consistent with the documentation. 

However, updateX(uri) does *not *seem to check "uri a X" as a precondition. 
In fact, if the mutation is able to assert "uri a Y" through a property 
shape 
bound to rdf:type, the mutation succeeds, effectively creating a new 
individual with a type that may be unrelated to X.
Besides being a way to implement "duck typing", this operation behaves
more like "upsert" than "update" - very useful!, but not exactly what I 
would
expect from the name and the docs.

In general, is there a more precise definition of the mutations - for 
example 
by means of an equivalent SPARQL query ?

Thank you in advance
Davide


-- 
The topics of this mailing list include TopBraid EDG and related technologies 
such as SHACL.
To post to this group, send email to topbraid-users@googlegroups.com
--- 
You received this message because you are subscribed to the Google Groups 
"TopBraid Suite Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to topbraid-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/topbraid-users/3cf38e5a-e1b2-4ed6-afbf-c5665f7e6fe9n%40googlegroups.com.

Reply via email to