Closed khelm closed 6 years ago
@khelm - i'm going to clarify the description as:
it's possible for a prov:agent to also be either a prov:entity or a prov:activity.
it's still a single node that has two types. i think that's still fine from a graph perspective. although i missed the call, it would be helpful to clarify what the difficulties would be.
Hi @satra! I think @khelm means the graph of the ontology not the one of the provenance document itself.
@cmaumet - but many ontologies have classes that subclass from multiple items.
as examples: in prov itself: https://www.w3.org/TR/2013/REC-prov-o-20130430/#Usage in stato:
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
obo:CL_0000578 a owl:Class ;
rdfs:label "experimentally modified cell in vitro"^^xsd:string ;
obo:IAO_0000111 "experimentally modified cell in vitro"^^xsd:string ;
obo:IAO_0000115 "A cell in vitro that has undergone physical changes as a consequence of a deliberate and specific experimental procedure."^^xsd:string ;
obo:IAO_0000412 obo:cl.owl,
obo:obi.owl ;
obo:OBI_0000312 obo:OBI_0000094 ;
rdfs:subClassOf [ a owl:Restriction ;
owl:onProperty obo:OBI_0000312 ;
owl:someValuesFrom obo:OBI_0000094 ],
obo:CL_0000000,
obo:OBI_0000047 .
@satra - that's true, there are ontologies that allow multiple parents and the child inherits all of the relationships of the parent terms. I think there are two issues here: 1) allowing multiple parents makes things more complicated since each graph path then has to be carefully examined for logical inconsistencies (not that we wouldn't do that anyway).
But more importantly
2) A thing is characterized as an prov:agent
when describing a specific prov:activity
. A thing is not inherently an prov:agent
.
@khelm: i think 1 is a necessary part of knowledge representation (kr). if things were trees it would be very limiting for kr. in fact one of the limiting pieces of graphs is their discrete nature. one can easily imagine something being more like a
than b
, or most often a
than b
, thus having more qualifiers, but in the semantic realm one would define a class that describes this shapeshifting relationship (or probabilistic/fuzzy nature) and then something inherits from this class.
2) A thing is characterized as an prov:agent when describing a specific prov:activity. A thing is not inherently an prov:agent.
yes. for something to be a prov:agent
it needs to bear responsibility. as an example, nidm:fsl
can be a subclass of nidm:software
which is a subclass of prov:entity
, but can also be an agent when a prov document is written. in an ontology, i don't expect something to be a prov:agent
unless that entity
or activity
always bears responsibility for an activity
. most things don't always bear a specific responsibility. thus the agency would come from the prov document or following prov rather than in nidm.owl.
the owl file could create a constraint saying that something that is a nidm:software
could also be a prov:agent
. but i don't think that is necessary at the level of nidm presently.
such agency would be resolved on the basis of prov-related queries.
@satra: regarding multiple parents - I agree that the single-parent rule is limiting for KR. In this case, it's not really a concern since the terms would just sit under prov:agent
so there isn't all that much logic to be inherited.
Regarding agents - yes, that's the issue, no thing is always just a prov:agent
and bears specific responsibility so that's why I was thinking that we shouldn't have any child terms of prov:agent
. I don't think it's necessary for there to be anything in the ontology that says that this specific prov:entity
can also be a prov:agent
since there are no restrictions on which entities could be agents and therefore we would have to make that assertion for every thing.
@khelm - i agree that we should not derive from prov:agent
in nidm experiment.
ok, thanks!
This originates from a discussion with @cmaumet and @smpadhy. In prov, it's possible for a prov:agent to be either a prov:entity or a prov:activity. This means that certain terms could appear in two parts of the graph, which creates difficulties. One proposal is to give prov:agent no child terms, but to treat prov:agent as more of a specialization of a role that carries responsibility in a certain activity.