-
Notifications
You must be signed in to change notification settings - Fork 35
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
UCO should hint at Facet associations #634
Comments
I am all for having some sort of hinting to associate potential or likely connections between particular UcoObject classes and certain Facets. It is kind of late as I am reviewing this so I am not 100% confident in my read of the semantic logic and inferencing implications of the proposed approach but these two issues would be my main concern that any solution must avoid:
If you have verified that these are not issues with the proposed approach then my main concerns are assuaged. If the following is the only real semantic issue then I agree that this is not a deal-breaker and is likely worth eating in order to get the hinting:
|
The verification is in this Gist. |
Background
At present, any instance of a
Facet
is freely associable with any instance of aUcoObject
. This is in support of duck typing, where being a Foo implies having behaviors like a Foo, but having behaviors like a Foo does not necessarily imply being a Foo. However, at present, UCO has no encoding of this. "Foo" has no association with "FooFacet" stronger than any other "BarFacet" - e.g.,uco-observable:File
anduco-observable:FileFacet
are as strongly related by structural design asuco-observable:File
anduco-observable:URLFacet
. The string pattern-matching is clear, but would not cover cases whereFacet
s should be associated with non-matching name patterns, likeuco-identity:Person
anduco-identity:SimpleNameFacet
.There is a mechanism to express this in OWL. For
File
andFileFacet
, this block of Turtle states that "If a thing is a File, there exists one FileFacet linked with hasFacet."(Syntax can be reviewed by checking for
ObjectExactCardinality
in OWL 2 Web Ontology Language Mapping to RDF Graphs.)Adding this encoding does not cause data where there's a
File
with noFileFacet
to be declared invalid. OWL's open-world assumption leaves it fine to not record aFileFacet
.SHACL is not an appropriate mechanism to make such an expression. This statement of existence can be represented with
sh:qualifiedValueShape
, but there's nothing being constrained, except the uniqueness of the specific facet type (i.e, noFile
can have two differentFileFacet
s). Specific facet type uniqueness is left out of scope of this proposal, and requires resolution of Issue 595. The present proposal intends only to hint an inheritable association.Requirements
Requirement 1
UCO SHOULD hint the
Facet
classes associated with anyUcoObject
subclass.Requirement 2
The hinting mechanism MUST support arbitrary
Facet
associability---that is, if a pattern association is not present (like a "Foo" and "FooFacet" being related by suffixing), hard-coding an association should be possible.Requirement 3
The hinting mechanism MUST NOT impede other abilities to associate
Facet
instances withUcoObject
instances.Risk / Benefit analysis
Benefits
This proposal helps to remove some of the obfuscation caused by housing properties in
Facet
s rather than directly onUcoObject
s. Before this proposal, the tie between aFile
and thefileName
property are as strong as the tie between aFile
and a latitude value.Adoption of this proposal enables focused discovery of properties entailed by
Facet
s from parent classes. For instance, the CASE JSON-LD Stubs repository shows a stub foruco-observable:ArchiveFile
here. TheFacet
hinting in this proposal enables linking in the directly associatedArchiveFileFacet
, as well as the parent class'sFileFacet
. Both associations were drawn from the "Foo"/"FooFacet" pattern-match, which will be part of the implementation this proposal begins.Reviewing the
Facet
hints also provides an opportunity to reviewFacet
s that have no current associatedUcoObject
subclass, clearing up currently unclear and/or forgotten use cases.Risks
This proposal brings more OWL structural syntax into UCO. This risk and syntactic complexity increase is suggested as acceptable because the need is believed inappropriate to meet with SHACL.
Concerns with accidental inference capabilities have been noted by some UCO Ontology Committee members. The restriction illustrated in the proposal background has the following inferential effects:
File
, if there are twoFileFacet
s linked withhasFacet
, the twoFileFacet
s are inferred to be the same individual. This is actually in line with previously expressed, but not yet encoded, understandings that "Specific"Facet
classes are meant to be unique in typing on their "Host" objects. (Again, a universal SHACL review mechanism for this uniqueness is deferred until after Issue 595 is adopted.)File
UcoObject
instance, if there are twoFileFacet
s linked withhasFacet
, the twoFileFacet
s are NOT inferred to be the same individual. While not desirable, this is consistent with the current state of UCO. (This would also be resolved after Issue 595.)File
has noFileFacet
linked withhasFacet
, there is NO automatic creation of aFileFacet
node.File
has some non-FileFacet
linked withhasFacet
, it is NOT inferred to be aFileFacet
. (This would happen ifowl:allValuesFrom
were used.)File
thing has aFileFacet
linked withhasFacet
, the thing is NOT inferred to be aFile
. (This would happen if a certainowl:equivalentClass
construction were used. Theowl:Restriction
used in this proposal is only "if", not "only if" or "if and only if".)Last, while the "Foo"/"FooFacet" pattern will generate many of the
owl:Restriction
s, severalFacet
classes don't match this pattern, and will require manual attention and association. A comment following this proposal will list the known non-mechanically-associableFacet
s subclasses.Competencies demonstrated
The key competency generated in this proposal is support for mechanical discovery of properties of
UcoObject
s ("domain objects") that have been obscured by separation intoFacet
s. The JSON-LD stubs repository, especially with itsArchiveFile
demonstration, is left as the demonstration of this new competency.Solution suggestion
owl:Restriction
s noted in the background for all "Foo"/"FooFacet" pairs. Do so by importing the scriptfacet_cardinalities_ttl.py
.Facet
s.facet_cardinalities_ttl.py
for an idempotent usage process - namely, not generatingowl:Restriction
s if it already exists in UCO.owl:Restriction
s being syntactically required to be blank nodes.facet_cardinalities_ttl.py
into CI, to catch when a new "Foo"/"FooFacet" pair is added but anowl:Restriction
is forgotten.owl:Restriction
s, and fail the test if any are generated, with a gentle suggestion to copy them in.Coordination
develop
for the next releasedevelop
state with backwards-compatible implementation merged intodevelop-2.0.0
develop-2.0.0
(or N/A)develop
branch updated to track UCO's updateddevelop
branchdevelop-2.0.0
branch updated to track UCO's updateddevelop-2.0.0
branchThe text was updated successfully, but these errors were encountered: