obophenotype / cell-ontology

An ontology of cell types
https://obophenotype.github.io/cell-ontology/
Creative Commons Attribution 4.0 International
146 stars 49 forks source link

Generate an automatic NTR + KGCL PR from Wikidata (test with [NTR] resident cardiac macrophage) #2297

Open lubianat opened 9 months ago

lubianat commented 9 months ago

Please check that the term does not already exist by using the ontology search tool OLS: https://www.ebi.ac.uk/ols4/ontologies/cl

Preferred term label

resident cardiac macrophage

Synonyms (add reference(s), please) cardiac tissue resident macrophage, heart resident macrophage, heart macrophage

Definition (free text, with reference(s), please. PubMed ID format is PMID:XXXXXX)

A tissue-resident macrophage located in the heart.

References: Resident cardiac macrophages: Heterogeneity and function in health and disease

PMID:36103852

Parent cell type term (check the hierarchy here Cell Ontology CL)

resident macrophage CL IDs: CL_0000864

Anatomical structure where the cell type is found (check Uberon for anatomical structures: Uberon Ontology)

heart Uberon IDs: UBERON_0000948

Your ORCID https://orcid.org/0000-0003-2473-2313

Additional notes or concerns The draft for this request was autogenerated from Wikidata. For more details, see the Wikidata item or the source script.

lubianat commented 8 months ago

@balhoff and @cmungall suggested on Slack using KGCL to generate an structured version. Here is a manual version of it based on the examples.

Naturally, this is missing some bits, namely the definition and its references and the contributor of the term.

I am also not sure if this is properly formatted, as I never used KGCL before.

Changes:

---
id: CHANGE:001
type: ClassCreation
about_node_representation: curie
node_id: CL:9999999
command_with_curie: create CL:9999999
command_with_uri: create http://purl.obolibrary.org/obo/CL_9999999

---
id: CHANGE:002
type: NodeCreation
about_node: CL:9999999
about_node_representation: curie
node_id: CL:9999999
name: 'resident cardiac macrophage'
command_with_curie: create node CL:9999999 'resident cardiac macrophage'
command_with_uri: TODO

---
id: CHANGE:005
type: EdgeCreation
object_type: curie
subject: CL:9999999
predicate: rdfs:subClassOf
object: CL:0000864
subject_type: curie
predicate_type: curie
command_with_curie: create edge CL:9999999 rdfs:subClassOf CL:0000864
command_with_uri: create edge http://purl.obolibrary.org/obo/CL_9999999 http://www.w3.org/2000/01/rdf-schema#subClassOf 

---
id: CHANGE:003
type: EdgeCreation
object_type: curie
subject: CL:9999999
predicate: BFO:0000050
object: UBERON:0000948
subject_type: curie
predicate_type: curie
command_with_curie: create edge CL:9999999 BFO:0000050 UBERON:0000948
command_with_uri: create edge http://purl.obolibrary.org/obo/CL_9999999 http://purl.obolibrary.org/obo/BFO_0000050 http://purl.obolibrary.org/obo/UBERON_0000948

---
id: CHANGE:004
type: NewSynonym
new_value: 'heart macrophage'
about_node: CL:9999999
about_node_representation: curie
qualifier: exact
command_with_curie: create exact synonym 'heart macrophage' for CL:9999999
command_with_uri: create exact synonym 'heart macrophage' for http://purl.obolibrary.org/obo/CL_9999999

Putting it here for feedback and possible tests with Ontobot for PRs.

balhoff commented 8 months ago

@hrshdhgd @gouttegd any comments on the KGCL?

gouttegd commented 8 months ago

There should be no need for you to describe changes in the YAML syntax (and I not even sure the Ontobot supports that syntax, though I’ll let @hrshdhgd weigh in on that). All you should need is the “command with curie” syntax:

create class CL:9999999 'resident cardiac macrophage'
create edge CL:9999999 rdfs:subClassOf CL:0000864
create edge CL:9999999 BFO:0000050 UBERON:0000948
create exact synonym 'heart macrophage' for CL:9999999

Naturally, this is missing some bits, namely the definition and its references and the contributor of the term.

The definition can be added with a NewTextDefinition change (add definition "the definition" for CL:9999999). References on the definition and term contributors are currently not supported by KGCL, however.

But the main problem is that, as far as I know, we have no mechanisms in KGCL (yet?) to allow a user to create a new class without knowing in advance the ID of the future class.

lubianat commented 8 months ago

Thanks, @gouttegd, that is great! It should be relatively straightforward, then, though some manual changes needed.

I guess that for demonstration of an automated system with the currently capabilities it would be easier to modify an existing term, maybe for another issue:

1 - a button that works on terms that already CL Ids on Wikidata 2 - creates a new issue for adding a single image file to a term with the command with curie syntax 3 - ontobot parses it and creates a PR

Do you know if the Ontobot workflow described for Mondo (https://mondo.readthedocs.io/en/stable/editors-guide/make-simple-changes/) works for CL in the same way?

gouttegd commented 8 months ago

Do you know if the Ontobot workflow described for Mondo (https://mondo.readthedocs.io/en/stable/editors-guide/make-simple-changes/) works for CL in the same way?

It should, yes (again, I’ll let @hrshdhgd weigh in if that’s not the case).

hrshdhgd commented 8 months ago

Do you know if the Ontobot workflow described for Mondo (https://mondo.readthedocs.io/en/stable/editors-guide/make-simple-changes/) works for CL in the same way?

It should, yes (again, I’ll let @hrshdhgd weigh in if that’s not the case).

Yes it does!

Here are some examples I have on my fork

hrshdhgd commented 8 months ago

There should be no need for you to describe changes in the YAML syntax (and I not even sure the Ontobot supports that syntax, though I’ll let @hrshdhgd weigh in on that). All you should need is the “command with curie” syntax:

create class CL:9999999 'resident cardiac macrophage'
create edge CL:9999999 rdfs:subClassOf CL:0000864
create edge CL:9999999 BFO:0000050 UBERON:0000948
create exact synonym 'heart macrophage' for CL:9999999

Naturally, this is missing some bits, namely the definition and its references and the contributor of the term.

The definition can be added with a NewTextDefinition change (add definition "the definition" for CL:9999999). References on the definition and term contributors are currently not supported by KGCL, however.

But the main problem is that, as far as I know, we have no mechanisms in KGCL (yet?) to allow a user to create a new class without knowing in advance the ID of the future class.

Fully agree.

github-actions[bot] commented 2 months ago

This issue has not seen any activity in the past 6 months; it will be closed automatically in one year from now if no action is taken.