Open VladimirAlexiev opened 1 month ago
Indeed the association used denotes the usage, but a bit more than that the presence in the serialised data. The "used" might be a bit broader terms as I do not know if you actually do some sort of RDFS based validation you kind of use both...
I guess this is point to discuss. Deprecate seems not that nice option as this can confuse with the meaning of deprecate we use in CIM = being it is still used, but it will be deleted in next or following versions
I may propose another approach
A disadvantage is that if we remove cims:AssociationUsed we have trouble to derive constraints from RDFS to SHACL, so that part of the tooling will need additional input which we can see to supply by other means
@Sveino please state whether CIM data will use inverseOf
inference
cims:AssociationUsed
holds precious info: which direction is actually present in the data.
(and this issue suggests to express this in a standard way)cims:AssociationUsed
is less importantcan confuse with the meaning of deprecate we use in CIM = being it is still used, but it will be deleted in next or following versions
owl:deprected
:
cims:deprecatedWillBeDeletedInFuture
cims:deprecatedBecauseNotUsedInData
I agree with Chavdar. We need to owl:inversOf
and we expect that there will be reasoning to derive the association that is not included in the instance file. cims:AssociationUsed
is a profile information. It will not be included in the vocabulary. It can therefore be translated into relevant SHACL validation without being included as RDFS.
Decided that:
sh:not [sh:property [sh:path <recessive prop>]]
the current outcome here is that 1) We keep owl:inverseOf in the RDFS so that we have the description of the 2 association ends 2) in SHACL we use the following pattern to validate that inverse associations are not exchanged. We can use the same/similar pattern in the SHACL for the profile so that we describe used direction of the association.
dl:DiagramObjectPoint.DiagramObject-inversePresent1 rdf:type sh:NodeShape ; sh:property dl:DiagramObject.DiagramObjectPoints-present1; sh:targetSubjectsOf cim:DiagramObject.DiagramObjectPoints .
dl:DiagramObject.DiagramObjectPoints-present1 rdf:type sh:PropertyShape ; sh:description "Inverse associations should not be instantiated" ; sh:message "Inverse association present" ; sh:name "Inverse1-targetSubjectsOf" ; sh:maxCount 0; sh:path cim:DiagramObject.DiagramObjectPoints; sh:severity sh:Violation .
cims:inverseRole
to the standard propowl:inverseOf
inverseOf
reasoning is required since otherwise how will SHACL and SPARQL writers know which direction of an inverse pair to use?However, @Sveino explained that
cims:AssociationUsed
points out which prop of an inverse pair is actually used, eg:My proposal is to make this explicit by using standard props:
An even "stronger" approach would be to omit the definition of the "recessive" prop and declare only its name in the "dominant" prop:
This is the PROV approach: https://www.w3.org/TR/prov-o/#inverse-names. It has been adopted in DCAT (at least in part): https://w3c.github.io/dxwg/dcat/#inverse-properties, https://github.com/w3c/dxwg/issues/1336 .
However, we have rich info (
owl:InverseFunctionalProperty, cims:multiplicity
) that we would lose if we use a mere name.