BFO-Mappings/PROV-to-BFO

SKOS Mappings

Opened this issue · 6 comments

tmprd commented

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:

tmprd commented

We're going to try a SWRL rule for ("occurs in" OR "located in") => prov:atLocation

tmprd commented

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 is Activity or Agent or Entity or InstantaneousEvent
    • where Activity is equivalent to process and InstantaneousEvent is equivalent to process boundary
    • and Entity is a subclass of non-spatial region continuant
  • atLocation range is Location
    • where Location is equivalent to site

Adding these axioms means:

  • If A "occurs in" B, then A must be a prov:Activity or prov:InstantaneousEvent and B must be a "site".
  • If C "is located in" D, then C must be an prov:Agent or prov: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.

tmprd commented

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)
tmprd commented

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)
tmprd commented

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.