-
Notifications
You must be signed in to change notification settings - Fork 4
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
Should contribution roles be object properties? #14
Comments
In the original OpenRIF CRO, we had a Contributorship class which connected people with their contributor roles via the BFO bearer_of and inheres_in relationships and the VIVO relates and related_by relationships. We still have this Contributorship class, but it looks like it's parent class has been created as a native CRO class, rather than importing vivo:Relationship. This seems like a candidate for a potential refactor. I've never been a fan of vivo:Relationship and its properties. First, it is time-bound, which means it's an occurrence, not a continuant, and is placed in the wrong part of BFO. Second, "relates" and "related_by" are not semantically meaningful properties -- they're essentially the same as a Related Term (RT) relationship in a thesaurus. I think it also requires thinking about what contexts we want people to use the CRO in, and what ontologies they're already using, if any. This gets back to my desire to have multiple versions of the CRO designed to work with different ontologies and vocabularies that contain a Role concept. If we want CRO to be used with ontologies that use BFO, I think we'd want to define at least one process for roles to inhere in. If we want CRO to be used with schema.org structured data, we might need to take a different approach to work with schema:Role (and we might also want a different set of annotations for the ontology itself in those situations, so schema.org users wouldn't need to worry about BFO/IAO). If there are contexts people might use the CRO in that do not involve a Role concept, that might call for implementing them as object properties. I can visualize what any of these things might look like, but I am still figuring out how to get there using the ODK. |
I do think we need consistency with OBO ontologies, we could have a contribution process in OBI? |
I think it would be convenient to make triples But I think it's good to have a more granular representation so things can hang off the role instance However, it can be confusing if you publish shadow URIs. We have done this in RO but it causes confusion. |
Not sure if this helps.... These are recommendations developed via the Research Data Alliance. We are also working with VIVO to add Activity classes. There's a PROV way to do roles and a VIVO way to do roles. |
FYI - our work with ORCID and RDA is paying off. We'll have specimens on ORCID profiles soon. We have a pilot that is working. ORCID is adding a physical object work type to their schema. |
@diatomsRcool can you make sure all the roles you need are in CRO? also could use some help thinking about OWL punning so that we can use CRO as object props vs. classes. |
@diatomsRcool here is the issue tracker for CRO: https://github.com/data2health/contributor-role-ontology/issues |
Punning the Class and OP is valid: https://www.w3.org/TR/owl2-new-features/#F12:_Punning You can even have a property chain to infer the simple triple (provided you use quite specific relations otherwise it gets complicated)
Note that punning classes and properties reveals a few bugs in some toolchains, I will report separately |
@cmungall thanks so much for your contribution here! We really appreciate it. |
hmm Ignazio says this is in fact not valid, trying to find out more.. |
Hi all. Thought I'd share how we modeled Contributions in the SEPIO model, as I dealt with similar questions and considerations as those described above. For SEPIO we needed a way to precisely model contributions an agent made to an artifact such as an assertion or piece of evidence - including the identity of the contributing agent, methods they followed, roles they played, organizations acted on behalf of, and when and where the contribution occurred. We settled on an approach that links a generated artifact to a contributing agent via an instance of a So how does this relate to CRO? . . . As is, CRO classes could provide the roles need to populate the 'realizes' attribute of Contributions (effectively punning CRO classes in the data). I don’t think we would ever need to instantiate CRO role classes in the SEPIO model, because all we need to describe can be captured using qualified contributions. If CRO moved toward treatment of contributions as processual entities, then the SEPIO 'Contribution' class could end up being equivalent to the root CRO 'contributor role' class. |
@nicolevasilevsky @kristiholmes @mbrush 's proposal is not dissimilar from the model we discussed at Rocky, where the role is reified and is a class. It would be good to all get on the phone together and discuss. If this can work for GA4GH, GO, CD2H, OBO, then it will be golden. |
Matt, you have a contribution potentially having N agents. I would think of
this always being a single agent. Even for a group contribution, the group
is the agent. (you could break this down into contibution parts, and the
group into its members)
Under this, is there a need for both a role and a process? Isn't a
contribution always a realization of a role, and in 1:1?
(yes you are right, I have mentally translated contributions to molecular
activities, agents into protein complexes of gene products, and am trying
to go-camify you model, sorry...)
…On Thu, May 30, 2019 at 7:26 PM Melissa Haendel ***@***.***> wrote:
@nicolevasilevsky <https://github.com/nicolevasilevsky> @kristiholmes
<https://github.com/kristiholmes> @mbrush <https://github.com/mbrush> 's
proposal is not dissimilar from the model we discussed at Rocky, where the
role is reified and is a class. It would be good to all get on the phone
together and discuss. If this can work for GA4GH, GO, CD2H, OBO, then it
will be golden.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#14?email_source=notifications&email_token=AAAMMOOBAQWF54KGOTE7V5TPYCEFPA5CNFSM4HCXBZLKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWUAUWY#issuecomment-497551963>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAAMMOIRVLGHGTPPN5OMGQ3PYCEFPANCNFSM4HCXBZLA>
.
|
I take your point, but I suspect this may not always be the case. Could someone engage in a paper correcting process as an author, an editor, or a reviewer? This is a trivial example, but I've had people from the biodiversity collections space be adamant about not including roles and others who have been adamant about including them. It may be an issue when talking about physical specimen management. The more flexible we can be the better. |
The SEPIO model would naturally support such a representation – where a Contribution is 1:1 with an agent, and this agent could be a Group/Organization comprised of many individual persons. But you could instead or in addition represent more specifically the individual contributions of each member, if desired. See below.
Typically, the Contribution process realizes a single/specific role played by the contributing agent - in which case Contribution to Role is 1:1. If this was always the case, our model could drop the 'realizes: Role' attribute and type the Contribution to reflect the specific role being played (e.g. instead of a single Contribution Class, we would have a hierarchy of role-based Contribution classes, e.g. 'Creator Contribution', 'Editor Contribution'. . . . Or we could treat Contributions as Role instances instead of processes). We chose not to do this for a couple reasons. First is that we preferred a single Contribution type for simplicity at this level, and allowing custom definitions of Roles in the value set part of the model. This enables maximal flexibility and customization - i.e. so a given SEPIO profile/implementation can create a value set containing the contributor roles it needs and bind this to the realizes attribute. This is more a stylistic preference however. The more substantive reason we went this direction is that we want to allow for Contribution instances that describe more than one role played by a single Agent (where Contribution to role is NOT 1:1). This I think speaks to the flexibility that @diatomsRcool describes above, and it lets us avoid proliferation of Contribution instances when we want to capture the fact that Agent X played many different roles in the creation of Artifact Y). So, a Contribution instance is always 1:1 w.r.t. its Agent, and typically but not necessarily 1:1 w.r.t. a Role played/realized. This is reflected in the definition of the Contribution class as "the actions taken by a particular agent in the creation, modification, assessment, or deprecation of an artifact". There may be many actions here that realize different roles - that could be grouped into a single Contribution object if desired. But if it was important to track when/where/for whom each role was realized, you would need to split things into separate Contributions for each role realized. Bottom line, the SEPIO model gives flexibility to collapse roles where desired, but split them out for more granular characterization where needed. I'm sure this approach has potential issues/challenges as well, but it is what we went with initially. There is still time to evolve this a bit if necessary. Finally, no apology necessary for your mental go-camification - I think it is an apt and perhaps informative analogy. |
if we are to use them in triples
person <-contribution role-> artifact
we will need to figure out the best practice for doing so.
The text was updated successfully, but these errors were encountered: