The current draft states that the translation of owl-axioms clauses into OBO is the following:
merge all clauses into a single string s using newline separators
parse that as if it was an ontology document Ontology({s}) in functional syntax
add all axioms from the parsed OWL ontology to the final OWL document being generated.
However, the OWL API does not proceed so, instead packing the complete ontology document instead. Here's the header frame of cio.obo:
format-version: 1.2
data-version: releases/2015-03-10
subsetdef: bgee_not_trusted "Terms that are considered not trusted by the Bgee team, related to assertions needing additional support."
default-namespace: cio
ontology: cio
owl-axioms: Prefix(owl:=<http://www.w3.org/2002/07/owl#>)\nPrefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)\nPrefix(xml:=<http://www.w3.org/XML/1998/namespace>)\nPrefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)\nPrefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)\n\n\nOntology(\nEquivalentClasses(<http://purl.obolibrary.org/obo/CIO_0000000> ObjectUnionOf(ObjectIntersectionOf(ObjectAllValuesFrom(<http://purl.obolibrary.org/obo/has_evidence_concordance> <http://purl.obolibrary.org/obo/CIO_0000043>) ObjectMinCardinality(2 <http://purl.obolibrary.org/obo/has_confidence_element> <http://purl.obolibrary.org/obo/CIO_0000040>) ObjectMinCardinality(0 <http://purl.obolibrary.org/obo/has_confidence_level> <http://purl.obolibrary.org/obo/CIO_0000028>) ObjectExactCardinality(1 <http://purl.obolibrary.org/obo/has_evidence_type_concordance> <http://purl.obolibrary.org/obo/CIO_0000041>) ObjectMaxCardinality(3 <http://purl.obolibrary.org/obo/has_confidence_element> <http://purl.obolibrary.org/obo/CIO_0000040>) ObjectMaxCardinality(1 <http://purl.obolibrary.org/obo/has_confidence_level> <http://purl.obolibrary.org/obo/CIO_0000028>)) ObjectIntersectionOf(ObjectAllValuesFrom(<http://purl.obolibrary.org/obo/has_evidence_concordance> <http://purl.obolibrary.org/obo/CIO_0000042>) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/has_confidence_element> <http://purl.obolibrary.org/obo/CIO_0000040>) ObjectMinCardinality(0 <http://purl.obolibrary.org/obo/has_confidence_level> <http://purl.obolibrary.org/obo/CIO_0000028>) ObjectExactCardinality(0 <http://purl.obolibrary.org/obo/has_evidence_type_concordance> <http://purl.obolibrary.org/obo/CIO_0000041>) ObjectMaxCardinality(2 <http://purl.obolibrary.org/obo/has_confidence_element> <http://purl.obolibrary.org/obo/CIO_0000040>) ObjectMaxCardinality(1 <http://purl.obolibrary.org/obo/has_confidence_level> <http://purl.obolibrary.org/obo/CIO_0000028>))))\nObjectPropertyDomain(<http://purl.obolibrary.org/obo/has_confidence_level> ObjectIntersectionOf(ObjectAllValuesFrom(<http://purl.obolibrary.org/obo/has_evidence_concordance> ObjectComplementOf(<http://purl.obolibrary.org/obo/CIO_0000035>)) <http://purl.obolibrary.org/obo/CIO_0000000>))\nObjectPropertyDomain(<http://purl.obolibrary.org/obo/has_evidence_type_concordance> ObjectIntersectionOf(ObjectAllValuesFrom(<http://purl.obolibrary.org/obo/has_evidence_concordance> <http://purl.obolibrary.org/obo/CIO_0000043>) <http://purl.obolibrary.org/obo/CIO_0000000>))\n)
I tend to prefer the current semantics, as they prevent adding prefixes into the owl-axioms (these being only syntactic sugar, the OWL to OBO conversion should not retain them IMO), but doing so would be a breaking change for some ontologies on the OBO Foundry.
The current draft states that the translation of
owl-axioms
clauses into OBO is the following:s
using newline separatorsOntology({s})
in functional syntaxHowever, the OWL API does not proceed so, instead packing the complete ontology document instead. Here's the header frame of
cio.obo
:I tend to prefer the current semantics, as they prevent adding prefixes into the owl-axioms (these being only syntactic sugar, the OWL to OBO conversion should not retain them IMO), but doing so would be a breaking change for some ontologies on the OBO Foundry.
@cmungall, any opinion ?