06loesung - Informatik

Werbung
Universität Augsburg, Institut für Informatik
Prof. Dr. W. Kießling
F. Wenzel, L. Rudenko
SS 2015
29. Mai 2015
Lösungsblatt 6
Suchmaschinen
Aufgabe 1: Pareto mit SV-Semantik
Pareto Definition: x <P 1⊗P 2 y gdw. (x1 <P 1 y1 ∧ (x2 <P 2 y2 ∨ x2 = y2 ))∨
(x2 <P 2 y2 ∧ (x1 <P 1 y1 ∨ x1 = y1 ))
Ersetzen von = durch ∼:
(x1 <P 1 y1 ∧ (x2 <P 2 y2 ∨ (¬(x2 <P 2 y2 )) ∧ ¬(y2 <P 2 x2 )))))∨
(x2 <P 2 y2 ∧ (x1 <P 1 y1 ∨ (¬(x1 <P 1 y1 )) ∧ ¬(y1 <P 1 x1 )))));
Als Gegenbeispiel lassen sich folgende zwei EXPLICIT-Präferenzen P1 , P2 angeben:
Das Ergebnis P1 ⊗ P2 mit dem Austausch von ’=’ durch ’∼’ verletzt die Transitivität partieller
Ordnungen, da zwar sowohl b <P1 ⊗P2 a als auch c <P1 ⊗P2 b gilt, allerdings nicht c <P1 ⊗P2 a.
Aufgabe 2: Preference SQL: JDBC-Client
Lösungsvorschlag unnötig
Aufgabe 3: Preference SQL Queries
a) Während die harte SQL Bedingung ein Empty Result liefert, gibt die PSQL-Query ein Ergebnis
nahe am gewünschten Intervall zurück:
• SELECT id, energ_kcal
FROM beverages
WHERE energ_kcal >= 10 AND energ_kcal <= 18;
• SELECT id, energ_kcal
FROM beverages
PREFERRING energ_kcal BETWEEN 10, 18;
b) SELECT *
FROM beef b, beverages d
WHERE d.energ_kcal + b.energ_kcal < 350
PREFERRING b.shrt_desc IN (’BEEF_TOP’)
AND d.shrt_desc IN (’ALCOHOLIC_BEV’);
c) Mit regulärer SV-Semantik werden 11 Tupel zurückgegeben, mit trivialer 28 Ergebnisse:
• SELECT *
FROM beef
PREFERRING shrt_desc IN (’BEEF_SHOULDER’)
PRIOR TO (fat AROUND 8, 2 AND vitamin_c HIGHEST);
1
• SELECT *
FROM beef
PREFERRING (shrt_desc IN (’BEEF_SHOULDER’) TRIVIAL)
PRIOR TO (fat AROUND 8, 2 TRIVIAL AND vitamin_c HIGHEST TRIVIAL);
d) SELECT *
FROM beverages
PREFERRING shrt_desc
EXPLICIT (’DRINK_MIX’ < ’COFFEE_DRY’,
’LEMONADE_POWDER’ < ’ALCOHOLIC_BEV’,
’WATER_BTLD’ < ’WHISKEY_SOUR’);
e) Eine Präferenz-Anfrage, bei dem der Standard-SQL Teil als harte Bedingung keine Ergebnisse
zurückliefert, gibt als Gesamtanfrage auch keine Ergebnisse zurück:
SELECT *
FROM beverages
WHERE vitamin_c < 0
PREFERRING shrt_desc IN (’ALCOHOLIC_BEV’);
Aufgabe 4: Pareto und Priorisierung; Preference SQL Queries
Die Tabelle wird angelegt mittels
CREATE
INSERT
INSERT
INSERT
INSERT
INSERT
TABLE artikel (id INT, color VARCHAR(10), price INT);
INTO artikel VALUES (1, ’white’, 22);
INTO artikel VALUES (2, ’green’, 22);
INTO artikel VALUES (3, ’yellow’, 21);
INTO artikel VALUES (4, ’yellow’, 29);
INTO artikel VALUES (5, ’red’, 28);
a) i) Reguläre SV-Semantik:
Query:
SELECT *
FROM artikel
PREFERRING color IN (’green’, ’red’) ELSE (’yellow’)
AND price AROUND 30;
ID
Ergebnis: 4
5
Color Price
yellow 29
red
28
2
ii) Triviale SV-Semantik:
Query:
SELECT *
FROM artikel
PREFERRING color IN (’green’, ’red’) ELSE (’yellow’) TRIVIAL
AND price AROUND 30 TRIVIAL;
ID
2
Ergebnis:
4
5
Color
green
yellow
red
Price
22
29
28
b) i) Reguläre SV-Semantik:
Query:
SELECT *
FROM artikel
PREFERRING color IN (’green’, ’red’) ELSE (’yellow’)
PRIOR TO price AROUND 30;
Ergebnis:
ID
5
Color Price
red
28
ii) Triviale SV-Semantik:
Query:
SELECT *
FROM artikel
PREFERRING color IN (’green’, ’red’) ELSE (’yellow’) TRIVIAL
PRIOR TO price AROUND 30 TRIVIAL;
ID
Ergebnis: 2
5
Color Price
green 22
red
28
3
Herunterladen