Seite 1 von 2

Übung 6

Verfasst: 19. Feb 2012 17:50
von tonyp
Bei Übung 6 Aufgabe 2 (F-Logic):

Würde für "Alle Zelte haben nur einen Stern" statt

Code: Alles auswählen

?X[hatSterne->1] :- ?X:Zelt.
auch folgendes gehen?

Code: Alles auswählen

?X:Zelt :- ?X[hatSterne->1] .

Re: Übung 6

Verfasst: 19. Feb 2012 18:30
von DreamFlasher
so jetzt ham wir alle :D

Re: Übung 6

Verfasst: 19. Feb 2012 20:38
von HeikoPaulheim
Nein, diese Aussage sagt: alles, was nur einen Stern hat, ist ein Zelt. Das ist etwas fundamental anderes. Wenn man z.B. folgende Instanzmenge gegeben hat:

Code: Alles auswählen

HelgasPension:Unterkunft.
HelgasPension[hatSterne->1].
dann würde daraus folgen, dass HelgasPension ein Zelt ist.

Re: Übung 6

Verfasst: 19. Feb 2012 21:51
von tonyp
Hm das ist mir leider noch nicht ganz klar - vermutlich "lese" bzw. interpretiere ich die F-Logic Statements falsch.
Steht nicht links das "zu definierende"?

Re: Übung 6

Verfasst: 19. Feb 2012 21:52
von HeikoPaulheim
Links steht die Konsequenz (Kopf, Head), rechts die Bedingung (Körper, Body).

Merkhilfe: Das :- ist an einen Pfeil angelehnt, und links von der Pfeilspitze steht, was bei der Regel folgt.

Re: Übung 6

Verfasst: 20. Feb 2012 14:31
von DreamFlasher
Aufgabe 1
Können wir wirklich hatVorgänger und hatNachfolger Funktional und InverseFunktional definieren - denn was machen wir mit dem ersten und letzten Akkord?

Und wenn wir so:

Code: Alles auswählen

:Musikstück1 a [
a owl:Restriction ;
owl:onProperty :bestehtAus ;
owl:allValuesFrom [
owl:oneOf (:CDur :FDur :GDur) ] ] .
ein Musikstück definieren, haben wir noch nichts über die Reihenfolge ausgesagt. Für meine Begriffe müssen wir noch Klassen für alle Dur und Moll Akkorde in unsere Ontologie aufnehmen und ein konkretes Stück besteht dann aus Instanzen der Form :akkord1 a :CDurAkkord, :akkord2 a :FDurAkkord, sowie der Reihenfolgendefinition: :akkord1 :hatNachfolger :akkord2 etc., sowie oneOf und AllDifferent... also sowas wird leicht ultrakomplex...

Re: Übung 6

Verfasst: 20. Feb 2012 15:09
von HeikoPaulheim
Können wir wirklich hatVorgänger und hatNachfolger Funktional und InverseFunktional definieren - denn was machen wir mit dem ersten und letzten Akkord?
Das ist nicht weiter kritisch. Diese Statements sagen ja nur, dass es nicht mehr als einen Vorgänger und Nachfolger geben kann, nicht, dass es einen solchen tatsächlich geben muss.
Und wenn wir so [...] ein Musikstück definieren, haben wir noch nichts über die Reihenfolge ausgesagt.
Korrekt. Die Definition sagt nur: dieses Stück besteht ausschließlich aus C-F- und G-Dur-Akkorden. Womit wir es zumindest schon mal als fröhliches Stück klassifizieren können.

[qoute]Für meine Begriffe müssen wir noch Klassen für alle Dur und Moll Akkorde in unsere Ontologie aufnehmen und ein konkretes Stück besteht dann aus Instanzen der Form :akkord1 a :CDurAkkord, :akkord2 a :FDurAkkord, sowie der Reihenfolgendefinition: :akkord1 :hatNachfolger :akkord2 etc., sowie oneOf und AllDifferent... also sowas wird leicht ultrakomplex...[/quote]
Korrekt. So sähe das aus, wenn man ein Stück ganz detailliert modellieren würde.

Re: Übung 6

Verfasst: 20. Feb 2012 15:11
von DreamFlasher
Dankeschön, da stecken ne ganze Menge Details drin die man auf den ersten Blick so gar nicht gesehen hat :)

Zu Aufgabe 2:
Wärst du so lieb den Unterschied zwischen

Code: Alles auswählen

?X:Unterkunft[hatSterne->?Y]
und

Code: Alles auswählen

?X[hatSterne->?Y]
zu erläutern?

Re: Übung 6

Verfasst: 20. Feb 2012 15:22
von HeikoPaulheim

Code: Alles auswählen

?X:Unterkunft[hatSterne->?Y]
ist eine abgekürzte Schreibweise für

Code: Alles auswählen

?X:Unterkunft AND ?X[hatSterne->?Y]

Re: Übung 6

Verfasst: 20. Feb 2012 16:45
von DreamFlasher
Aufgabe 4
Ich hatte mir sowas gedacht für "Jedes Buch kann nur von einem Benutzer ausgeliehen werden.":

Code: Alles auswählen

:Buch owl:subClassOf [a owl:Restriction; owl:onProperty :hatAusgeliehen; owl:maxCardinality "1"^^xsd:integer].
Wäre das auch okay für die Erfüllung der Aussage - der Unterschied zu inverseFunctionalProperty wäre dann quasi das Bücher nur einmal ausgeliehen sein können vs. das das Property hatAusgeliehen generell unabhängig von Büchern nur einmal pro Objekt auftreten kann. Habe ich das korrekt verstanden?

Re: Übung 6

Verfasst: 20. Feb 2012 17:20
von HeikoPaulheim
Habe ich das korrekt verstanden?
Absolut. Das ist sogar genauer als mein eigener Lösungsvorschlag. So könnte man z.B. einführen, dass digitale Medien auch häufiger ausgeliehen sein könnten, was bei meiner Lösung nicht möglich ist, da die Eigenschaft global am Property definiert wurde.

Re: Übung 6

Verfasst: 20. Feb 2012 17:41
von DreamFlasher
Gut, da bin ich beruhigt :)
Ich halte deine Lösung für besser, weil hatAusgeliehen nur bei realen Objekten Sinn macht (digitale Medien in Form von Daten können eigentlich nicht ausgeliehen werden, sondern nur kopiert, digitale Medien in Form von DVDs kann jede DVD auch nur einmal ausgeliehen sein, ist das selbe wie das es mehrere Kopien des selben Buchs geben kann) und alle realen Objekte tatsächlich nur einmal ausgeliehen sein können. Ist also für eine spätere Wiederverwendung besser bzw. die Ontology reagiert wie man es erwartet für Erweiterungen.

Re: Übung 6

Verfasst: 20. Feb 2012 23:42
von tonyp
HeikoPaulheim hat geschrieben:Links steht die Konsequenz (Kopf, Head), rechts die Bedingung (Körper, Body).

Merkhilfe: Das :- ist an einen Pfeil angelehnt, und links von der Pfeilspitze steht, was bei der Regel folgt.

Danke, das ist eine gute Merkhilfe. Das hast du sogar schonmal in der Vorlesung gesagt.. :oops:
Die Prädikatenlogik hat mich da wohl etwas verwirrt, bei der es andersrum ist - ich merk mir mal lieber F-Logic, die kam anders als die Prädikatenlogik auch in der Übung dran ;)

Re: Übung 6

Verfasst: 21. Feb 2012 15:58
von redDragonfly
(Zu Aufgabe 2)
Sorry, ich habe den Unterschied zwischen
(1)

Code: Alles auswählen

?X[hatSterne->1] :- ?X:Zelt.
und
(2)

Code: Alles auswählen

?X:Zelt :- ?X[hatSterne->1] .
im Bezug auf die Aufgabenstellung immer noch nicht ganz verstanden.

Soweit ich jetzt mitbekommen habe, bedeutet
(1) "X hat einen Stern, wenn X ein Zelt ist."
bzw.
(2) "X ist ein Zelt, wenn X einen Stern hat."
(ist das soweit korrekt?)

Woraus kann ich aus der Regel "Alle Zelte haben nur einen Stern." schließen, dass (1) gefordert ist?
Wo ist der Unterschied zur nächsten Regel "Luxusunterkünfte sind Unterkünfte mit mind. vier Sternen?", wo es in der MuLö dann genau umgekehrt ist?

Re: Übung 6

Verfasst: 21. Feb 2012 16:19
von HeikoPaulheim
Die Antwort hat drei Teile:

1. Ja, die Interpretation der beiden Varianten ist korrekt.

2. In der Klausur werden alle Aufgaben so eindeutig gestellt, dass es zu solchen Missverständnissen nicht kommen kann.

(liest hier noch jemand mit, wo Antwort 2 geklärt ist? :wink: )

3. Man müsste hier im Ernstfall (d.h. im echten Leben, in dem man solche Spezifikationen bekommt) nachdenken, welche Implikationen die jeweilige Codierung haben würde. Z.B. würde das Beispiel mit Helgas Pension dann die eine Richtung ausschließen, weil ein Reasoner hier zu unsinnigen Folgerungen kommen könnte.
Bei den Luxusunterkünften geht sowieso nur diese Richtung, weil "mindestens 4 Sterne" im Kopf einer Regel in F-Logic gar nicht darstellbar ist.