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.