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?

How answers to a CQ could be obtained?

  • browsing through a taxonomy and viewing the relationships across the ontology entities

    • Example: Which wine characteristics should I consider when choosing a wine?

  • through the ability to determine inheritance

  • through ontology querying (explain that in depth)

What is not a CQ?

  • It is not compulsory.

  • It is not a list of requirements.

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#

OBOFoundry - Request for new ontology#

Instructions proivided by OBO Foundry: https://obofoundry.org/docs/NewOntologyRegistrationInstructions.html

  • Check if passes OBO NOR Dashboard (https://obofoundry.org/obo-nor.github.io/dashboard/index.html)

Issue example (PREFER): https://github.com/OBOFoundry/OBOFoundry.github.io/issues/2821

OBOFoundry - Request for new PURL#

Guide: https://obofoundry.org/docs/Policy_for_OBO_namespace_and_associated_PURL_requests.html

Issue example (PREFER): https://github.com/OBOFoundry/purl.obolibrary.org/pull/1108

Step 4. Maintenance#

References#

  1. Ontology Development 101: A Guide to Creating Your First Ontology