Some and Only (SOMLY)#

In Gendifs gibt es nur ein SOME. Das aus der Description Logic zugehörige ONLY ist nicht implementiert, und wird wohl auch nicht implementiert werden.

Angedacht ist aber ein SOMLY:

  • Kombination von SOME und ONLY

  • nicht als Klassifikationsregel, sondern als Integritäts-Check.

ONLY#

Wir zeigen zunächst, worin die Idee von ONLY besteht.

Beispiel:

Pferd
  BYd has_color SOME Color
    Schimmel
      SOME weiß

Semantik: Ein Pferd, das eine weiße Farbe hat, ist ein Schimmel. Auch ein Zebra wird also als Schimmel klassifiziert.

Wenn wir wollen, dass als Schimmel nur Pferde klassifiziert werden, die ausschließlich weiße Farben haben, scheint eine naheliegende Lösung in Anlehnung an OWL so aussehen:

Pferd
  BY has_color SOME Color
    Schimmel
      ONLY weiß

Scheinbare Semantik: Ein Pferd, das ausschließlich weiße Farben hat, ist ein Schimmel.

Problem 1, bekanntes unintuitives Verhalten: In Verbindung mit der Open World Assumption (OWA) greift die Bedingung “ausschließlich weiß” auch für Pferde, bei denen die Farbe nicht angegeben ist: Pferde ohne Farbe werden als Schimmel klassiert! Mögliche Lösung:

  • Ein ONLY ohne SOME ist meistens nutzlos. In der Praxis wird man bei einem ONLY immer auch ein SOME angeben. Z.T. gibt es auch das Konstrukt “Some and Only”.

Problem 2: Ein Reasoner kann auf Basis von SOME weiß ein Pferd schnell als Schimmel klassifizieren, wenn sobald er ein Beispiel einer weißen Farbe entdeckt. Bei einem ONLY weiß muss ein Reasoner allerdings feststellen, ob ein Pferd noch eine andere, und zwar nicht-weiße Farbe hat (was die Klassifizierung verhindern würde). Dazu muss eine Negation ausgewertet und eine aufwändige Sub-Suche gestartet werden.

Problem 3: Negationen, die Zyklen enthalten (wie z.B. männlich := not(weiblich) und weiblich := not(männlich) , führen zu einem Versagen des Inferencing. Klassische Lösung: https://de.wikipedia.org/wiki/Stratifikation_(Logik) von Negationen. Mögliche Lösung:

  • Da in einer Gendifs-Map die Axiome in einer wohlgeordneten Reihenfolge vorliegen, könnte man das für eine syntaxbasierte Stratifikation nutzen. So könnte man z.B. vereinbaren, dass in einem not(..) die negierte Klasse bereits vorher vereinbart sein muss - eine zirkuläre Negation wie beim männlich-weiblich-Beispiel wird so ausgeschlossen.

  • Durch solche Verfahren steigt die Komplexität der Modellierung und des Inferencing allerdings erheblich.

Alle drei Probleme sind schwerwiegend. Wo Lösungen bekannt sind, führen diese zu einer erheblichen Komplexitätserhöhung im Inferencing. Um solche Komplexität nicht entstehen zu lassen. verzichten wir in Gendifs auf alle Elemente, die konzeptuell eine direkte oder versteckte Negation erfordern - also auch auf ONLY.

SOMLY#

Angedacht (aber noch nicht entschieden, das überhaupt zu implementieren) ist ein SOMLY. Die Semantik wäre:

  • ähnlich wie SOME_and_ONLY

  • aber nicht mit Klassifikationsaxiomen hinterlegt (die eine Negation enthalten würden),

  • sondern mit einer Integritätsbedingung versehen.

Beispiel:

Pferd
  BY has_color SOME Color
    Schimmel
      SOMLY weiß
    Rappe
      SOMLY schwarz
    Zebra
      SOME weiß
      SOME schwarz

(Klassifikations-) Semantik identisch mit SOME.

Dazu wird syntaktisch die eine Subclass von integrity constraint violation (ICV) angelegt, hier z.B. ICV_Schimmel: Eine Pferd, das dank seiner weißer Farbe als Schimmel klassifiziert wurde, dazu aber auch noch andere Farben hat, wird auch als ICV-Schimmel klassifiziert. Über SQL kann man dann die Instanzen der ICV-Klassen abfragen und die Applikation entscheiden lassen, wie damit umzugehen ist.

Die anderen Farben können zur Kompilierungszeit syntaktisch aus der lokalen Umgebung (hier: BY has_color SOME Color) bestimmt werden.

Aber das ist insbesondere für User nur schwer nachzuvollziehen. Vorläufig steht SOMLY nicht auf der Prioritäten-Liste.