1

I'm learning OWL 2.0 using Protégé 4.0 and Pellet 2.2, and I'm trying to understand underlying concepts progressively.

So, starting with class hierarchies, I made one class "Cat" as a SubClassOf "Things".

If I start Pellet, everything works fine, but if I DL query "Cat", I have Directsubclasses "Nothing" and Subclasses "Nothing" appearing in red.

  • What does it mean?
  • Why is it red?

Justifications are like :

Explanation for: Nothing SubClassOf Cat
<Entailment1252345325436>SubClassOf Nothing and (not (Cat))
  • What does it mean?
  • Why are there like an infinity of these "Entailment" justifications (I mean I only created 1 class).
  • Is there an error I made I have to correct to avoid this phenomenon? Or should I just don't care about it?

Thank you ^_^!

  • Incidental to your question - Protege 5 beta 21 is available https://github.com/protegeproject/protege/releases/tag/protege-parent-5.0.0-beta-21 (there's a Pellet 2.4.0 plugin available as well). I would recommend using one of the Protege 5 versions (beta 17 on are fairly recent), as 4.0 is quite ancient, and you might spend time puzzling over bugs that have been fixed in the years since it was released. – Ignazio Dec 30 '15 at 18:06
  • Haha yes I should update it, thank you for the link! –  Dec 30 '15 at 21:51

1 Answers1

2

Nothing is the empty class, sometimes written as &bottom; in DL notation. In most cases, if you have a class that's equivalent to Nothing, it's a modeling error. E.g., if you accidentally define

Car EquivalentClass (hasDoors exactly 2)
Car EquivalentClass (hasDoors exactly 4)

you'll find that Car is now equivalent to Nothing because something can't have exactly 2 and exactly 4 doors. That's an accident. There's nothing logically incorrect with it, but usually you don't want your classes to necessarily be empty. So, Protege shows necessarily empty classes in red.

Of course, the empty class, Nothing, is a subclass of every class, just like the empty set is a subset of every set, and it's necessarily empty.

So, there's actually nothing wrong with what you're seeing. Nothing should be red, and it should be a subclass of every class. Everything is working the way that it should.

Joshua Taylor
  • 84,998
  • 9
  • 154
  • 353
  • 1
    Thank you! So, if I understand right, there are two points here : (1) I have to avoid the "Modeling error" occurring when a class that should not necessarily be empty is equivalent to "Nothing" ; (2) A class equivalent to Nothing is not in red because it's logically inconsistent, it's red to highlight something potentially undesirable. –  Dec 30 '15 at 15:16
  • The description logic community might call a class that can't have any members inconsistent or unsatisfiable. It's not logically inconsistent, but you will have a logical inconsistency as soon as you say that somethings a member of that class, or you can under that something should be a member of that class. In owl,you'll very very rarely want such a class, so it makes sense to be alerted to it. As I understand you, I think your two points are correct. – Joshua Taylor Dec 30 '15 at 15:31