phyloref / clade-ontology

Ontology of Phylogenetic Clade Definitions
MIT License
1 stars 0 forks source link

Should the Clade Ontology record specifiers outside of the equivalentClass expression? #62

Open gaurav opened 5 years ago

gaurav commented 5 years ago

In Phyx files, we include some information about phyloreference specifiers:

{
  "label": "Alligatorinae",
  "cladeDefinition": "Alligator mississippiensis and all crocodylians closer to it than to Caiman crocodilus.",
  "internalSpecifiers": [{ "scientificNames": [{ "scientificName": "Alligator mississippiensis" }] }],
  "externalSpecifiers": [{ "scientificNames": [{ "scientificName": "Caiman crocodilus" }] }]
}

Should we retain this information when we convert this into OWL? If we choose not to, the specifiers would only be described in the equivalentClass expression. For example, the Phyx file above could be converted into OWL in JSON-LD as follows:

{
  "@type": "owl:Class",
  "label": "Alligatorinae",
  "subClassOf": "phyloref:Phyloreference",
  "obo:IAO_0000115": "Alligator mississippiensis and all crocodylians closer to it than to Caiman crocodilus.",
  "equivalentClass": { "intersectionOf": [
    { "onProperty": "phyloref:includes_TU", "someValuesFrom": { "intersectionOf": [ { "@id": "obo:NOMEN_0000107" }, { "onProperty": "dwc:scientificName", "hasValue": "Alligator mississippiensis" } ] } },
    { "onProperty": "phyloref:excludes_TU", "someValuesFrom": { "intersectionOf": [ { "@id": "obo:NOMEN_0000107" }, { "onProperty": "dwc:scientificName", "hasValue": "Caiman crocodilus" } ] } }
  ]}
}

We could parse this OWL restriction to determine that this phyloreference includes one taxonomic unit (Alligator mississippiensis) and excludes one taxonomic unit (Caiman crocodilus). Including internalSpecifiers and externalSpecifiers in the OWL ontology as Annotation properties would eliminate the need for additional parsing, but would need additional properties to be defined and would introduce some redundancy into the Clade Ontology. What do you all think?