OWL supports ontology importing using owl:import. The semantics of what entities to consider are RDF-based. All the [x owl:imports y] statements in an ontolgy cause y to be loaded, scanned for owl:import statements and so on. Eventually, you have the set of processed resources (hopefully all OWL, presumably all rdf-graphs) for which for every y, the processed resource is in the set. This all seems fairly sane.
The semantics of what happens to the importing ontology are also defined for owl:import. This is marginally less sane. If [x owl:imports y] then all the content of y is added as content of x. This is like a #include, not a java import. It makes sence that eventually you will want to create this merged data-structure for sending off to a reasoner, but it looses the information about where particular content originated from.
So - things I would like from an import mechanism:
- Seperation of the model for the ontology from the model of the imports closure as an ontology - let's call this the closure ontology.
- The ability to perform ad-hock ontology merging.
- Keep full information about which ontology makes a particular statement.
- During edit, make sane choices or at least provide options for which ontology to update.
- Associate semantics with imports.
The semantics of imports could be leveraged in interesting ways to help the publisher do sane things, and help tools enforce this. Our experience is that a model represented as an Ontology contains concepts and relationships, but also some limited number of individuals (e.g. acting like Enum values).
- In OWL-DL, it makes sence to define a model in oneontology (model ontology) and then import this into several ontologiesthat publish individuals that populate these concepts (data ontology).owl:implements could extends owl:imports, with the semantics thatinstances introduced in the data ontology must be instances of conceptsin the model ontology.
- Some ontologies, for example the OWL-DL view of GO, provide lots of terms that you would like to use, but it would not make much sence to sub-type the concepts - just refer to the individuals defined.
- Hide the internal concepts of an ontology to be imported. In reallistic ontology design, there are often concepts that are present for modelling reasons but which have little relevance to the user of the ontology and can be confusing. An import option could be provided to expose references to the 'public' terms, while making the 'private' terms opaque. They still exist for reasoning purposes, but are not present when in the browsing / editing roles.
I think all this can be trivially supported in any particular OWL api, but it would require some extention to the current owl:import stuff.