OWL erklären: Klassen besser Sets nennen, es ist präziser und nicht so leicht mit OO-Klassen zu verwechseln

Heute hörte ich mir den Workshop "Democratize the Knowledge Graph and Concrete Tooling Requirements" von Adam Keresztes auf der 2023 Knowledge Graph Conference in NYC an.

Verschiedene Leute dort betonten die Schwierigkeit, Nichtontologen den Unterschied zwischen Klassen und Instanzen zu erklären.

Das hat mich dazu gebracht, darüber nachzudenken, wie ich mit dieser Terminologie arbeite, und ich habe festgestellt, dass ich dazu neige, 'Menge' statt 'Klasse' zu verwenden.

Nach meiner Erfahrung ist 'Klasse' für die meisten Menschen ein sehr zweideutiges Konzept. Einige haben Erfahrung mit klassenbasierter Programmierung und denken: "Ich weiß, was Klassen sind", aber OO-Klassen haben mit OWL-Klassen nicht viel gemeinsam.

OWL-Klassen sind nichts anderes als Mengen: eine Ansammlung von eindeutigen Dingen. Nicht mehr und nicht weniger. Und ich kann die Mengenlehre, d.h. Vereinigung und Schnittmenge von Mengen, leicht grafisch veranschaulichen und damit die OWL unionOf und intersectionOf einfach und grafisch auf eine Weise erklären, die jeder verstehen kann.

So kann ich "Blasen" für gist:requirement und gist:restriction zeichnen und dann eine Blase genau um beide herum zeichnen, um die gist:commitment zu erklären, die gist:restriction und gist:requirement oder die unionOf beider ist.

So einfach wie es nur geht, meiner Erfahrung nach wird es jeder verstehen und es gibt keine magische "Klasse" mehr, nur noch Instanzen und eine Gruppierung dieser, Mengen von Instanzen, genannt Klassen. Aber sie sind nicht mehr als Mengen von Instanzen, nur ein Eimer aller einzigartigen Instanzen, die diese 'Klasse' beschreibt.

Entscheiden zwischen Klassen und Instanzen

Ich kann auch einige Grenzfälle leicht mit Mengen illustrieren.

Angenommen, wir wollen gefährdete Arten modellieren. Modellieren wir z.B. den Weißkopfseeadler als Klasse oder Instanz?

Anhand von Mengen ist es für die meisten leicht zu erkennen, dass wir nicht sagen können: "Die Menge der Weißkopfseeadler ist eine gefährdete Art", da diese Menge kein 'Ding' ist, sondern eine Menge. Wir müssen also die gefährdete Art als Instanz modellieren, wenn wir diese Art von Fakt angeben wollen.

Wenn wir andererseits etwas über einzelne Weißkopfseeadler sagen wollen, z.B. sie zählen, ihren Standort verfolgen oder was auch immer, dann brauchen wir den einzelnen Adler als Instanz und unmittelbar4 brauchen wir eine Klasse Weißkopfseeadler, um über alle einzelnen Weißkopfseeadler zu sprechen.

Das ist eine problematische Modellierungsaufgabe in OWL, und wir müssen uns für das eine oder das andere entscheiden, oder wir müssen uns in Konstrukte flüchten, bei denen wir eine Instanz "Weißkopfseeadlerarten" und eine Klasse "Weißkopfseeadler" haben und beides irgendwie in Beziehung setzen müssen (das macht sehr viel Spaß)

Ich verwende 'Klasse'

Deshalb liebe ich solche Konferenzen, ich fange an, über mein eigenes Verhalten nachzudenken. Ich habe nie bewusst darüber nachgedacht und ich denke, dass ich 'Klasse' öfter benutze, als ich es hätte tun sollen.

Da 'class' nur in der Spezifikation und an so vielen anderen Stellen vorkommt, werde ich es trotzdem in vielen Diskussionen verwenden müssen. Wenn ich das 'Set'-Konzept im Hinterkopf habe, kann ich Fehlinterpretationen in meinen und den Beiträgen anderer leichter erkennen und sie leichter erklären und hoffentlich korrigieren.

Wir verwenden Cookies auf unser Webseite um die Benutzererfahrung zu verbessern.

Es werden keine Dienste zur Analyse Ihres Verhaltens genutzt, wir tracken sie nicht.