# CycL

CycL ist eine Ontologiesprache in der künstlichen Intelligenz, die speziell für die Wissensdatenbank Cyc entwickelt wurde. Doug Lenat und Ramanathan V. Guha sind die ersten Entwickler.
Die ursprüngliche Version von CycL war eine rahmenbasierte Sprache, von der sich die aktuelle Version jedoch entfernt hat. Sie ist eine Deklarationssprache, die auf der Prädikatenlogik erster Stufe beruht. Sie enthält Erweiterungen für Modallogik und Prädikatenlogik höherer Stufe.
CycL wird in der Cyc-Wissensdatenbank verwendet, um das gespeicherte Wissen darzustellen. Der Quellcode, geschrieben in CycL, steht im Projekt OpenCyc als Open Source zur Verfügung, um die Verwendbarkeit zur Unterstützung des semantischen Webs zu erhöhen.

## Grundideen

CycL beruht auf einigen grundlegenden Ideen:
* Konstanten werden verwendet, um sich auf in der Wissensdatenbank gespeicherte Konzepte zu beziehen.
* Die Konstanten werden in einer Hierarchie zusammengefasst, die Spezialisierungen und Verallgemeinerungen bilden.
* Allgemeine Regeln werden erstellt, die Schlussfolgerungen über die Konzepte unterstützen.
* Der Wahrheitsgehalt eines CycL-Satzes ist kontextabhängig. Die Kontexte werden in CycL als Mikrotheorien abgebildet.

### Konstanten

Die Konzeptnamen werden in CycL als Konstanten bezeichnet. Konstanten beginnen mit dem Präfix "#$" und unterscheiden Groß- und Kleinschreibung. Es gibt Konstanten für:
* Individual: Eigennamen wie #$BillClinton oder #$Hamburg.
* Collection: Mengen wie #$Tree-ThePlant, die alle Bäume enthält oder #EquivalenceRelation, die alle Gleichheitsbeziehungen enthält. Ein Element einer Menge wird als Instanz der Menge bezeichnet.
* TruthFunction: Funktionen, die einen Wahrheitswert zurückgeben. Diese Funktionen stellen Beziehungen zwischen Konzepten dar, die entweder wahr oder falsch sein können. Per Definition beginnen Funktionen in CycL mit einem Kleinbuchstaben nach dem Präfix. Solche atomaren Funktionen können durch logische Verknüpfungen (wie #$and, #$or, #$not, #$implies u. a.), Quantifizierer (wie #$forAll, #$thereExists u. a.) und andere Prädikate zu komplexen Sätzen zusammengestellt werden.
* Function: Funktionen, die aus bestehenden Termen, neue erzeugen. Z. B. #$FruitFn, die mit einer Pflanzenmenge als Argument die Menge aller ihrer Früchte zurückgibt. Per Definition beginnen solche Funktionen mit einem Großbuchstaben nach dem Präfix und enden mit der Zeichenfolge "Fn".

### Spezialisierungen und Verallgemeinerungen

Die wichtigsten und meistverwendeten Prädikate sind #isa und #$genls. Das erste (#$isa) besagt, dass ein angegebenes Element eine Instanz einer ebenfalls angegebenen Menge ist, während das zweite (#$genls) besagt, dass eine Menge eine Teilmenge einer anderen ist.
Aussagen über Konzepte werden in CycL als Sätze bezeichnet. Prädikate werden vor ihren Argumenten geschrieben und der ganze Ausdruck in runde Klammern gesetzt.
Beispiele:
    (#$isa #$BillClinton #$UnitedStatesPresident)
"Bill Clinton gehört zur Menge der amerikanischen Präsidenten."
    (#$genls #$Tree-ThePlant #$Plant)
"Alle Bäume sind Pflanzen."
    (#$capitalCity #$France #$Paris)
"Paris ist die Hauptstadt Frankreichs."
    (#$disjointWith #$Dog #$Cat)
"Die Menge aller Hunde und die Menge aller Katzen enthalten keine gemeinsamen Elemente."

### Regeln

Sätze können auch Variablen enthalten. Variablen beginnen mit dem Präfix "?". Eine wichtige Regel über das Prädikat #$isa lautet:
mit der Bedeutung "Wenn ?OBJEKT ein Element der Menge ?TEILMENGE ist und ?TEILMENGE eine Teilmenge von ?MENGE ist, dann ist ?OBJEKT ebenfalls ein Element der Menge ?MENGE."
Ein komplexeres Beispiel ist eine Regel, die Aussagen über eine ganze Gruppe oder Kategorie statt zu einem Einzelwert macht:
    (#$relationAllExists #$biologicalMother #$ChordataPhylum #$FemaleAnimal)
Diese Aussage besagt, dass zu jedem Element der Menge #$ChordataPhylum (Chordatiere) ein weibliches Tier (#$FemaleAnimal) existiert, das seine Mutter ist (#$biologicalMother) oder einfacher ausgedrückt: Jedes #$ChordataPhylum hat eine Mutter.

### Mikrotheorien

Die Wissensdatenbank ist in sogenannte Mikrotheorien (Mt) gegliedert, die eine Anzahl von Konzepten und Aussagen zu diesen Konzepten enthalten. Anders als die Wissensdatenbank als ganzes dürfen Mikrotheorien keine Widersprüche enthalten.
Jede Mikrotheorie hat einen Namen, der eine normale Konstante ist. Per Definition enden diese Namen mit der Zeichenfolge "Mt". Mikrotheorien können Aussagen aus ihnen zugrundeliegenden Microtheorien erben und sind somit ebenfalls in einer eigenen Hierarchie organisiert.
Beispiel:
    (#$genlMt #$GeometryMt #$MathMt)
"Die Mikrotheorie zur Geometrie ist ein Teilgebiet der Mikrotheorie zur Mathematik und kennt alle Aussagen aus dieser."

## Quellen

* Übersetzt aus dem englischen Beitrag mit geringen Anpassungen