# Knowledge Engineering Methodology

## Engineering Workflow

### Step 1. Determine the Domain and Scope of the Ontology


> Main idea: We define our **domain - Conceptualization** and then we determine our **scope - Competency Questions**. 


#### Conceptualization

In orther to determine the **domain** that the ontology will cover, we answer some questions:

- Why do you want a semantic model/ontology? 
- For what are we going to use the ontology?
  - What is your Use Case?
  The best solution to model a domain depends on the application that you have in mind and the extensions anticipated.
- Who will use and maintain the ontology?


#### Competency Questions (CQ)

In order to determine the **scope** we can sketch a list of questions that a knowledge base based on the ontology should answer. To kick off the CQ sketch, we can start answering:

1. For what types of questions should the information in the ontology provide answers?
2. Do the answers require a particular level of detail or representation of a particular area?
3. Does this area/domain contain enough information to answer these types of questions or we need to link more than one area?



### Step 2. Ontology Development


> Main idea: **Iterative design** — Ontology development is an iterative process.


#### 2.1 - Reusing Existing Ontologies

If we can, we always consider first refine and extend existing sources for our domain and tasks.


#### 2.2 - Enumerate Important Terms in the Ontology

Create a list of all terms, weather they are clasified as concepts, relationships/properties; we do not classify them yet. Some questions can help us lisitng the key terms:
  - What are the concepts/terms/information we want to talk about?
  - What would we like to say about those terms/concepts?
  - What characterisitcs do those terms have?


#### 2.3 - Define Classes, Class Hierarchy and Properties


> Main idea: First, we create few definitions of the concepts/terms/information from the previous list. From that we can start building a hierarchy with classes classifying them into parents and child terms. And then, once we have built a hierarchy we describe properties of these classes.


  ----***(WIP)***-----
  #ToDo: 
    - Finish 
    check OBOAcademy for documentation about it
    - Finish adding info from ref1

- Class hierarchy approach:
  - Top-down
  - Bottom-up
  - Combination
 
- Properties of classes (slots)




### Step 3. Publication



### Step 4. Maintenance



## References

1. [Ontology Development 101: A Guide to Creating Your First Ontology](http://researchgate.net/publication/243772462_Ontology_Development_101_A_Guide_to_Creating_Your_First_Ontology)

