Skip to content
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

SKOS Mappings #22

Open
tmprd opened this issue Oct 7, 2023 · 6 comments · Fixed by #23
Open

SKOS Mappings #22

tmprd opened this issue Oct 7, 2023 · 6 comments · Fixed by #23
Assignees

Comments

@tmprd
Copy link
Contributor

tmprd commented Oct 7, 2023

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
Copy link
Contributor Author

tmprd commented Oct 13, 2023

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

@tmprd
Copy link
Contributor Author

tmprd commented Oct 20, 2023

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
Copy link
Contributor Author

tmprd commented Oct 20, 2023

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 tmprd linked a pull request Oct 20, 2023 that will close this issue
@tmprd tmprd closed this as completed in #23 Oct 23, 2023
@tmprd tmprd reopened this Oct 27, 2023
@tmprd
Copy link
Contributor Author

tmprd commented Oct 27, 2023

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
Copy link
Contributor Author

tmprd commented Nov 24, 2023

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.

@jonathanvajda
Copy link

jonathanvajda commented Nov 24, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants