If we use an ontology we can represent knowledge, using notably semantic triple <s,p,o>.

I was wondering how can I represent this:

A and B cause C


A or B cause C


I don't want to do reasoning, I only want to represent.

Is it possible to use and, or, negation as predicate/relation in an ontology?

I only see that researchers use causal networks to represent causality, but I was wondering why it is not possible in an ontology.

Thanks in advance,


The ontologies that are used today are mostly based on Description Logics (DLs). The basic building blocks of DLs consists of concepts and relationships between concepts where a concept represents a set of individuals (elements) and a relationship states that an individual of one set is related to an individual of another set.

A good book in this regards is An Introduction to Description Logics. There are different DLs with different expressivities and indeed many DLs exist that allow for negation and relations. A freely available tool for creating ontologies is Protege.

The <s,p,o> you refer to is related to RDF data and RDFS which do not support negation. Roughly RDFS (similar to relational DB schemas) can be seen as defining the schema and RDF as defining the data (similar to the data of a relational database).

How to design what you require depends on the inferences you want to make from your ontology. Since you don't want to reason over the ontology, you can really model this however you want. Though I am wondering whether using an ontology is the most appropriate if you do not intent do any reasoning.

Option 1: Using concepts

Class: D
  EquivalentTo: A or B
  SubClassOf: C

This will result in any individual belonging to A or B to be inferred to belong to C as well. Concept D is introduced to provide a name for the concept A or B.

Option 2: Using Relations

Class: D
  EquivalentTo: A or B

ObjectProperty causes:
  Domain: D
  Range: C

This will result in the inference that whenever two individuals a and b are related via causes (written as causes(a, b)), it will infer that a belongs to D and b belongs to C.

On my blog I have a few posts that give some explanations wrt ontologies as well as some examples.

| cite | improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.