4. Das Preference SQL - System

Ähnliche Dokumente
Seminar : Benutzerzentrierte Datenbankanfragen. Referent : Axel Schön

Vorlesung Suchmaschinen Semesterklausur Sommersemester 2016

Semi-Skylines und Skyline Snippets

5. Implementierung von Präferenz- Querysprachen

5.3 Auswertung der Präferenz-Selektion

3. Präferenz-Theorie. 3.1 Präferenzen. 3.2 Formales Präferenzmodell. 3.3 Präferenz-Anfragen mit BMO-Semantik. 3.4 SV-Semantik. 3.

Vorlesung Suchmaschinen Semesterklausur Sommersemester 2015

Suchmaschinen. Universität Augsburg, Institut für Informatik SS 2014 Prof. Dr. W. Kießling 23. Mai 2014 Dr. M. Endres, F. Wenzel Lösungsblatt 6

Klausur. Universität Augsburg, Institut für Informatik Sommersemester 2007 Prof. Dr. Werner Kießling 21. Juli (Suchmaschinen) Hinweise:

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

Universität Augsburg, Institut für Informatik WS 2008/2009 Prof. Dr. W. Kießling 23. Nov Dr. A. Huhn, M. Endres, T. Preisinger Lösungsblatt 5

Aggregatfunktionen in der Relationenalgebra?

Es geht also im die SQL Data Manipulation Language.

Vorlesung Suchmaschinen Semesterklausur Wintersemester 2013/14

Welche Kunden haben die gleiche Ware bestellt? select distinct a1.name, a2.name from Auftrag a1, Auftrag a2 where a1.ware = a2.ware.

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Übersicht der wichtigsten MySQL-Befehle

PRG2 Folien Zicari Teil 5. Einführung in Datenbanken SS 2007

SQL. Ziele. Grundlagen von SQL. Beziehung zur relationalen Algebra SELECT, FROM, WHERE. Joins ORDER BY. Aggregatfunktionen. dbis.

WS 2010/11 Datenbanksysteme Fr 15:15 16:45 R Vorlesung #3. SQL (Teil 1)

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

dbis Praktikum DBS I SQL Teil 2

Datenbanksysteme Kapitel 5: SQL - Grundlagen

Datenbanksysteme Kapitel 5: SQL Grundlagen Teil 1

12 BG EDV Access / Inf-SQL1 Theodor-Heuss-Schule Wetzlar

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Schlüssel. Definition: Ein Schlüssel (key) einer Relation r(r) ist eine Til Teilmenge K von R, so dass für je zwei verschiedene Tupeln t 1

Aggregatfunktionen in SQL

SQL 2. Ziele. Fortgeschrittene SQL-Konstrukte. Aggregatfunktionen revisited. Subqueries. Korrelierte Subqueries

Universität Augsburg, Institut für Informatik WS 2005/2006 Prof. Dr. Werner Kießling 21. Nov M. Endres, A. Huhn, P. Preisinger Lösungsblatt 4

7.3 XML-Anfragesprache XQuery

SQL als Zugriffssprache

Universität Augsburg, Institut für Informatik Sommersemester 2009 Prof. Dr. Werner Kießling 16. Juli Semesterklausur

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Vorlesung Suchmaschinen Semesterklausur Sommersemester 2014

Kapitel 6. Datenmalipulation (DML) d. h. insert, update, delete, select im Relationenmodell (in Oracle)

Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

Webbasierte Informationssysteme

SQL Intensivpraktikum SS 2008

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

GROUP BY, HAVING und Sichten

Semesterklausur Datenbanksysteme 1 SS 2015

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Rückblick. SQL bietet viele Möglichkeiten zur Anfrageformulierung

SELECT dient dazu, aus einer vorhandenen Datenbank bestimmte Spalten und Zeilen auszugeben es handelt sich also um eine Auswahlabfrage.

Datenbanksysteme Teil 6 MySQL DML Die SELECT-Anweisung. Stefan Maihack Dipl. Ing. (FH) Datum:

1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Hafen(HNR, Ort, Grundsteinlegung)

Übung Datenbanken in der Praxis. Anfragen an Datenbanken mit SQL

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Antwort auf QB ist Menge von Tupeln, i-e. selbst wieder Relation (wie bei rel. Algebra) in QB "Zugriff" auf Tupel mit Tupel-Variablen

Verbunde (Joins) und mengentheoretische Operationen in SQL

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, 2017 Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Datenbanken Unit 4: Das Relationale Modell & Datenintegrität

Verbunde (Joins) und mengentheoretische Operationen in SQL

Einführung in Datenbanken. Kapitel 8: Nullwerte in SQL

Praktische SQL-Befehle 2

Abfragen (Queries, Subqueries)

5. Implementierung von PräferenzQuerysprachen

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 12, Datenbanksysteme: Datendefinition in SQL, Kompliziertere Datenbankabfragen

Kapitel 3: Datenbanksysteme

5.8 Bibliotheken für PostgreSQL

Introduction to Data and Knowledge Engineering. 6. Übung SQL

4. Aufgabenblatt - Auswertung -

Vorlesung Datenbankmanagementsysteme

1. Einführung 2. DTD 3. XML Schema 4. XPath 5. XSLT 6. XSL-FO 7. XQuery 8. Web Services 9. XML und Datenbanken

Datenbankabfragen und Datenmanipulation

Universität Augsburg, Institut für Informatik WS 2006/2007 Dr. W.-T. Balke 27. Nov M. Endres, A. Huhn, T. Preisinger Lösungsblatt 5

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Kapitel 5: Der SQL-Standard

Objekt-relationales Datenbanksystem Oracle

Oracle Analytic SQL. o Anderer Name: Window functions o Ab 8i o Einfache Ansätze für komplexe Problemstellungen. o Anwendung:

Der probabilistische Ansatz

Einführung in die Spezialisierungsrichtungen

Datenbanken Unit 5: Datenintegrität und funktionale Abhängigkeit

Aufgabe 12.1: JDBC - Datenbankzugriff in Java

Diskussion: Personal (1)

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Datenbanken im WI-Unterricht mit

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

SQL. SQL SELECT Anweisung SQL-SELECT SQL-SELECT

7. XML-Datenbanksysteme und SQL/XML

4.14 Integrität und Trigger

Teil VIII. Weitere Datenbanksprachen

SQL: Weitere Funktionen

Data Cubes PG Wissensmangement Seminarphase

DB I S. 1 Relationenalgebra [8 P.] Gegeben seien die folgenden Relationenschemata: Person(PNR, Vorname, Nachname, Geburtsdatum, Wohnort Ort.

Domänen: Grundtypen, alle vordefiniert, z.b. INTEGER ~ integer NUMERIC (p,s) p: precision, s: scale (nach,) etc.

MySQL: Einfaches Rechnen.

Datenbankprogrammierung

Kommunikation und Datenhaltung. Übungsblatt D1. (Relationale Algebra & SQL)

Wirtschaftsinformatik Jgst. 9/10. Fortbildung am in Ansbach

Einführung in Datenbanken. Kapitel 11: Relationale Algebra in SQL

Nested Tables Types als Ergänzung zu Pivot XML

Structured Query Language (SQL) als standardisierte Anfragesprache für relationale Datenbanken

Transkript:

4. Das Preference SQL - System 4.1 Preference SQL Middleware 4.2 Preference SQL Syntax 4.2.1 Präferenz-Konstruktoren 4.2.2 Qualitätsfunktionen für Bewertung 4.2.3 Top-k Schnittstelle zum Auffüllen 4.2.4 BUT ONLY als Nachfilter 4.3 Anwendungsbeispiele 4.4 Erweiterung um GROUPING Prof. Kießling 2015 4-1

4.1 Preference SQL Middleware Server Client SQL-DB: Oracle, MySQL, JDBC-Treiber Preference SQL- Implementierung Preference SQL- JDBC-Treiber Java-Applikation oder SQL-Client Mitarbeit bei Preference SQL in jeder Form erwünscht! Prof. Kießling 2015 4-2

Beispiel: DbVisualizer als (P)SQL-Client Prof. Kießling 2015 4-3

Benötigte Daten für Treiber-Konfiguration: Preference SQL-JDBC-Treiber: PreferenceSQLJDBCClient.jar (per Download von Homepage) Driver: psql.connector.client.psqldriver URL: jdbc:psql://137.250.169.9@oracle.jdbc.driver.oracledriver:: jdbc:oracle:thin:@gemini.informatik.uni-augsburg.de:1521:db Login: Näheres dazu auf Übungsblatt Prof. Kießling 2015 4-4

4.2 Preference SQL Syntax Vorbemerkungen: Preference SQL = Standard SQL + Präferenzen Per Default verwendet Preference SQL reguläre SV-Semantik. Bei jeder numerischer Präferenz ist der d-parameter (im Folgenden d) optional. Dokumentation findet sich unter www.trial.preferencesql.com. Prof. Kießling 2015 4-5

Preference SQL-Abfrageblock: 10. SELECT <projection_list> 1. FROM <table_references> 2. WHERE <hard_conditions> 3. - 5. PREFERRING <pref_constructor> 6. GROUP BY <attribute_list> 7. HAVING <hard_conditions> 8. ORDER BY <attribute_list> 9. LIMIT <number>; Prof. Kießling 2015 4-6

Auswertungsreihenfolge 1. R := R 1 x x R n kartesisches Produkt 2. T 1 := σ H (R) H ist eine harte Bedingung auf dem kart. Produkt. 3. - 5. T 4 :=...σ [P] (T 1 ) Präferenzauswertung auf dem Ergebnis der harten Selektion; Verfeinerung auf der nachfolgenden Folie; 6. T 5 := Γ AGG (T 4 ) Gruppierung nach Aggregationsattributen 7. T 6 := σ HAVING (T 5 ) Selektion pro Gruppe durch Agg.attribut / Agg.funktion 8. T 7 := SORT A (T 6 ) Sortierung nach Attributen 9. T 8 := LIMIT n (T 7 ) Begrenzung der Ergebnismenge 10. T 9 := π A (T 8 ) Projektion von Attributen, Präferenzauswertung stellt weitere Funktionen für Projektion zur Verfügung! Prof. Kießling 2015 4-7

Bemerkungen: In SQL gruppiert GROUP BY HAVING die Ergebnismenge nach der harten Selektion in Partitionen, die durch die Gruppierungsattribute charakterisiert sind und den HAVING-Bedingungen genügen müssen. In Preference SQL gruppiert GROUP BY HAVING die BMO-Menge, die durch die Präferenzauswertung resultiert, nach den Gruppierungsattributen. Zudem gelten die HAVING-Bedingungen. Prof. Kießling 2015 4-8

Präferenz-Selektion: 3. PREFERRING <soft_conditions> 4. TOP <number> 5. BUT ONLY <but_only_conditions> 3. T 2 := σ [P] (T 1 ) Präferenzauswertung nach harter Selektion 4. T 3 := TOP k (T 2 ) Top-k Schnittstelle, siehe später 5. T 4 := σ BO (T 3 ) BO ist eine harte Bedingung (Nachfilter). Beachte: Die gleichzeitige Verwendung von TOP K und BUT ONLY sollte semantisch durch Anwendung begründbar sein! Prof. Kießling 2015 4-9

4.2.1 Präferenz-Konstruktoren Mit Hilfe von Basispräferenzen, die sich aufteilen in Kategorielle Präferenzen und Numerische Präferenzen werden induktiv komplexe Präferenzen aufgebaut. Prof. Kießling 2015 4-10

4.2.1.1 Numerische Basispräferenzen 1.) SCORE (A, f, d, SV) Preference SQL-Syntax: <column> SCORE <string_literal> [, <number> ] [<SV-Relation>] Beispiele: alter SCORE 'sqrtscoref' preis SCORE 'preisfunktion', 5 Prof. Kießling 2015 4-11

SCORE-Funktionen in Preference SQL: Die Definition einer SCORE-Präferenz erfolgt über CREATE [OR REPLACE] SCORE '<name>' AS BEGIN <Java-Anweisungen> END; Vordefinierte SCORE-Funktionen in Preference SQL: - absscoref : Betrag, z.b. 'absscore' - identityscoref : Identität, z.b. 'identityscoref', 2 - negscoref : Negation, z.b. 'negscoref' - powtwoscoref : Quadrat, z.b. 'powtwoscoref', 10 - powthreescoref : Kubik, z.b. 'powthreescoref', 4 - sqrtscoref : Quadratwurzel, z.b. 'sqrtscoref' Details zum Schreiben von eigenen SCORE- bzw. RANK-Funktionen Prof. Kießling 2015 4-12

2.) BETWEEN (A, [low, up], d, SV) Preference SQL-Syntax: PREFERRING <column> BETWEEN <low>, <up> [, <number> ] [<SV-Relation>] Beispiele: alter BETWEEN 10, 16 preis BETWEEN 5000, 6000, 100 Prof. Kießling 2015 4-13

3.) AROUND (A, z, d, SV) Preference SQL-Syntax: <column> AROUND <number> [, <number> ] [<SV-Relation>] Beispiele: leistung AROUND 90 verbrauch AROUND 6.5, 0.5 Prof. Kießling 2015 4-14

4.) HIGHEST (A, d, SV) Preference SQL-Syntax: <column> HIGHEST [<number>, <number> ] [<SV-Relation>] Das 1. <number>-element ist das Supremum. Das 2. <number>-element ist der d-parameter. Beispiele: leistung HIGHEST jahresgehalt HIGHEST 100000, 1000 Prof. Kießling 2015 4-15

5.) LOWEST (A, d, SV) Preference SQL-Syntax: <column> LOWEST [<number>, <number> ] [<SV-Relation>] Das 1. <number>-element ist das Infimum. Das 2. <number>-element ist der d-parameter. Beispiele: preis LOWEST verbrauch LOWEST 2.0, 0.5 Prof. Kießling 2015 4-16

4.2.1.2 Kategorielle Basispräferenzen 1.) LAYERED m (A, L, SV) Preference SQL-Syntax: PREFERRING <column> LAYERED ( ( (<string_literal> [, <string_literal>]* ) OTHERS) [, (<string_literal> [, <string_literal>]* ), OTHERS ]* ) [<SV-Relation>] Zudem gilt: es darf nur ein OTHERS geben. Beispiel: farbe LAYERED ( ('blau', 'gelb'), ('weiß', 'schwarz'), OTHERS, ('lila', 'rosa') ) Prof. Kießling 2015 4-17

2.) POS/POS (A, POS 1 -set, POS 2 -set, SV) Preference SQL-Syntax: PREFERRING <column> IN (<string_literal> [, <string_literal>]* ) ELSE (<string_literal> [, <string_literal>]* ) [<SV-Relation>] Beispiele: modell IN ('Kombi', 'Limousine') ELSE ('SUV', 'Van') farbe IN ('blau', 'gelb') ELSE ('rot', 'grün') Prof. Kießling 2015 4-18

3.) POS (A, POS-set, SV) Preference SQL-Syntax: PREFERRING <POS> [<SV-Relation>] <POS> ::= <column> = <string_literal> <column> IN (<string_literal> [, <string_literal>]* ) Beispiele: farbe IN ('gelb', 'grün', 'blau') amtsbezeichnung = 'Bundespräsident' modell = 'Kombi' Prof. Kießling 2015 4-19

4.) POS/NEG (A, POS-set, NEG-set, SV) Preference SQL-Syntax: PREFERRING <column> IN (<string_literal> [, <string_literal>]* ) NOT IN (<string_literal> [, <string_literal>]* ) [<SV-Relation>] Beispiele: modell IN ('Kombi', 'Limousine') NOT IN ('SUV', 'Van') farbe IN ('blau', 'gelb') NOT IN ('pink', 'rosa', 'lila') Prof. Kießling 2015 4-20

5.) NEG (A, NEG-set, SV) Preference SQL-Syntax: PREFERRING <NEG> [<SV-Relation>] <NEG> ::= <column>!= <string_literal> <column> <> <string_literal> <column> NOT IN (<string_literal> [, <string_literal>]* ) Beispiele: farbe NOT IN ('gelb', 'grün', 'blau') amtsbezeichnung <> 'Bundespräsident' modell!= 'Kombi' Prof. Kießling 2015 4-21

6.) EXPLICIT (A, E-Graph) Preference SQL-Syntax: PREFERRING <column> EXPLICIT ( <string_literal> < <string_literal> [, <string_literal> < <string_literal> ]* ) Die Implementierung sichert Zyklenfreiheit im E-Graph zu. Die Explicit- Präferenz hat keinen SV-Parameter. Es gilt triviale SV-Semantik. Beispiel: modell EXPLICIT ( 'LKW' < 'Van', 'Van' < 'Kombi', 'Van' < 'Limousine', 'Kombi' < 'Limousine' ) Prof. Kießling 2015 4-22

Folgende Produktionen gelten für SV-Relation: <SV-Relation> ::= REGULAR TRIVIAL // benutzerdefiniert // Default-SV-Relation, siehe unten // Reguläre SV-Semantik // Triviale SV-Semantik // Implementierung sichert disjunkte SV-// Mengen zu SV ( (<string_literal> [, <string_literal>]*) [, (<string_literal> [, <string_literal> ]*) ]* ) Für SCORE und Subkonstruktoren ist reguläre SV-Semantik der Default. Für EXPLICIT (und später GROUPING) gilt triviale SV-Semantik als Default. Prof. Kießling 2015 4-23

Beispiel für benutzerdefinierte SV-Semantik: SELECT id FROM car PREFERRING color IN ('blue', 'yellow', 'white') ELSE ('green', 'red', 'pink') SV ( ('blue', 'yellow'), ('green', 'red') ) AND price LOWEST; Prof. Kießling 2015 4-24

Beispiele zu Preference SQL-Anfragen: (elementare Präferenzkonstruktoren) SELECT * FROM trips PREFERRING duration AROUND 14, 1; SELECT * FROM apartments PREFERRING area HIGHEST 400, 10; SELECT PREFERRING SELECT PREFERRING * FROM programmers experience IN ('java', 'C++'); * FROM hotels location <> 'downtown'; Prof. Kießling 2015 4-25

SELECT make, age FROM car PREFERRING age AROUND 5, 2; -- Gruppierung obiger BMO-Tupel nach Marke SELECT make, count(*) FROM car PREFERRING age AROUND 5, 2 GROUP BY make; -- zusätzliche Anforderung: Mindestanzahl pro Gruppe SELECT make, count(*) FROM car PREFERRING age AROUND 5, 2 GROUP BY make HAVING count(*) > 2; Prof. Kießling 2015 4-26

4.2.1.3 Komplexe Präferenzen Komplexe Präferenzen setzen sich aus den bereits bekannten Basispräferenzen zusammen. 1.) Pareto ({A 1, A 2 }, < P1 P 2 ) Preference SQL-Syntax: PREFERRING <preference> AND <preference> Beispiel: preis AROUND 5000, 500 AND farbe = 'blau' Prof. Kießling 2015 4-27

2.) Priorisierung ({A 1, A 2 }, < P1 & P 2 ) Preference SQL-Syntax: PREFERRING <preference> PRIOR TO <preference> Beispiele: price AROUND 5000 PRIOR TO color = 'blue' price AROUND 5000, 100 PRIOR TO (color IN ('blue', 'green', 'red') SV( ('blue', 'green') ) ) Prof. Kießling 2015 4-28

Beispiele zu Preference SQL-Anfragen: (komplexe Präferenzkonstruktoren) SELECT PREFERRING SELECT WHERE PREFERRING * FROM computers main_memory HIGHEST AND cpu_speed HIGHEST; * FROM car brand = 'Opel' (category IN ('roadster') ELSE ('passenger') AND price AROUND 40000, 2000 AND power HIGHEST) PRIOR TO color = 'red' PRIOR TO mileage LOWEST 0, 10000; Prof. Kießling 2015 4-29

3.) Numerisches Ranking ({A 1, A 2 }, < rankf, d) Preference SQL-Syntax: PREFERRING ( <score_preference> <rank_preference> [ <score_preference> <rank_preference > ]* ) RANK <string_literal> [ <string_literal> ] [ <number> ] Die Definition einer RANK-Präferenz erfolgt analog zu SCORE über CREATE [OR REPLACE] RANKFUNCTION '<name>' AS BEGIN <Java-Anweisungen> END; Details zur Einbindung von Java-Code für RANK-Präferenzen Prof. Kießling 2015 4-30

Vordefinierte RANK-Funktionen in Preference SQL, Beispiele: - avgrankf : gewichteter Durchschnitt, z.b. 'avgrankf' '0.2, 0.5' - sumrankf : ungewichtete Summe, z.b. 'sumrankf' - maxrankf : Maximum, z.b. 'maxrankf' - minrankf : Minimum, z.b. 'minrankf' - productrankf : gewichtetes Produkt, z.b. 'productrankf' '3, 5' Beispiel: ( leistung SCORE 'f1' ( alter SCORE 'f2' preis LOWEST 0, 500 ) RANK 'sumrankf' id SCORE 'f4' ) RANK 'avgrankf' '0.20, 0.50, 0.10' 0.1 -- Fkt.name Parameter d-parameter Prof. Kießling 2015 4-31

4.2.1.4 Qualitätsfunktionen DISTANCE (<preference_alias>) berechnet die Distanz zwischen einem Attributwert v und den perfekten Treffern bezüglich einer numerischen Basispräferenz über der Domäne von A. Beispiel: DISTANCE : dom(a) R 0 + DISTANCE (v, [low, up]) := if v [low, up] then 0 else if v < low then low - v else v - up SELECT id, DISTANCE(p_age) FROM car PREFERRING (age AROUND 40 AS p_age) Prof. Kießling 2015 4-32

LEVEL (<preference_alias>) berechnet das Level eines Attributwerts v einer diskretisierten Basispräferenz über der Domäne von A. Perfekte Attributwerte haben das Level 0. LEVEL : dom(a) G 0 + Numerische Domäne A mit d-parameter: LEVEL (v, [low, up]) := DISTANCE (v, [low, up]) / d Kategorielle Domäne A: LEVEL (v) = layer m (v) Prof. Kießling 2015 4-33

Qualitätsfunktionen können benutzt werden in der Projektion wie Attribute z.b. SELECT id, LEVEL(p_age), DISTANCE(p_price) FROM car PREFERRING (age LOWEST 0, 2 AS p_age) AND (price LOWEST AS p_price) in der BUT ONLY-Klausel als boolescher Ausdruck z.b. wie oben BUT ONLY DISTANCE(p_price) < 5000 AND LEVEL(p_age) < 5 Prof. Kießling 2015 4-34

Hinweis: Bezeichne pref_alias eine Basispräferenz P über einem Attribut A. Mit Hilfe der booleschen Ausdrücke LEVEL(pref_alias) = 0 DISTANCE(pref_alias) = 0.0 kann überprüft werden, ob ein Tupel einen perfekten Attributwert bezüglich P(A) hat. Prof. Kießling 2015 4-35

Beispiel: Qualitätsfunktionen in Projektion SELECT ident, color, age, LEVEL(pc) AS lvl, DISTANCE(pa) AS dist FROM oldtimer PREFERRING (color IN ('white') ELSE ('yellow') AS pc) AND (age AROUND 40 AS pa); oldtimer ident color age Maggie white 19 Bart green 19 Homer yellow 35 Selma red 40 Smithers red 43 BMO: ident color age lvl dist Selma red 40 2 0 Homer yellow 35 1 5 Maggie white 19 0 21 Prof. Kießling 2015 4-36

4.2.1.5 Top-k Schnittstelle Motivation Das BMO-Query-Modell liefert die bestmögliche Ergebnismenge. Vorab ist aber unbekannt, wie groß die Menge ist. Das Top-k-Query-Modell soll genau k beste Ergebnisse liefern. k < BMO zufällige Auswahl der BMO-Ergebnisse k >= BMO BMO-Ergebnisse und weitere nächstbeste Ergebnisse, so dass k Ergebnisse zurückgeliefert werden. Eine Erweiterung des BMO-Modells zu einem Multi-Level-BMO-Modell liefert pro Schicht die nächstbesten Ergebnisse. Prof. Kießling 2015 4-37

Theorem Jede strikt partielle Ordnung lässt sich auf eine spezielle schwache Ordnung, die sogenannte Multi-Level-BMO-Ordnung abbilden. Diese Ordnung wird durch die iterierte Anwendung der Präferenzselektion, der jeweils ihre iterationsspezifisches BMO i -Menge zugeordnet ist, generiert. Prof. Kießling 2015 4-38

Multi-Level-BMO Beispiel 2-SV aus Kap. 3: POS/POS(color, {white}; {yellow}, ~) AROUND(age, 40, ~) erzeugt eine strikt partielle Ordnung, die auf eine schwache Ordnung (Multi-Level-BMO- Ordnung) abgebildet werden kann: i dent col or age Maggie white 29 Bart green 19 Homer yellow 35 Selma red 40 Smithers red Skinner yellow 43 51 BMO 0 BMO 1 BMO 2 (white, 29) (green, 19) (yellow, 35) (yellow, 51) (red, 40) (red, 43) Prof. Kießling 2015 4-39

Beispiel: SELECT * FROM oldtimer PREFERRING TOP 3 color IN ('red') AND age BETWEEN 40, 45, 5 BMO 0 := σ[p](oldtimer) = BMO 1 := σ[p](oldtimer \ BMO 0 ) = oldtimer ident color age Maggie white 19 Bart green 19 Homer yellow 35 Selma red 40 Smithers red 43 Ergebnis: ident color age Selma red 40 Smithers red 43 Homer yellow 35 Prof. Kießling 2015 4-40

4.2.1.6 BUT ONLY Kontrolle der Qualität der Ergebnismenge: BUT ONLY schränkt durch harte Bedingungen das bisherige Ergebnis ein. Dabei können auch die Qualitätsfunktionen für Präferenzen als Qualitätsfilter eingesetzt werden. Die Verwendung von anderen booleschen Ausdrücken als Selektion auf den Tupeln der Ergebnismenge - syntaktisch analog zur WHERE-Klausel - verursacht eine Nachfilterung der BMO-Menge. Bemerkung: Bei Verwendung des gleichen booleschen Ausdrucks kann die Ergebnismenge unterschiedlich sein, je nachdem ob der Ausdruck in der Vorfilterung (WHERE) bzw. in der Nachfilterung (BUT ONLY) verwendet wird. Prof. Kießling 2015 4-41

Beispiel zum Unterschied zwischen Vorfilterung und Nachfilterung durch gleichen booleschen Ausdruck: car id price age 1 85000 3 2 12000 6 3 6000 7 4 42000 5 5 84000 5 SELECT id FROM car WHERE price < 20000 PREFERRING age AROUND 5, 2 {2, 3} SELECT id FROM car PREFERRING age AROUND 5, 2 BUT ONLY price < 20000 { } Prof. Kießling 2015 4-42

Beispiel: Qualitätsfunktionen in BUT ONLY SELECT FROM PREFERRING BUT ONLY t.*, LEVEL (p_start_day) AS delta_start, DISTANCE (p_duration) AS delta_duration trips t (start_day AROUND date '1999-07-03', INTERVAL '1' DAY AS p_start_day) AND (duration AROUND 14 AS p_duration) DISTANCE (p_duration) <= 2 AND LEVEL (p_start_day) < 3; Hinweis: Datentypen und Preference SQL Prof. Kießling 2015 4-43

4.3 Anwendungsbeispiele Designhinweise für personalisierte Suchmaschinen: Harte Selektionen (WHERE) gegen weiche (PREFERRING)? Welche Kontrolle bzgl. der Qualität der Ergebnismenge (BUT ONLY-Einschränkung)? Bedeutung von Multi-Attribut-Präferenzen (AND contra PRIOR TO contra RANK)? Präsentation der Ergebnismenge (Einsatz von LEVEL(p_alias), DISTANCE(p_alias))? Woher stammen Präferenzen? Fest verbunden mit der Suchmaske durch den Bereitsteller des E- Services (Benutzermodell)? Explizit eingegeben von den E-Business-Kunden? Implizit eingetragene Verkäufer-Präferenzen? Implizit eingetragenes anwendungsspezifisches Domänen- / Kontextwissen? Prof. Kießling 2015 4-44

4.3.1 Gebrauchwagenhandel Prof. Kießling 2015 4-45

SELECT *, LEVEL(p_manu), LEVEL(p_model), LEVEL(p_price), LEVEL(p_mileage), LEVEL(p_regyear), LEVEL(p_diesel), LEVEL(p_airbag), LEVEL(p_autotransmission), LEVEL(p_aircondition) FROM used_cars PREFERRING ((manufacture = 'BMW' AS p_manu) AND (model = '7' AS p_model)) PRIOR TO ((price BETWEEN 0, 75000, 7500 AS p_price) AND (mileage BETWEEN 0, 30000, 3000 AS p_milage) AND (regyear BETWEEN 1997, 1999, 2 AS p_regyear) AND (diesel = 'yes' AS p_diesel) AND (airbag = 'yes' AS p_airbag) AND (autotransmission = 'yes' AS p_autotransmission) AND (aircondition = 'yes' AS p_aircondition)); Prof. Kießling 2015 4-46

Prof. Kießling 2015 4-47

4.4 Gruppierende Präferenzen Präferenzen lassen sich gruppieren mit dem Schlüsselwort GROUPING, wodurch ausgedrückt wird, dass die Präferenz pro Gruppe ausgewertet werden soll. Wie von GROUP BY gewohnt, können auch Aggregatsfunktionen in der Projektion bzw. in der HAVING-Klausel verwendet werden. Bemerkung: Die SQL-Schlüsselwörter GROUP BY HAVING und die Preference-SQL-Schlüsselwörter GROUPING HAVING dürfen nur exklusiv genutzt werden! Prof. Kießling 2015 4-48

Deklarative Semantik der gruppierenden Präferenz- Selektion: Gegeben seien eine Relation R, eine Menge von Attributen G attrib(r) und eine Äquivalenz-Relation (als Spezialfall: SV- Relation) G auf dom(g). Die gruppierende Präferenzselektion bezüglich G ist definiert als: σ[p GROUPING G ](R) := {t R v R: t[g] G v[g] t[a] < P v[a]} Die Präferenzselektion wird also jeweils pro Gruppe ausgewertet. Prof. Kießling 2015 4-49

Gruppierender Preference SQL-Abfrageblock: 9. SELECT <projection_list> 1. FROM <table_references> 2. WHERE <hard_conditions> 3'. - 6'. PREFERRING <group_pref_constructor> 7. ORDER BY <attribute_list> 8. LIMIT <number>; Prof. Kießling 2015 4-50

Syntax der gruppierenden Präferenz-Selektion: 3'. PREFERRING <soft_conditions> 4'. TOP <number> 5'. BUT ONLY <but_only_conditions> 3'. GROUPING <grouping_attributes> 6'. HAVING <having_condition> Der Default der SV-Relation G ist TRIVIAL. Prof. Kießling 2015 4-51

Verarbeitungsreihenfolge der gruppierenden Präferenz- Selektion: 3'. T 2 := σ [P GROUPING G ] (T 1 ) Präferenzauswertung pro Gruppe 4'. T 3 := σ TOP (T 2 ) Top-k Schnittstelle 5'. T 4 := σ BO (T 3 ) BO ist eine harte Bedingung (Nachfilter). 6'. T 5 := σ HAVING (T 4 ) HAVING ist eine harte Bedingung für Gruppen mittels Gruppierungsattribute oder Aggregationsfunktionen. Prof. Kießling 2015 4-52

Bemerkungen: GROUPING HAVING verhält sich wie GROUP BY HAVING : Nur Gruppierungsattribute und Aggregatsfunktionen sind in dieser Klausel zulässig und schließen ganze Gruppen aus. Aliase, die in der GROUPING-Klausel definiert werden, dürfen in der Projektion und in Aggregatsfunktionen benutzt werden. TOP erzeugt die gewünschte Mengengröße pro Gruppe (Multimengensemantik). Nicht aggregierte Attribute können nur durch BUT ONLY nachgefiltert werden, wodurch Tupel evtl. gelöscht werden. Qualitätsfunkionen können in BUT ONLY verwendet werden. Prof. Kießling 2015 2012 4-53

Beispiele zur Auswertung von GROUPING: Gegeben sei: car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-54

Beispiel 1: SELECT make, color, price FROM car PREFERRING price LOWEST GROUPING make ORDER BY make, color; car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-55

Beispiel 2: SELECT make, color, price FROM car PREFERRING price LOWEST GROUPING color ORDER BY color, make; car make color price chevrolet brown 12000 porsche brown 13000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-56

Beispiel 3: SELECT color, count(color) as counter FROM car PREFERRING price LOWEST GROUPING color ORDER BY color; ==> color counter brown 1 green 2 silver 1 car make color price chevrolet brown 12000 porsche brown 13000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-57

Beispiel 4: SELECT make, color, price FROM car PREFERRING price LOWEST TOP 3 GROUPING make ORDER BY make, color; ==> Alle nicht durchgestrichenen Tupel gehören zur Ergebnismenge. Blaue Tupel gehören zu BMO 1. car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-58

Beispiel 5: SELECT make, color, price FROM car PREFERRING price LOWEST TOP 3 GROUPING make HAVING make <> 'porsche' ORDER BY make, color; ==> Alle nicht durchgestrichenen Tupel Gehören zur Ergebnismenge. car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-59

Beispiel 6: SELECT make, color, price FROM car PREFERRING price LOWEST TOP 3 BUT ONLY price < 2000 GROUPING make HAVING make <> 'porsche' ORDER BY make, color; ==> Leere Ergebnismenge. car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-60

Beispiel 7: SELECT make, color, price FROM car PREFERRING price LOWEST TOP 3 GROUPING make HAVING make <> 'porsche' ORDER BY make, color LIMIT 1; ==> Nur 1 grünes Tupel car make color price chevrolet brown 12000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 chevrolet silver 7000 porsche brown 13000 porsche green 11000 Prof. Kießling 2015 4-61

GROUPING mit benutzerdefinierter SV-Semantik: A, B, seien Attribute einer Relation R, wobei a i, b i, deren Domänenwerte seien. In der GROUPING-Klausel steht für benutzerdefinierte SV-Semantik folgende Syntax zur Verfügung: GROUPING A SV ((a 1, a 2, ) [AS 'KlasseA1'],, [OTHERS [AS...]]) [AS A-Alias]], B SV ((b 1, b 2, ) [AS 'KlasseB1'],, [OTHERS [AS...]]) [AS B-Alias]], Bei fehlenden Klassennamen wird ein Default-Name generiert wie '(a 1, a 2 )' bzw. 'OTHERS'. Prof. Kießling 2015 4-62

Beispiel 3-SV1: SELECT my_color, count(color) as counter FROM car PREFERRING price LOWEST GROUPING color SV (('green'), OTHERS AS 'old_fashioned') AS my_color ORDER BY my_color desc; ==> my_color counter old_fashioned 1 (green) 2 car make color price chevrolet brown 12000 porsche brown 13000 chevrolet green 4000 chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-63

Beispiel 3-SV2: SELECT prod_country, count(color) as counter FROM car PREFERRING price LOWEST GROUPING make SV (('vw', 'porsche') AS 'Inland', OTHERS AS 'Ausland') AS prod_country ORDER BY prod_country desc; ==> prod_country counter (Inland) 1 (Ausland) 1 car make color price chevrolet brown 12000 porsche brown 13000 vw green 4000 chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-64

Beispiel zu unterschiedlichen Ergebnissen von GROUP BY im Vergleich zu GROUPING: Anzahl der möglichst billigen Autos, aufgeschlüsselt nach Marke SELECT make, count(*) FROM car PREFERRING price LOWEST GROUP BY make; ==> make count(*) vw 1 chevrolet 1 car make color price chevrolet brown 12000 porsche brown 13000 vw green 4000 ; chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-65

Beispiel zu unterschiedlichen Ergebnissen von GROUP BY im Vergleich zu GROUPING: Marke und Anzahl der markenspezifisch möglichst billigen Autos SELECT make, count(*) FROM car PREFERRING price LOWEST GROUPING make; ==> make vw 1 chevrolet 1 porsche 1 count(*) car make color price chevrolet brown 12000 porsche brown 13000 vw green 4000 chevrolet green 4000 chevrolet green 10000 porsche green 11000 chevrolet silver 7000 Prof. Kießling 2015 4-66 ;

Beispiele zu Preference SQL-Anfragen mit GROUPING (GROUPING mit Aggregation in Projektion oder HAVING) SELECT make, count(*) AS best_model FROM car PREFERRING price LOWEST AND age LOWEST GROUPING make; SELECT make, count(*) AS best_model FROM car PREFERRING price LOWEST AND age LOWEST GROUPING make HAVING count(*) > 5 AND make <> 'chevrolet'; Prof. Kießling 2015 4-67

Beispiel zu Preference SQL-Anfragen mit GROUPING: (GROUPING mit Vorfilterung und Nachfilterung) SELECT make, count(*) AS best_model FROM car WHERE age < 10 -- Vorfilterung PREFERRING price LOWEST AND age LOWEST BUT ONLY color <> 'red' -- Nachfilterung GROUPING make HAVING count(*) > 5 and make <> 'chevrolet'; Prof. Kießling 2015 4-68