This modification to SWO came out of a problem very similar to the one recently described for linking two pieces of software together. Rather than linking two pieces of software, here we would like to relate different data format specification classes. I ran into this situation when trying to describe an OWL ontology such as BioPAX. However, I discovered what I wanted to say was that a piece of software (here, Cytoscape) allows BioPAX format files as input; I actually didn’t need to model anything relating to BioPAX’s status as ontology. So, I knew I didn’t need to create BioPAX as a child of the SWO ontology class, but rather as a child of data format specification.
However, BioPAX (as well as any other OBO or OWL file) can have multiple format languages that can be converted among themselves (sometime losslessly, sometimes not). We might need to say that Cytoscape only allows BioPAX files in RDF/XML (and not in Manchester OWL Syntax, for example). So we wouldn’t be able to add one single format class. If we were adding multiple formats for a single ontology such as BioPAX, it would be useful to be able to link them to each other somehow.
Once this linking property was created, then defined classes making use of such a property could also be created. For ontology formats (as an example) a defined class could group together all formats commonly used for knowledge representation.
In order to accomplish this, we firstly created a new role called knowledge representation role. Any relevant data format can then bear this role. In addition, the object property is alternative format of was created whose domain and range is data format specification and which is symmetric.
This solution successfully separates out the formats for an ontology from the ontology itself. We are deliberately not adding any new statements about what an ontology is. At the moment we only need to describe their formats.
As a final note, the current use of has_role is the OBI identifier OBI_0000316, which is actually an obsolete term. Its replacement is the BFO has role with the identifier BFO_0000087, but it is nearly impossible to actually examine this property within Protege to ensure its domain and range are suitable for us. Therefore we are leaving things as they are, and can always update the entity URI if we wish to change to the BFO term.