Open graybeal opened 5 years ago
Samson responded:
By definition, every top-level entity in an OWL ontology has owl#Thing as a parent. It’s not a design decision on the part of FMA developers.
It’s a design decision on the part of Bioportal CSV-output developers whether to generate an entry for this definitional parent-child relationship. Given that decision, users of the CSV output have to live with the consequences either way.
I think it makes sense for our generated CSV outputs to match our generated OWL files. That approach will be more likely to meet user expectations, than if we try to have special processing for any OWL files that were generated from some other semantic source.
I will close this ticket unless further concerns are raised.
OWL files (at least the canonical RDF/XML serialization I checked) do not have (topclass subclassOf OWL:thing) axiom. owl:thing doesn't appear in the file at all. In that sense the CVS-output depart from RDF/XML serialization of OWL files. The reason that I think it's cleaner not to output such language-dependent artifacts is that an ontology can be represented in different formalisms and a CVS-output should reflect the content of the ontology and not dependent on the formalism. Of course if you are not the developer of the software that generates the CVS-output, you are stuck with the design decision.
Yes, I think one question is what we are considering the 'source ontology' we want to represent, and the other question is whether the CVS in general should include representing the (topclass subclassOf OWL:thing) formalism. There is not an "original ontology" in the case of UMLS, as I understand it—there are the original local models of terminologies that we're converting to OWL to have an interoperable basis of interoperation.
Hard to say how central the topClass construct should be given these larger contexts. For now, I think we are resource-constrained to make changes, but we can leave this ticket open while we accumulate knowledge and/or wisdom.
It appears that BioPortal's behavior is a bit inconsistent. In the user interface, we do display the fact that root classes in OWL ontologies are subclasses of owl:Thing, e.g.:
However in the REST API, we explicitly filter out owl:Thing from the return value of calls to the /parents endpoint, i.e., see this line of code.
In the code for CSV generation, we don't have any special handling for owl:Thing. Rather, we simply ask each class for its parents and output their IDs to the file, i.e., see this line of code.
User on the support list reports:
and follows up in response to a question: