====== How to create an ontology ====== ===== Ontology software ===== Some of the software applications helpful for creating ontologies are: * [[http://www.ksl.stanford.edu/software/ontolingua/|Ontolingua]] * [[http://protege.stanford.edu/|Protégé]] * [[http://www.opencyc.org/cb/welcome|Open Cyc]] * [[http://www-ksl.stanford.edu/software/chimaera/|Chimaera]] ===== Steps in creating an ontology ===== When creating an ontology one should also keep in mind that there are always multiple ways in which an ontology can be designed, and that the ontology should be close to physical or logical objects and their relations in the domain.(([[http://protege.stanford.edu/publications/ontology_development/ontology101.pdf|Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001.]])) The process of developing an ontology is an **iterative** process which can be described in the following steps:(([[http://protege.stanford.edu/publications/ontology_development/ontology101.pdf|Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001.]])) - __**Determine the domain and scope of the ontology**__ - Scope and domain of the ontology should be determined knowing what we want the ontology to cover, what we want to use the ontology for, and what information we want it to provide us with. One should also consider reusing or extending existing ontologies((For example see: [[http://www.ksl.stanford.edu/knowledge-sharing/ontologies/|Ontolingua ontology library]] or [[http://www.daml.org/ontologies/|DAML ontology library]])). - __**Identify terms important for the ontology**__ - Prior identification of terms which will be used in the ontology can be helpful. - __**Define classes and class hierarchy**__ (subclass/superclass) - There are different approaches suggested for developing a class hierarchy:(([[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.5917&rep=rep1&type=pdf|Uschold, Mike, and Michael Gruninger. Ontologies: Principles, Methods and Applications. The Knowledge Engineering Review 11, no. 2: 93-136, 1996.]] cited by [[http://protege.stanford.edu/publications/ontology_development/ontology101.pdf|Noy, Natalya F., and Deborah L. Mcguinness. Ontology Development 101: A Guide to Creating Your First Ontology, 2001.]])) the **top-down approach** (where process starts by identifying the more general domain concepts and then progresses towards more specific concepts), the **bottom-up approach** (where process starts by identifying the more specific domain concepts and then progresses towards more general ones), or the **combination**, which combines both top-down and bottom-up approaches. - __**Define the properties of classes (slots)**__ - Slots help defining the internal structure of concepts. Slots can for example be extrinsic, intrinsic, parts or relationships to other individuals. It is important to keep in mind that subclases inherit all the slots of their superclasses. - __**Define the facets of the slots**__ - Slots can have different restrictions or facets restricting for example: **slot cardinality** (number of values a slot can have, for example 1, more or 0 - if this slot in a particular subclass can't have a value), **slot-value type** (for example //string//, //number//, //Boolean//, //enumerated// or even //instance//), or **domain** (the domain of a slot contains all the classes with this slot) and **range** (if a slot is an instance, its range are considered to be all the classes the instance can be originating from) of a slot. - __**Create instances**__ - The last step consists of creating instances for every introduced class and filling in its slot values.