ex:ConceptX ex:property ex:ConceptY
ex:ConceptZ ex:property ex:ConceptY
Hi Carl,
here is a design pattern for this:
ex:UniqueValueShape
a sh:PropertyShape ;
sh:targetObjectsOf ex:property ;
sh:path [ sh:inversePath ex:property ] ;
sh:maxCount 1 .
The above applies to all values of ex:property, i.e. the distinct objects of triples that have ex:property as predicate. It reports a violation if for any of those target nodes, when you walk ex:property in the inverse direction, there are more than one value nodes (i.e. the subjects of the inverse triples).
(Above the property shape itself carries the target statement,
but it would of course also work via a NodeShape that has the
property shape via sh:property).
HTH
Holger
--
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-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/7a0925ed-ea55-405a-8e10-9f45677bfdcb%40googlegroups.com.
Hi Carl,
here is a design pattern for this:
ex:UniqueValueShape
a sh:PropertyShape ;
sh:targetObjectsOf ex:property ;
sh:path [ sh:inversePath ex:property ] ;
sh:maxCount 1 .
The above applies to all values of ex:property, i.e. the distinct objects of triples that have ex:property as predicate. It reports a violation if for any of those target nodes, when you walk ex:property in the inverse direction, there are more than one value nodes (i.e. the subjects of the inverse triples).
(Above the property shape itself carries the target statement, but it would of course also work via a NodeShape that has the property shape via sh:property).
HTH
Holger
On 24/01/2020 10:59, cbur...@healthwise.org wrote:
What if I wanted to create a constraint (in SHACL, perhaps) specifying that two concepts may not share the same object for a particular property? I would want a warning to be raised when a user attempts to save a concept containing the triple--
ex:ConceptX ex:property ex:ConceptY
if somewhere else in the vocabulary there already exists the triple
ex:ConceptZ ex:property ex:ConceptY
It occurs to me that such a rule is already enforced for the skos:prefLabel property in EDG, but I don't know how this is being done "under the hood." Can anyone advise how to create a similar constraint? Thanks.
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 topbrai...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to topbraid-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/topbraid-users/f9c26431-d16f-4893-9d05-17a7f10663b0%40googlegroups.com.