-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
core:hasFacet needs to be encoded as and test as an inverse-functional property #379
Closed
10 tasks done
Labels
Milestone
Comments
core:hasFacet is definitely intended to be an owl:InverseFunctionalProperty. |
ajnelson-nist
added a commit
that referenced
this issue
Aug 19, 2022
No effects were observed on Make-managed files. References: * #379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
10 tasks
ajnelson-nist
added a commit
that referenced
this issue
Aug 19, 2022
A follow-on patch will regenerate Make-managed files. References: * #379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
ajnelson-nist
added a commit
that referenced
this issue
Aug 19, 2022
References: * #379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
10 tasks
ajnelson-nist
added a commit
to casework/CASE-Examples
that referenced
this issue
Aug 19, 2022
No effects were observed on Make-managed files. References: * ucoProject/UCO#379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
ajnelson-nist
added a commit
to casework/casework.github.io
that referenced
this issue
Aug 19, 2022
A follow-on patch will regenerate Make-managed files. References: * ucoProject/UCO#379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
ajnelson-nist
added a commit
to casework/casework.github.io
that referenced
this issue
Aug 19, 2022
References: * ucoProject/UCO#379 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
PR #462 contains the implemented solution for this Issue. The SHACL-SPARQL constraint illustrated in the competency questions has also been implemented, using the sketched JSON-LD with some syntax corrections and adjustments. |
11 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Background
UCO's
core:Facet
class behaves in manners that do not seem to be explored previously in ontology engineering. Lacking reference implementations in other ontologies, UCO needs to make clear some behaviors.One behavior is explaining what the relationship between a
Facet
andUcoObject
is. Issue 378 sets to codifying the classes as disjoint. Next, we should review how "Shareable" aFacet
instance is.It is possible a user could be tempted to share a
Facet
, for the sake of saving on graph weight when the user knows theFacet
's recorded property data are highly likely to be repeated. One example of this is the set of measurement-based, non-classifying properties inContentDataFacet
, i.e. the size and hashes, but not themimeType
. If a user is hashing file sets where they know many file contents will be repeated, they might be tempted to define and reuse oneFacet
individual.It's possible
core:hasFacet
'srdfs:comment
definition codifies that this is not intended to be permitted, by its use of the word "particular." Nothing that is encoded (i.e. not English) in the ontology prevents this, however.In OWL, the way to commit to this pattern of only-one-"Owner"-
UcoObject
is to declarecore:hasFacet
aowl:InverseFunctionalProperty
. Aowl:FunctionalProperty
(inverse coming in a moment) states that, if:b
is a functional property, then a triple:a :b :x
has only one value for:x
. If there are two triples:a :b :c
and:a :b :d
,:c
and:d
are inferred in OWL to be the same thing. An ontology with those triples is consistent, unless there is also a triple:c owl:differentFrom :d
. Anowl:InverseFunctionalProperty
goes in object-to-subject order instead. If:b
is anowl:InverseFunctionalProperty
, then two triples:y :b :c
and:z :b :c
cause OWL to infer that:y owl:sameAs :z
.core:hasFacet
should become aowl:InverseFunctionalProperty
in order to declare expectations onFacet
"ownership". SHACL enforcement should also be able to cover cases where OWL inferencing may have been applied and caused identity-sharing.Requirements
Requirement 1
A
core:Facet
instance needs to be understood, and enforced, as only being permitted to belong to onecore:UcoObject
instance.Requirement 2
Any implemented SHACL enforcement of a
core:Facet
being associated with only onecore:UcoObject
instance must be able to understandowl:sameAs
designating two nodes "being" the same concept.Risk / Benefit analysis
Benefits
Facet
s prevents issues where a sharedFacet
being modified via association with oneUcoObject
induces unforeseen consequences for anotherUcoObject
.Facet
is a part of one and only oneUcoObject
.Risks
Facet
may be computationally expensive.Competencies demonstrated
Competency 1
Take the following graph as an example.
This graph, with no other supplementary statements and with no OWL inferencing, is inconsistent with (what the proposer understands to be) UCO's intended design of
Facet
s not being shared.Competency Question 1.1
What nodes are in violation of the
core:hasFacet
having only one subject per object?The following query encodes this test:
Result 1.1
kb:facet-1
Competency Question 1.2
Suppose this graph is added:
Now, what nodes are in violation? Note the test must now be encoded to consider
owl:sameAs
:(Note from the submitter - this query has not been tested.)
Result 1.2
No nodes should be returned.
Solution suggestion
core:hasFacet a owl:InverseFunctionalProperty .
sh:NodeShape
, which doesn't necessarily need to be given an IRI, but would have an objects-targeting triplesh:targetObjectsOf core:hasFacet
.Coordination
develop
The text was updated successfully, but these errors were encountered: