Sunday, February 8, 2009

Blatt 11

1.


a)


cafe.owl


determine scope:

- Besucher informieren sich über:

 * verschiedene Kaffeespezialitäten

 * Herkunft des Kaffees

 * zusätzliche Zutaten und Preise, die sich daraus ergeben

- Café bildet Geschäftsabläufe ab

- anhand von Reaktionen von Kunden kann möglicherweise die Qualität des Kaffees und des Service verbessert werden



consider reuse:

- keine passende Ontologie unter http://www.daml.org/ontologies gefunden

- Wiederverwendbarkeit vorhandener Ontologien nicht weiter betrachtet



enumerate terms:

Café, Kaffeevarianten(Kaffee, Café au Lait, Cappuccino, Espresso, doppelter Espresso, Latte Macchiato, Ristretto, Americano, Irish Coffee), Kaffeebohne Herkunft (Guatemala Hochland, Jamaika Blue Mountain), Kaffeedossierung (schwach, normal, stark), Zutaten (Milchschaum, Aroma, Alkohol, Zucker, Milch), Preis, Kunde, Mitarbeiter, Barrista, Kellner, Zubereitung, Bestellung, Bedienung, Bezahlung, Trinkgeld, Zufriedenheit, Unzufriedenheit, Beschimpfung, einmaliger Kunde, mehrmaliger Kunde



define classes:

- top-down Ansatz, da Ontologie noch recht übersichtlich

- Erzeugung von Klassen

 * Café

 * Kaffeespezialität und entsprechende Unterklassen

 * Kaffeedossierung und entsprechende Unterklassen

 * Kaffeegröße und entsprechende Unterklassen

 * Kaffeesorte und entsprechende Unterklassen

 * Mensch und entsprechende Unterklassen

 * Zutat und entsprechende Unterklassen



define properties:

- hatZurAuswahl, wirdHergestelltAus, wirdDossiertIn, wirdZubereitetIn, arbeitetIn, bedient (nimmtBestellungAufVon, serviert), wirdBedientVon, bereitetZu, bestellt, bezahlt, gibtTrinkgeldAn, beschimpft, besucht (besuchtEinmal, besuchtMehrmals), Kosten, Preise

- Umsetzung, dass die Kosten der Zutaten die Preise für die Kaffeespezialitäten bestimmen, ist problematisch

- Preis von Kaffeespezialitäten und Zutaten zunächst mit Hilfe eines ObjectProperty dargestellt, später mit Hilfe eines DatatypeProperty



define contraints:

- ein Café muss immer mindestens eine Kaffeespezialität haben

- die verschiedenen Kaffeespezialitäten haben immer bestimmte Zutaten (IrishCoffee hat immer Whisky, Milchkaffee hat immer Milch, ...)

- Disjunktheit der verschiedenen Unterklassen



define instances:

In dem Café Alex in Potsdam bestellt ein zufriedener Kunde A einen SchokoCappuccino und einen Irish_Coffee, ein unzufriedener Kunde B bestellt einen Expresso...

Sunday, February 1, 2009

Blatt 10

1.


1. alle verheirateten Paare, die ein gemeinsames Kind haben

Mann(x) Frau(y) verheiratetMit(x, y) kindVon(z, x) kindVon(z, y)

- unbestimmte Variable: z


2. alle verheirateten weiblichen katholischen Priester

Frau(x) Katholisch(x) Priester(x) verheiratetMit(x, y)

- unbestimmte Variable: y


3. alle Personen, deren Eltern verheiratet sind

- nur alle Männer oder alle Frauen bestimmbar und keine Vereinigung beider

Mann(x) kindVon(x, y) kindVon(x, z) verheiratetMit(y, z)

- unbestimmte Variable: y, z


4. alle Frauen, die ihren Gatten umbringen

Frau(x) verheiratetMit(x, y) ermordet(x, y)

- unbestimmte Variable: y


5. alle verheirateten Paare von Selbstmördern

Mann(x) Frau(y) verheiratetMit(x, y) ermordet(x, x) ermordet(y, y)



2.


1. (Weise(x) Kahl(x)) ¬Maennlich(x) (Klug(x) Alt(x)) y.(verheiratetMit(x,y))

(Weise(x) Kahl(x)) ¬Maennlich(x) (Klug(x) Alt(x)) verheiratetMit(x, ehepartner(x)))

(Weise(x) Kahl(x)) ¬Maennlich(x) ¬((Klug(x) Alt(x)) verheiratetMit(x, ehepartner(x))))

(Weise(x) Kahl(x)) ¬Maennlich(x) (¬Klug(x) ¬Alt(x)) ¬verheiratetMit(x, ehepartner(x))

- in keine Klauselform umwandelbar



2. Stolz(vater(x)) Stolz(mutter(x)) Klug(x)

Stolz(vater(x)) Stolz(mutter(x)) ¬Klug(x)

- Klausel



3. Clever(x) Klug(x) (kennt(x,y) Klug(y))

Clever(x) (Klug(x) kennt(x,y)) (Klug(x) Klug(y))

Clever(x) ¬((Klug(x) kennt(x,y)) (Klug(x) Klug(y)))

Clever(x) (¬Klug(x) ¬kennt(x,y)) (¬Klug(x) ¬Klug(y)))

- in keine Klauselform umwandelbar



4. ¬Dominant(vater(x)) Dominant(mutter(x))

¬Dominant(vater(x)) ¬Dominant(mutter(x))

- Hornklausel



5. Klein(x) Stark(x) Seemann(x) liebt(x,y) Spinat(y) liebt(x, Olive_Oyl)

Klein(x) Stark(x) ¬Seemann(x) ¬liebt(x,y) ¬Spinat(y) ¬liebt(x, Olive_Oyl)

- in keine Klauselform umwandelbar



3.


a)

Künstler(x) ZuordnungKünstlerEpoche(x, z) Stilepoche(z)

Künstler(x) Kunstwerk(y) Schöpfer(x, y) ZuordnungKunstwerkEpoche(y, z) Stilepoche(z)


<ruleml:imp>

  <ruleml:_rlab ruleml:href="#epochekünstler"/>

  <owlx:Annotation>

    <owlx:Documentation>Zuordnung eines Künstlers zu einer Epoche</owlx:Documentation>

  </owlx:Annotation>

  <ruleml:_body>

    <swrlx:classAtom>

      <owlx:Class owlx:name="&kunst;Künstler"/>

      <ruleml:var>x</ruleml:var>

    </swrlx:classAtom>

  </ruleml:_body>

  <ruleml:_head>

    <swrlx:individuaPropertyAtom swrlx:property="&kunst;ZuordnungKünstlerEpoche">

      <ruleml:var>x</ruleml:var>

      <ruleml:var>z</ruleml:var>

    </swrlx:individuaPropertyAtom>

    <swrlx:classAtom>

      <owlx:Class owlx:name="&kunst;Stilepoche"/>

      <ruleml:var>z</ruleml:var>

    </swrlx:classAtom>

  </ruleml:_head>

</ruleml:imp>



<ruleml:imp>

  <ruleml:_rlab ruleml:href="#epochekunstwerk"/>

  <owlx:Annotation>

    <owlx:Documentation>Zuordnung eines Kunstwerks zu einer Epoche</owlx:Documentation>

  </owlx:Annotation>

  <ruleml:_body>

    <swrlx:classAtom>

      <owlx:Class owlx:name="&kunst;Künstler"/>

      <ruleml:var>x</ruleml:var>

    </swrlx:classAtom>

    <swrlx:classAtom>

      <owlx:Class owlx:name="&kunst;Kunstwerk"/>

      <ruleml:var>y</ruleml:var>

    </swrlx:classAtom>

    <swrlx:individualPropertyAtom swrlx:property="&kunst;Schöpfer">

      <ruleml:var>x</ruleml:var>

      <ruleml:var>y</ruleml:var>

    </swrlx:individualPropertyAtom>

  </ruleml:_body>

  <ruleml:_head>

    <swrlx:individualPropertyAtom swrlx:property="&kunst;ZuordnungKunstwerkEpoche">

      <ruleml:var>y</ruleml:var>

      <ruleml:var>z</ruleml:var>

    </swrlx:individualPropertyAtom>

    <swrlx:classAtom>

      <owlx:Class owlx:name="&kunst;Stilepoche"/>

      <ruleml:var>z</ruleml:var>

    </swrlx:classAtom>

  </ruleml:_head>

</ruleml:imp>



b)


Def-hasMother

Woman(y) hasParent(x, y) hasMother(x, y)


Wenn eine Person ein Elternteil hat, das weiblich ist, ist dieses Elternteil seine Mutter.



Def-hasDaughter

Woman(x) hasChild(x, y) hasDaughter(x, y)


Fehler im SWRL-Codefragment; es soll wohl heißen:

Woman(y) hasChild(x, y) hasDaughter(x, y)


Wenn eine Person ein weibliches Kind hat, ist dieses Kind die Tochter der Person.



Def-hasParent

hasConsort(y, z) hasParent(x, y) hasParent(x, z)


Wenn eine Person ein Elternteil hat, das einen Partner besitzt, ist der Partner auch Elternteil der Person.



Def-hasSister

hasSister(x, y) Woman(y) hasSibling(x, y)


Wenn eine weibliche Person ein Geschwister einer Person ist, ist sie die Schwester der Person.



Def-hasBrother

hasBrother(x, y) Man(y) hasSibling(x, y)


Wenn eine männliche Person ein Geschwister einer Person ist, ist er der Bruder der Person.



Def-hasSon

Man(x) hasChild(x, y) hasSon(x, y)


Fehler im SWRL-Codefragment; es soll wohl heißen:

Man(y) hasChild(x, y) hasSon(x, y)


Wenn eine Person ein männliches Kind hat, ist dieses Kind der Sohn der Person.



Def-hasUncle

hasUncle(x, z) hasParent (x, y) hasBrother(y, z)


Wenn ein Elternteil einer Person einen Bruder hat, ist er der Onkel der Person.



Def-hasSibling

hasChild(x, y) hasChild(z, y) differentFrom(x, z) hasSibling(x, z)


Fehler im SWRL-Codefragment; es soll wohl heißen:

isChild(x, y) isChild(z, y) differentFrom(x, z) hasSibling(x, z)


Wenn zwei Personen das gleiche Elternteil haben, sind sie Geschwister.



Def-hasNiece

hasNiece(x, z) hasDaughter(y, z) hasSibling(x, y)


Wenn eine Person ein Geschwister hat und das Geschwister eine Tochter, dann ist sie die Nichte dieser Person.



Def-hasNephew

hasSon(y, z) hasSibling(x, y) hasNiece(x, z)


Wenn eine Person ein Geschwister hat und das Geschwister einen Sohn, dann ist er die Neffe dieser Person.



Def-hasFather

hasFather(x, y) Man(y) hasParent(x, y)


Das männliche Elternteil einer Person ist der Vater dieser Person.



Def-hasAunt

hasSister(y, z) hasParent(x, y) hasAunt(x, z)


Wenn ein Elternteil einer Person eine Schwester hat, dann ist sie die Tante der Person.