We can't expect everyone to implements all ISO 19107 methods. Some methods should be clearly documented as optional (i.e. it may or may not work depending of the implementation). The ISO 19107 specification defines different conformance level. We should investigate how we could document those level in GeoAPI. One possible way to do that is through UnsupportedOperationException subclasses. For example we could defines the following exceptions:
UnsupportedLevel1OperationException
UnsupportedLevel2OperationException
(we should look for some better name). All methods that are mandatory only for compliance level 2 would have a "throws UnsupportedLevel2OperationException" clause.
Axis0: Geometric Primitives, Geometric Complexes, Topological Complexes, Topological Complexes with Geometric Realization
Axis1: Data types, simple operations, complete operations
Axis2: 0-Dimension, 1-Dimension, 2-Dimension, 3-Dimension
The GeometryFactory could return a Set of tuples (Axis0, Axis1, Axis2) which allow the implementation to declare what the implementation intends to support. This could also be used to help a multipurpose test suite figure out what to test.
There's an "extra" conformance category for Boolean operations.