Functional syntax:
Ontology(
Declaration(Class(<http://example.com/a>))
Declaration(Class(<http://example.com/b>))
Declaration(ObjectProperty(<http://example.com/p>))
SubClassOf(ObjectSomeValuesFrom(<http://example.com/p> <http://example.com/a>) <http://example.com/b>)
)
Manchester rendering (omitting prefixes)
Ontology:
ObjectProperty: <http://example.com/p>
Class: <http://example.com/a>
Class: <http://example.com/b>
There is no support for GCIs in the Manchester OWL Syntax.
If there is no support then an exception should be thrown on encountering a GCI. Otherwise people might unknowningly lose information when rendering to manchester syntax. An option to render and parse the syntax that protege uses (a natural extension) would be good as well.
We encountered the same problem. @Matthew, you are right that the Manchester OWL syntax doesn't support GCIs, but its specification says on creating Manchester syntax from functional-style syntax:
Some axioms that become part of a frame in the Manchester syntax do not need to have a name for the frame, e.g., a SubClassOf axiom between two complex descriptions, so the construction below cannot be directly used. To transform these axioms to the Manchester syntax, take a fresh name and turn the axiom into two axioms, one that makes the new name equivalent to the first piece of the axiom and the other the axiom with the sub-construct replaced by the new name. This would turn a SubClassOf axiom into an EquivalentClasses axiom plus a SubClassOf axiom.
(cited from http://www.w3.org/TR/owl2-manchester-syntax/#Formal_Description_for_Mapping_from_OWL_2_Functional-Style_Syntax\)
If I understand correctly, a standards-conforming translation should work that way. Would it be possible to implement that behaviour in the OWL API?