ParSolutionExam2008-09
Aus Semantic-Web-Grundlagen
Inhaltsverzeichnis |
Aufgabe (2.d)
Step 1: using triples "ex:obama ex:diskutiertMit ex:mccain" and "ex:dikutiertMit rdfs:subPropertOf ex:sprichtMit"
in rule rdfs7 by setting,
- a = ex:diskutiertMit
- b = sprichMit
- u = ex:obama
- y = ex:mmcain
We get the conclusion:
"ex:obama ex:sprichtMit ex:mccain"
Step 2:
Using triples "ex:obama ex:sprichtMit ex:mccain" and "ex:sprichtMit rdfs:domain ex:Mensch" in rule rdfs2 by setting,
- a = ex:sprichtMit
- x = ex:Mensch
- u = ex:obama
- y = ex:mccain
we get the conclusion:
"ex:obama rdf:type ex:Mensch"
Step 3: Using triples "ex:Mensch rdfs:subClassOf ex:Lebewesen" and "ex:obama rdf:type ex:Mensch" in rule rdfs9 by setting,
- u = ex:Mensch
- x = ex:Lebewesen
- v = ex:obama
we get the conclusion:
"ex:obama rdf:type ex:Lebewesen"
And that is the answer.
Aufgabe 5
(a)
(i) alle Enkel von Rhea (ohne Mehrfachnennungen )
PREFIX ex: <http://example.org/> SELECT DISTINCT ?enkel WHERE { ex:Rhea ex:mutterVon ?kind. { {?kind ex:mutterVon ?enkel.} UNION {?kind ex:vaterVon ?enke.} } }
(ii) alle ehelichen Kinder alphabetisch geordnet nach deren lateinischen Namen.
PREFIX ex: <http://example.org/> SELECT DISTINCT ?kind WHERE { ?mutter ex:mutterVon ?kind. ?vater ex:vaterVon ?kind. ?kind ex:name ?name. OPTIONAL {?mutter ex:gatteVon ?vater} FILTER (!BOUND(?vater)) } ORDER BY ?name
The filter throws away any ?kind whose mother is wife of someone.
(iii) alle Geschwisterpaare die zusätzlich miteinander verheiratet sind.
SELECT DISTINCT ?paar1, ?paar2 WHERE { { {?mutter ex:mutterVon ?paar1. ?mutter ex:mutterVon ?paar2.} UNION {?vater ex:vaterVon ?paar1. ?vater ex:vaterVon ?paar2.} } {?paar1 ex:gatteVon ?paar2. UNION ?paar2 ex:gatteVon ?paar1.} }
There are other ways to model this query. What we have done here is that we check for all childer with same mother or same father and then check if one is the gatteVon the other.
(iv) alle Mütter und, falls angegeben, deren Eltern
I am assuming the query is asking for "all mothers and if given their parents"
PREFIX ex: <http://example.org/> SELECT DISTINCT ?mütter, ?elt1, ?elt 2 WHERE { ex:mütter ex:mutterVon ?kind. OPTIONAL { ?elt1 ex:vaterVon ?mütter. UNION ?elt2 ex:mutterVon ?mütter. } }
Aufgabe 4
(e)
Brad ist Schauspieler
<rdf: Description rdf:ID = "Brad"> <rdf:type rdf:resource = "Schauspieler"/> </rdf:Description>
Brad ist mit Angelina verheiratet
<owl:ObjectPropertyAssertion> <owl:ObjectProperty rdf:ID="Verheiratet_Mit"/> <owl:Individual rdf:resource="#Brad"/> <owl:Individual rdf:resource="#Angelina"/> </owl:ObjectPropertyAssertion>
Schauspieler können nur mit Schauspielern verheiratet sein.
<owl:Class rdf:ID = "Schauspieler"> <rdfs:subClassOf> <owl:intersectionOf rdf:parseType="Collection"> <owl:Restriction> <owl:onProperty rdf:resource="Verheiratet_Mit" /> <owl:allValuesFrom rdf:resource="Schauspieler" /> </owl:Restriction> </rdfs:subClassOf> </owl:Class>
Jeder ist mit höchstens einer Person verheiratet.
<owl:Class rdf:ID = "Person"> <rdfs: SubClassOf> <owl: Restriction> <owl:onProperty rdf:resource = "Verheiratet_Mit"/> <owl:maxCardinality rdf:datatype="xsd;nonNegativeInteger"> 1 </owl:maxCardinalty> </owl:Restriction> </rdfs:SubClassOf> </owl:Class>
Alle Frauen sind verliebt in Brad.
<owl:Class rdf:ID = "Frauen"> <rdfs: SubClassOf> <owl: Restriction> <owl:onProperty rdf:resource = "Verliebt_In"/> <owl:allValuesFrom> <owl:Class> <owl:oneOf rdf:parseType="Collection"> <rdf:Description rdf:about="Brad"/> </owl:oneOf> </owl:Class> </owl:allValuesFrom> </owl:Restriction> </owl:SubClassOf> </owl:Class>