SKOS Mappings
Opened this issue · 6 comments
Some PROV terms have no mappings to BFO or CCO or RO terms, and some mappings almost work except for some edge cases. It would be nice to include our explanations of the close-but-not-quite mappings in the ontology.
In the context of mapping large ontologies, often semi-automatically with statistical matching, SSSOM recommends uses SKOS predicates like broadMatch
, narrowMatch
, relatedMatch
, closeMatch
, & exactMatch
. Exact matches are transitive. Exact, close, and related matches are symmetric. Broad and narrow matches can be made transitive with broaderTransitive
and narrowerTransitive
.
I think we can often use skos:broadMatch
in place of rdfs:subPropertyOf
or rdfs:subClassOf
.
Examples:
[] rdf:type owl:Axiom ;
owl:annotatedSource prov:hadRole ;
owl:annotatedProperty skos:broadMatch ;
owl:annotatedTarget obo:BFO_0000057 ;
sssom:object_label "has participant (at some time)" ;
sssom:mapping_justification "If a prov:Influence had role some prov:Role, then this is similar to that prov:Influence having that prov:Role as a participant as a kind of broader relation. However, only processes can have participants, but some prov:Influences are process boundaries, such as prov:Generation, which is a prov:InstantaneousEvent."@en .
[] rdf:type owl:Axiom ;
owl:annotatedSource prov:atLocation ;
owl:annotatedProperty skos:broadMatch ;
owl:annotatedTarget obo:BFO_0000171 ;
sssom:object_label "located in at some time" ;
sssom:mapping_justification "If a prov Activity or Agent or Entity or InstantaneousEvent is at some prov:Location then this is similar to the broader relation of BFO 'located in at some time'. However, only continuants can be located in something, while prov:Activities are occurents. "@en .
[] rdf:type owl:Axiom ;
owl:annotatedSource prov:atLocation ;
owl:annotatedProperty skos:broadMatch ;
owl:annotatedTarget obo:BFO_0000066 ;
sssom:object_label "occurs in" ;
sssom:mapping_justification "If a prov Activity or Agent or Entity or InstantaneousEvent is at some prov:Location then this is similar to the broader relation of BFO 'occurs in'. However, only occurents can occur in something, while prov:Agents and prov:Entities are continuants. "@en .
With the last two I'm not sure if either is broader than the other, so skos:relatedMatch
may be more appropriate...
Links:
- Some unmapped terms (others are temporarily commented out here)
- https://www.w3.org/TR/skos-primer/#secmapping
- https://www.w3.org/TR/skos-reference/#mapping
- http://www.w3.org/TR/skos-reference/skos.rdf
We're going to try a SWRL rule for ("occurs in" OR "located in") => prov:atLocation
We're going to try a SWRL rule for ("occurs in" OR "located in") =>
prov:atLocation
This doesn't work as a rule or even just subproperty axioms.
atLocation
domain isActivity or Agent or Entity or InstantaneousEvent
- where
Activity
is equivalent toprocess
andInstantaneousEvent
is equivalent toprocess boundary
- and
Entity
is a subclass of non-spatial region continuant
- where
atLocation
range isLocation
- where
Location
is equivalent tosite
- where
Adding these axioms means:
- If A "occurs in" B, then A must be a
prov:Activity
orprov:InstantaneousEvent
and B must be a "site". - If C "is located in" D, then C must be an
prov:Agent
orprov:Entity
and D must be a "site".
But something could occur or be located in something that isn't a site, because the range of "occurs in" and "is located in" includes material entities.
These work:
# atLocation -> occurs in
prov:atLocation(?x, ?y) ^ prov:Activity(?x) -> obo:BFO_0000066(?x, ?y)
prov:atLocation(?x, ?y) ^ prov:InstantaneousEvent(?x) -> obo:BFO_0000066(?x, ?y)
# occurs in -> atLocation
obo:BFO_0000066(?x, ?y) ^ prov:Location(?y) -> prov:atLocation(?x, ?y)
# atLocation -> located in
prov:atLocation(?x, ?y) ^ prov:Entity(?x) -> obo:BFO_0000171(?x, ?y)
prov:atLocation(?x, ?y) ^ prov:Agent(?x) -> obo:BFO_0000171(?x, ?y)
# located in -> atLocation
obo:BFO_0000171(?x, ?y) ^ prov:Location(?y) -> prov:atLocation(?x, ?y)
prov:describesService
(from PROV-AQ) has no domain or range, but is commented:
relates a generic provenance query service resource (type prov:ServiceDescription) to a specific query service description (e.g. a prov:DirectQueryService or a sd:Service).
A prov:ServiceDescription
is a prov:SoftwareAgent
, and it's defined:
Type for a generic provenance query service. Mainly for use in RDF provenance query service descriptions, to facilitate discovery in linked data environments.
This suggest that prov:ServiceDescription
is ambiguous and can either be interpreted as an agent or information. We can say it has a skos:relatedMatch
to cco:is_about
or cco:describes
.
The way to represent this in CCO is something like this invalid SWRL rule:
# A ServiceDescription is a carrier of some Information Content Entity which is about some (BFO) Entity
prov:describesService(?a, ?c) -> obo:BFO_0000101(?a, ?b) ^ cco:InformationContentEntity(?b) ^ cco:is_about(?b, ?c) ^ obo:BFO_0000001(?c)
prov:Person and cco:Person could be relatedMatch
or closeMatch
because prov:Person is a subclass of prov:Agent, while cco:Person is not a subclass of cco:Agent.