4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x...

41
© Prof. Kießling 2016 4 - 1 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

Transcript of 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x...

Page 1: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 1

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

Page 2: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 2

4.1 Preference SQL Middleware

SQL-DB:Oracle,

PostgreSQL,…

Preference SQL-Implementierung

Java-Applikationoder SQL-Client

Client

Pre

fere

nce

SQ

L-

JDB

C-T

reib

er

Server

Mitarbeit bei Preference SQL in jeder Form erwünscht!

JDB

C-T

reib

er

Page 3: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 3

Beispiel: DbVisualizer als (P)SQL-Client

Page 4: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 4

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://[email protected]::

jdbc:oracle:thin:@localhost:1521:db

Login: Näheres dazu auf Übungsblatt

Page 5: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 5

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.

Page 6: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 6

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>;

Page 7: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 7

Auswertungsreihenfolge

1. R := R1 x … x Rn kartesisches Produkt

2. T1 := σH (R) H ist eine harte Bedingung auf dem kart. Produkt.

3. - 5. T4:= ...σ [P] (T1) Präferenzauswertung auf dem Ergebnis der harten

Selektion; Verfeinerung auf der nachfolgenden Folie;

6. T5 := ΓAGG (T4) Gruppierung nach Aggregationsattributen

7. T6 := σHAVING (T5) Selektion pro Gruppe durch Agg.attribut / Agg.funktion

8. T7 := SORTA (T6) Sortierung nach Attributen

9. T8 := LIMITn (T7) Begrenzung der Ergebnismenge

10. T9 := πA (T8) Projektion von Attributen, Präferenzauswertung stellt

weitere Funktionen für Projektion zur Verfügung!

Page 8: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 8

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.

Page 9: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 94 - 9

Präferenz-Selektion:

3. PREFERRING <soft_conditions>

4. TOP <number>

5. BUT ONLY <but_only_conditions>

3. T2 := σ [P] (T1) Präferenzauswertung nach harter

Selektion

4. T3 := TOPk (T2) Top-k Schnittstelle, siehe später

5. T4 := σBO (T3) BO ist eine harte Bedingung (Nachfilter).

Beachte: Die gleichzeitige Verwendung von TOP K und BUT ONLY sollte semantisch durch Anwendung begründbar sein!

Page 10: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 10

Mit Hilfe von Basispräferenzen, die sich aufteilen in

Kategorielle Präferenzen und Numerische Präferenzen

werden induktiv komplexe Präferenzen aufgebaut.

4.2.1 Präferenz-Konstruktoren

Page 11: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 11

1.) LAYEREDm (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') )

4.2.1.1 Kategorielle Basispräferenzen

Page 12: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 12

2.) POS/POS (A, POS1-set, POS2-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')

Page 13: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 13

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'

Page 14: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 14

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')

Page 15: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 15

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'

Page 16: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 16

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' )

Page 17: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 17

Folgende Produktionen gelten für SV-Relation:<SV-Relation> ::=

∅ | // Default-SV-Relation, siehe unten

REGULAR | // Reguläre SV-Semantik

TRIVIAL | // Triviale SV-Semantik

// benutzerdefiniert

// 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.

Page 18: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 18

Beispiel für benutzerdefinierte SV-Semantik:

SELECT id FROM carPREFERRING color

IN ('blue', 'yellow' , 'white') ELSE ('green', 'red' , 'pink') SV ( ('blue', 'yellow'), ('green', 'red') )AND price LOWEST;

Page 19: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 19

1.) SCOREd(A, f, SV)

Preference SQL-Syntax:<column> SCORE <string_literal>

[ , <number> ] [<SV-Relation>]

Beispiele:

alter SCORE 'sqrtScoreF'

preis SCORE 'preisFunktion' , 5

4.2.1.2 Numerische Basispräferenzen

Page 20: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 20

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

Page 21: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 21

2.) BETWEENd(A, [low, up], SV)

Preference SQL-Syntax:

PREFERRING <column>

BETWEEN <low>, <up> [, <number> ]

[<SV-Relation>]

Beispiele: alter BETWEEN 10, 16

preis BETWEEN 5000, 6000, 100

Page 22: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 22

3.) AROUNDd(A, z, SV)

Preference SQL-Syntax:

<column> AROUND <number> [, <number> ][<SV-Relation>]

Beispiele:

leistung AROUND 90

verbrauch AROUND 6.5 , 0.5

Page 23: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 23

4.) HIGHESTd(A, sup, 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

Page 24: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 24

5.) LOWESTd(A, inf, 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

Page 25: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 25

6.) MORE THANd(A, z, SV)

Preference SQL-Syntax:

<column> MORE THAN <number> [<number> ] [<SV-Relation>]

Das <number>-Element ist der d-Parameter.

Beispiele:

alter MORE THAN 18

preis MORE THAN 2000, 10

Page 26: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 26

7.) LESS THANd(A, z, SV)

Preference SQL-Syntax:

<column> LESS THAN <number> [<number> ] [<SV-Relation>]

Das <number>-Element ist der d-Parameter.

Beispiele:

id LESS THAN 8

preis LESS THAN 5000, 500

Page 27: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 27

4.2.1.3 Temporale Basispräferenzen

1.) LATESTd (A, sup, SV)

Preference SQL-Syntax:

<column> LATEST [DATE / TIME / TIMESTAMP <time>,

INTERVAL <time> ] [<SV-Relation>]

Das 1. <time>-Element ist das Supremum.

Das 2. <time>-Element ist der d-Parameter.

Beispiele:

production_date LATEST

issue_date LATEST DATE '2014-06-01', INTERVAL '1' YEAR

Page 28: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 28

2.) EARLIESTd (A, inf, SV)

Preference SQL-Syntax:

<column> EARLIEST [DATE / TIME / TIMESTAMP <time>,

INTERVAL <time> ] [<SV-Relation>]

Das 1. <time>-Element ist das Infimum.

Das 2. <time>-Element ist der d-Parameter.

Beispiele:

birth_date EARLIEST

issue_date EARLIEST DATE '2011-11-30', INTERVAL '0-1'

Page 29: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 29

3.) LATER THANd(A, z, SV)

Preference SQL-Syntax:

<column> LATER THAN DATE / TIME / TIMESTAMP <time> [INTERVAL <time> ] [<SV-Relation>]

Das <time>-Element ist der d-Parameter.

Beispiele:

production_date LATER THAN DATE '2014-03-01'

birth_date LATER THAN DATE '2000-01-01', INTERVAL '6' MONTH

Page 30: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 30

4.) EARLIER THANd(A, z, SV)

Preference SQL-Syntax:

<column> EARLIER THAN DATE / TIME / TIMESTAMP <time> [INTERVAL <time> ] [<SV-Relation>]

Das <time>-Element ist der d-Parameter.

Beispiele:

production_date EARLIER THAN DATE '2016-02-29'

birth_date EARLIER THAN DATE '2013-11-03', INTERVAL '0-0 30'

Page 31: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 31

Syntax des z-Wertes

Die unterstützten Datentypen sind:

DATE, TIME und TIMESTAMP

(TIME und TIMESTAMP ohne Zeitzone)

Syntax:

DATE 'YYYY-MM-DD'

TIME 'HH:MM[:SS[.MS]]'

TIMESTAMP 'YYYY-MM-DD HH:MM[:SS[.MS]]'

Page 32: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 32

Syntax des z-Wertes: Beispiele

DATE '2011-05-03'

DATE '2015-7-1'

TIME '9:30'

TIME '9:30:50'

TIME '9:30:50.942'

TIMESTAMP '2011-05-03 9:30'

Page 33: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 33

Syntax des d-Parameters

Vor der Eingabe des d-Parameters ist das Schlüsselwort INTERVAL erforderlich.

Syntax:

INTERVAL '[YY-MM] [DD] [HH:MM[:SS[.MS]]]'

oder

INTERVAL 'XX' QUALIFIER

(QUALIFIER ist eine der folgenden Optionen:

YEAR, MONTH, DAY, HOUR, MINUTE, SECOND)

Page 34: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 34

Syntax des d-Parameters: Beispiele

INTERVAL '0-1 1' für 1 Monat und 1 Tag

INTERVAL '1 0:0:0.001' für 1 Tag und 1 Millisekunde

INTERVAL '1' MONTH für 1 Monat

INTERVAL '10' SECOND für 10 Sekunden

INTERVAL '2-5 10' für 2 Jahre, 5 Monate und 10 Tage

Page 35: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 35

Auch alle numerischen Basispräferenzen unterstützen dieDatentypen DATE, TIME und TIMESTAMP.

Die Verwendung für temporale Attribute erfolgt durch die Eingabe eines der folgenden Schlüsselwörter: DATE, TIME oder TIMESTAMP

Beispiel:SELECT * FROM car PREFERRING production_date BETWEEN DATE '2000-07-11' , DATE '2010-08-11';

Page 36: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 36

4.2.1.4 Räumliche Basispräferenzen

1.) NEARBYd(A, lat, lon, SV)

Preference SQL-Syntax:

<column> NEARBY <number>,<number> [,<number> ] [<SV-Relation>]

Das 1. <number>-Element bestimmt den Längengrad, das 2. den Breitengrad.

Das 3. <number>-Element ist der d-Parameter.

Beispiele:

location NEARBY 40.123, 10.234

location NEARBY 42.246, 10.387, 1000

Page 37: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 37

2.) WITHINd(A, KML, SV)

Preference SQL-Syntax:

<column> WITHIN <string_literal> [,<number> ] [<SV-Relation>]

Das <string_literal> enthält eine Geometrie in KML-Darstellung.Das <number>-Element ist der d-Parameter.

Beispiele:

location WITHIN '<Polygon><outerBoundaryIs><LinearRing><coordinates>-77.0578,38.8725 -77.0546,38.8729 -77.0531,38.8705

-77.0578,38.8725</coordinates></LinearRing></outerBoundaryIs></Polygon>';

Page 38: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 38

3.) BUFFERd(A, KML, SV)

Preference SQL-Syntax:

<column> BUFFER <string_literal> [,<number> ] [<SV-Relation>]

Das <string_literal> enthält eine Geometrie in KML-Darstellung.Das <number>-Element ist der d-Parameter.

Beispiele:

location BUFFER '<Polygon><outerBoundaryIs><LinearRing><coordinates>-77.0578,38.8725 -77.0546,38.8729 -77.0531,38.8705

-77.0578,38.8725</coordinates></LinearRing></outerBoundaryIs></Polygon>';

Page 39: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 39

4.) ONROUTEd(A, KML, SV)

Preference SQL-Syntax:

<column> ONROUTE <string_literal> [,<number> ] [<SV-Relation>]

Das <string_literal> enthält eine Geometrie in KML-Darstellung.Das <number>-Element ist der d-Parameter.

Beispiele:

location ONROUTE '<LineString><coordinates> -112.2550,36.0795 -112.2549,36.0811-112.2552,36.0826

</coordinates></LineString>';

Page 40: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 40

Beispiele zu Preference SQL-Anfragen: (elementare Präferenzkonstruktoren)

SELECT * FROM trips

PREFERRING duration AROUND 14, 1;

SELECT * FROM apartmentsPREFERRING area HIGHEST 400, 10;

SELECT * FROM programmersPREFERRING experience IN ('java', 'C++');

SELECT * FROM hotelsPREFERRING location <> 'downtown';

Page 41: 4. Das Preference SQL - System file© Prof. Kießling 2016 4 - 7 Auswertungsreihenfolge 1. R := R1 x … x Rn kartesisches Produkt 2. T1 := σH (R) H ist eine harte Bedingung auf dem

© Prof. Kießling 2016 4 - 41

SELECT make, age FROM car

PREFERRING age AROUND 5, 2;

-- Gruppierung obiger BMO-Tupel nach Marke SELECT make, count(*) FROM carPREFERRING age AROUND 5, 2GROUP BY make;

-- zusätzliche Anforderung: Mindestanzahl pro GruppeSELECT make, count(*) FROM carPREFERRING age AROUND 5, 2GROUP BY makeHAVING count(*) > 2;