*) is the usual operator
to compose the preference for a Skyline query. The Skyline is also known as Pareto frontier.
All complex preferences are mathematically strict partial orders (irreflexive and transitive).
"*"(p1, p2)
"&"(p1, p2)
"|"(p1, p2)
"+"(p1, p2)
reverse(p)
is.complex_pref(x)base_pref, or complex preferences),
or, for is.complex_pref, an object to be tested if it is a complex preference.p1 * p2) to formulate a Skyline query.
A tuple t1 is better than t2 w.r.t. p1 * p2 if it is strictly better w.r.t. one of the preferences p1, p2 and is better or equal w.r.t. the other preference. The syntactical correspondence to other query languages supporting Skylines/preferences to rPref
is given as follows: ... SKYLINE OF a MAX, b MIN, c MAX" corresponds in rPref to the preference high(a) * low(b) * high(c). ... PREFERRING a LOWEST AND (b HIGHEST PRIOR TO c LOWEST)" corresponds in rPref to low(a) * (high(b) & low(c)). ... PREFERRING LOW a PLUS (b = 1 PRIOR TO LOW c))" corresponds in rPref to low(a) * (true(b == 1) & low(c)). show.query.p1 & p2p1 & p2 if it is
strictly better w.r.t. p1 or is equal w.r.t. p1 and is better w.r.t. p2.p1 | p2p1 | p2 if it is strictly better w.r.t. both preferences.
This is a stricter variant of the Pareto operator. The evaluation of psel(df, p1 | p2) is always a subset of psel(df, p1 * p2).p1 + p2p1 + p2 if it is strictly better w.r.t. to one of the preferences.
Note that this can violate the strict partial order property, if the domains (the tuples on which p1 and p2 define better-than-relationships)
of the preferences are not disjoint.reverse(p1) or -p1-p1 if t2 is better than t1 w.r.t. p1.
The unary minus operator, i.e. -p1, is a short hand notation for reverse(p1).is.complex_pref returns TRUE if x is a complex preference object
(i.e., was constructed by one of these binary operators or the unary operator reverse)
and FALSE otherwise.W. Kiessling (2002): Foundations of Preferences in Database Systems. In Very Large Data Bases (VLDB '02), pages 311-322.
S. Mandl, O. Kozachuk, M. Endres, W. Kiessling (2015): Preference Analytics in EXASolution. 16th Conference on Database Systems for Business, Technology, and Web.
base_pref for the construction of base preferences.
See general_pref for functions applicable to all kind of preferences.
See psel for the evaluation of preferences.
# define preference for cars with low consumption (high mpg-value)
# and simultaneously high horsepower
p1 <- high(mpg) * high(hp)
# perform the preference search
psel(mtcars, p1)
Run the code above in your browser using DataLab