select-instance-parts

Die Funktion select-instance-parts erwaretet drei Argumente: eine Liste, eine nicht-negative Ganzzahl und eine Transaktion.

Die Liste enthält Unterlisten, mit denen die Abfrage, die an die Ontologie gestellt wird, spezifiziert werden kann. Es handelt sich bei diesen Unterlisten um eine Domain Specific Language mit folgender Sytax und Semantik:

(from <of-class> as <class-name>) -- Die Klasse <of-class> kann in den anderen Unterlisten unter dem Namen <class-name> referenziert werden.

(select <class-name> <attribute-name> [as <alias-name>]) -- Das Attribut <attribute-name> der Referenz <class-name> wird als Spalte ins Resultat aufgenommen. Wenn <alias-name> angegeben ist, hat das Attribut im Resultat den spezifizierten Aliasnamen.

(join <class-name> <attribute-name> <op> <class-name> <attribute-name>) -- Joint die Attribute der Klassen. Der Operator <op> muss entweder = oder != sein.

(where <class-name> <attribute-name> <op> <value>) -- Fügt dem Select eine Bedingung hinzu. Verglichen wird das Attribut <attribute-name> der Klasse <class-name> mit dem Wert <value>. Als Vergleichsoperator wird <op> verwendet. Hier sind =, !=, <, >, etc. erlaubt.

(order-by <name>) -- Sorgt dafür, dass das Ergebnis nach der Spalte <name> geordnet ist. Die Sortierung erfolgt alphabetisch aufsteigend. Zu Spalten siehe select.

(reverse-order-by <Name>) -- Analog zu order-by, jedoch mit umgekehrter Reihenfolge des Ergebnisses.

(group-by <name>) -- Das Ergebnis ist nach der Ausgabespalte <name> gruppiert.

(count as <name>) -- Das Ergebnis enthält die Anzahl als Spalte <name>.


Über den zweiten Parameter kann angegeben werden, wieviele Datensätze aus dem Ergebnis der Abfrage zurückgeliefert werden.

Als drittes Argument muss die Transaktion übergeben werden, in der die Abfrage durchgeführt werden soll. Die Transaktion kann mit begin-transaction oder with-transaction erzeugt werden.

Das Ergebnis der Funktion ist eine Liste, die für jede Zeile des Abfrageergebnisses eine Instanz enthält.