search for other ontologies and embed some of their classes into my own ontology
create unique identifier for each term and set a data link with owl:sameAs or owl:equivalentClass
Import the ontologies that contain the terms that you need.
do not explicitly import
Reuse the terms
Redefine your own terms
if the imported ontology is very big and expressive and you just need a few terms, it's not always the best option.
, you don't benefit from the axioms of the external ontology unless you copy the relevant axioms too.
But you benefit from the fact that you are reusing existing terms that are possible well known.
By doing so, you don't even need owl:imports very much. If you insist on having a valid OWL DL ontology, you can declare the terms by explicitly saying whether they are object properties, datatype properties, annotation properties, classes or individuals
This may be a good choice if there is only poorly designed ontologies for the terms you need. Or, you may disagree with the definitions of the other ontologies.
You can combine all the approaches, importing some ontologies (e.g., FOAF), reusing terms from others (e.g., Dublin Core) and making your own terms in some case
When you add owl:sameAs, owl:equivalentClass or owl:equivalentProperty statements to your ontology O linking to terms that are defined in a different ontology O+, but without importing O+, then you have made essentially no progress at all.
f you want "just the right amount", that is, only the definitions of (or subsets of axioms concerning) those terms of the other ontology O+ that you are actually interested in, then it would be good to have O+ first splitted up into a collection of module ontologies O1+ ,..., On+, nicely separated such that there is one term or a meaningful group of related terms per module ontology, and you would then import just those module ontologies that you are interested in.
I feel that everything but the first selection reduces the chance that your data will be reusable, because other users first have to know about your ontology and they must infer that your class matches an existing class. However it seems to be common practice that everyone happily creates new classes without bothering.
in Linked Data terms (which I think you're getting at?), unless (i) you are not happy with the semantics of the existing class, or (ii) it's not dereferenceable or otherwise broken, or (iii) you do not trust the current vocabulary maintainer of the class to maintain a dereferenceable semantics you are happy with, there is no reason to create another class. It would just be clutter
Reuse would avoid clutter
. owl:sameAs means that the terms are entirely interchangeable in any appearance in any position of any triple (and roughly speaking is intended for use on instance URIs)
Seems that some duplication happened now in CDL for terms already defined in NDL, so a tradeoff between interoperability or ease of local processing
I want to use new terms, because I think my ontology will be (and seem) more coherent if all its terms are grouped under the same namespace, rather then containing 10 different namespaces.
If you want to "blend in" well with Linked Data, I would suggest it is important not to duplicate classes and properties.
re really just i
If you are really just interested in some kind of local or closed-scope application, then perhaps having local copies of terms is the best way.
First it must be understood that the semantics of imports in OWL is a subject of some controversy. In the OWL 1.1 specification there is effort in progress to clear up some of this confusion.
A lot of confusion surrounds the relation between 1) the xml:base (bases) of an RDF/XML document, 2) namespace declarations in that file, 3) the prefixes of terms in the ontology corresponding to that file, 4) the URI/L of that file (if any), and 5) the URI at the object end of an imports statement, and 6) the identifier for the ontology (if any).