2018-10-31

Oct 31 In-Class Exercise .

Hi Everyone,

Post your solutions to the Oct 31 In-Class Exercise to this thread.

Best, Chris

Hi Everyone, Post your solutions to the Oct 31 In-Class Exercise to this thread. Best, Chris

-- Oct 31 In-Class Exercise

P(x, y) <- R(a, x, y), NOT S(a, x, y), x < y

Ordered Pairs: Ordered(1, 2). Ordered(1, 3). Ordered(2, 3).

Express query which selects pair where y > 2: Pairs(x, y) :- Ordered(x,y), y > 2.

(Edited: 2018-10-31)
P(x, y) <- R(a, x, y), NOT S(a, x, y), x < y Ordered Pairs: Ordered(1, 2). Ordered(1, 3). Ordered(2, 3). Express query which selects pair where y > 2: Pairs(x, y) :- Ordered(x,y), y > 2.

-- Oct 31 In-Class Exercise

P(x,y) &lt;- Q(w,x,y), NOT R(w,x,y), x &lt; y

&lt;(1, 2). &lt;(1, 3). &lt;(2, 3). Query(x, y) :- &lt;(x, y), &lt;(2, y).

P(x,y) <- Q(w,x,y), NOT R(w,x,y), x < y <(1, 2). <(1, 3). <(2, 3). Query(x, y) :- <(x, y), <(2, y).

-- Oct 31 In-Class Exercise

NewMovie(t,y) &lt;- Movies(t,y,,,,), y &gt;= 1990.

OldMovie(t,y) &lt;- Movies(t,y,,,,), NOT NewMovie(t,y).

Pair(1,2).

Pair(2,3).

Pair(1,3).

Select(x,y) &lt;- Pair(x,y), y &gt; 2.

(Edited: 2018-10-31)
NewMovie(t,y) <- Movies(t,y,_,_,_,_), y >= 1990. OldMovie(t,y) <- Movies(t,y,_,_,_,_), NOT NewMovie(t,y). Pair(1,2). Pair(2,3). Pair(1,3). Select(x,y) <- Pair(x,y), y > 2.

-- Oct 31 In-Class Exercise

Q(x,y)&lt;- K(x,y). P(x,y)&lt;- R(x,y), Not Q(x,y). P(0,1) &lt;-. P(1,2) &lt;-. P(2,3) &lt;-. P(3,4) &lt;-. Greater(x, y) &lt;- P(_,y) y&gt;2.

Q(x,y)<- K(x,y). P(x,y)<- R(x,y), Not Q(x,y). P(0,1) <-. P(1,2) <-. P(2,3) <-. P(3,4) <-. Greater(x, y) <- P(_,y) y>2.

-- Oct 31 In-Class Exercise
  1. NewSong(artist, duration) :- song(artist, duration, _, _, _) AND duration &gt;= 3

(1,2).

(1,3).

(2,3).

Query(x, y) :- Pair(x, y), y &gt; 2

(Edited: 2018-10-31)
1) NewSong(artist, duration) :- song(artist, duration, _, _, _) AND duration >= 3 2) (1,2). (1,3). (2,3). Query(x, y) :- Pair(x, y), y > 2

-- Oct 31 In-Class Exercise

Student name: Alexander Duong

&lt;nowiki&gt; Give an example of a rule involving negation and an arithmetic atom which is safe.

a(x,y) &lt;- b(x,y), NOT c(x,y), x &gt; y.

Express ordered pairs where 0&lt;x&lt;y&lt;4 as a collection of datalog facts, then express the query which selects pair where y&gt;2.

op(1,2) &lt;-. op(1,3) &lt;-. op(2,3) &lt;-. select(x,y) &lt;- op(x,y), y &gt; 2. &lt;/nowiki&gt;

Student name: Alexander Duong <nowiki> Give an example of a rule involving negation and an arithmetic atom which is safe. a(x,y) <- b(x,y), NOT c(x,y), x > y. Express ordered pairs where 0<x<y<4 as a collection of datalog facts, then express the query which selects pair where y>2. op(1,2) <-. op(1,3) <-. op(2,3) <-. select(x,y) <- op(x,y), y > 2. </nowiki>

-- Oct 31 In-Class Exercise

A rule which uses negation and an arithmetic atom but is still safe: A(x,y) := B(x,y), NOT y&gt;1

A collection of datalog facts that represent 0&lt;x&lt;y&lt;4 would be: &lt;(1,2). &lt;(1,3). &lt;(2,3). Then, to query for all pairs y&gt;2: greaterThanTwo(x,y) := &lt;(x,y), &lt;(2,y).

A rule which uses negation and an arithmetic atom but is still safe: A(x,y) := B(x,y), NOT y>1 A collection of datalog facts that represent 0<x<y<4 would be: <(1,2). <(1,3). <(2,3). Then, to query for all pairs y>2: greaterThanTwo(x,y) := <(x,y), <(2,y).

-- Oct 31 In-Class Exercise

1.P(x,y) &lt;- Q(w,x,y), NOT R(w,x,y), x&lt;y 2.pairs (1,2); (1,3);(2,3); select(x,y) &lt;- pairs(x,y), y&gt;2 student: Hongbin Zheng

1.P(x,y) <- Q(w,x,y), NOT R(w,x,y), x<y 2.pairs (1,2); (1,3);(2,3); select(x,y) <- pairs(x,y), y>2 student: Hongbin Zheng

-- Oct 31 In-Class Exercise

A(x,y) &lt;- B(x,y), NOT C(x,y), x &lt; y

Ordered Pairs: pair(1,2) , pair(2,3), pair(1,3)

Find(x,y) :- pair(x,y) , y &gt; 2

A(x,y) <- B(x,y), NOT C(x,y), x < y Ordered Pairs: pair(1,2) , pair(2,3), pair(1,3) Find(x,y) :- pair(x,y) , y > 2
[ Next ]
X

 

Query Statistics

https://www.yioop.com/thread/9376

Total Elapsed Time for Queries: 0.05077934265136719 seconds.
SELECT LOCALE_NAME, WRITING_MODE FROM LOCALE WHERE LOCALE_TAG ='en-US'
Time: 0.0001409053802490234 seconds.
SELECT COALESCE(MAX(UPDATE_TIMESTAMP), 0) AS MOST_RECENT FROM ITEM_IMPRESSION_SUMMARY WHERE USER_ID = 2 AND ITEM_TYPE = 3 AND ITEM_ID IN (SELECT GROUP_ID FROM USER_GROUP WHERE USER_ID = 2 AND STATUS = 1) AND UPDATE_PERIOD = -4
Time: 0.0005290508270263672 seconds.
DELETE FROM ITEM_IMPRESSION_SUMMARY WHERE USER_ID=? AND ITEM_ID=? AND ITEM_TYPE=? AND UPDATE_PERIOD = -4
Array ( [0] => 2 [1] => 9376 [2] => 1 )
Time: 0.004359006881713867 seconds.
INSERT INTO ITEM_IMPRESSION_SUMMARY VALUES (?, ?, ?, -4, ?, 0, -1, -1) ON CONFLICT DO NOTHING
Array ( [0] => 2 [1] => 9376 [2] => 1 [3] => 1789974732 )
Time: 0.002323150634765625 seconds.
UPDATE ITEM_IMPRESSION_SUMMARY SET NUM_VIEWS = NUM_VIEWS + 1 WHERE USER_ID=? AND ITEM_ID=? AND ITEM_TYPE=? AND UPDATE_PERIOD = -2 AND UPDATE_TIMESTAMP = 0
Array ( [0] => 2 [1] => 9376 [2] => 1 )
Time: 0.0001859664916992188 seconds.
DELETE FROM ITEM_IMPRESSION_SUMMARY WHERE USER_ID=? AND ITEM_ID=? AND ITEM_TYPE=? AND UPDATE_PERIOD = -4
Array ( [0] => 2 [1] => 303 [2] => 3 )
Time: 0.002316951751708984 seconds.
INSERT INTO ITEM_IMPRESSION_SUMMARY VALUES (?, ?, ?, -4, ?, 0, -1, -1) ON CONFLICT DO NOTHING
Array ( [0] => 2 [1] => 303 [2] => 3 [3] => 1789974732 )
Time: 0.002305030822753906 seconds.
UPDATE ITEM_IMPRESSION_SUMMARY SET NUM_VIEWS = NUM_VIEWS + 1 WHERE USER_ID=? AND ITEM_ID=? AND ITEM_TYPE=? AND UPDATE_PERIOD = -2 AND UPDATE_TIMESTAMP = 0
Array ( [0] => 2 [1] => 303 [2] => 3 )
Time: 0.0001189708709716797 seconds.
SELECT COUNT(GI.ID) AS NUM FROM GROUP_ITEM GI WHERE GI.GROUP_ID IN (SELECT GROUP_ID FROM USER_GROUP WHERE USER_ID = ? AND STATUS = 1) AND GI.TITLE NOT LIKE ? AND GI.PUBDATE > ?
Array ( [0] => 2 [1] => %2% [2] => 1789974732 )
Time: 0.0002269744873046875 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-4 )
Time: 8.916854858398438E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-37 )
Time: 3.600120544433594E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-202 )
Time: 4.982948303222656E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-687 )
Time: 3.290176391601562E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-1115 )
Time: 3.194808959960938E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-1138 )
Time: 4.911422729492188E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-1140 )
Time: 4.601478576660156E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-1149 )
Time: 3.910064697265625E-5 seconds.
SELECT PARENT_ID FROM GROUP_ITEM WHERE GROUP_ID=? AND USER_ID=? AND TITLE=? LIMIT 1
Array ( [0] => -1 [1] => 2 [2] => 2-1152 )
Time: 3.218650817871094E-5 seconds.
SELECT * FROM GROUP_ITEM WHERE ID=? LIMIT 1
Array ( [0] => 9376 )
Time: 9.799003601074219E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 4.506111145019531E-5 seconds.
SELECT COUNT(DISTINCT GI.ID) AS NUM FROM GROUP_ITEM GI, SOCIAL_GROUPS G, USER_GROUP UG, USERS O WHERE GI.PARENT_ID='9376' AND NOT LOWER(group_name) LIKE LOWER('Personal$%') AND (UG.USER_ID='2' OR G.REGISTER_TYPE IN ('4','3') ) AND GI.USER_ID=O.USER_ID AND GI.GROUP_ID=G.GROUP_ID AND GI.GROUP_ID=UG.GROUP_ID AND (( G.MEMBER_ACCESS IN ('2','3','4', '5')) OR (G.OWNER_ID = UG.USER_ID OR UG.USER_ID = '1'))
Time: 0.002547025680541992 seconds.
SELECT DISTINCT GI.ID AS ID, GI.PARENT_ID AS PARENT_ID, GI.GROUP_ID AS GROUP_ID, GI.TITLE AS TITLE, GI.DESCRIPTION AS DESCRIPTION, GI.FLAG AS FLAG, GI.PUBDATE AS PUBDATE, GI.EDIT_DATE AS EDIT_DATE, G.OWNER_ID AS OWNER_ID, G.MEMBER_ACCESS AS MEMBER_ACCESS, G.GROUP_NAME AS GROUP_NAME, P.USER_NAME AS USER_NAME, P.USER_ID AS USER_ID, GI.TYPE AS TYPE, GI.UPS AS UPS, GI.DOWNS AS DOWNS, G.VOTE_ACCESS AS VOTE_ACCESS FROM GROUP_ITEM GI, SOCIAL_GROUPS G, USER_GROUP UG, USERS P WHERE GI.PARENT_ID='9376' AND NOT LOWER(group_name) LIKE LOWER('Personal$%') AND (UG.USER_ID='2' OR G.REGISTER_TYPE IN ('4','3') ) AND GI.GROUP_ID=G.GROUP_ID AND GI.GROUP_ID=UG.GROUP_ID AND (( G.MEMBER_ACCESS IN ('2','3','4', '5')) OR (G.OWNER_ID = UG.USER_ID OR UG.USER_ID = '1')) AND GI.PARENT_ID NOT IN (SELECT DISCUSS_THREAD FROM GROUP_PAGE WHERE TITLE LIKE '%$$%' AND DISCUSS_THREAD IS NOT NULL) AND P.USER_ID = GI.USER_ID ORDER BY GI.PUBDATE ASC LIMIT 10 OFFSET 0
Time: 0.03304314613342285 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 0.0001709461212158203 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.694129943847656E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.978874206542969E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.002716064453125E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.503395080566406E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.217292785644531E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.406669616699219E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.287460327148438E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.287460327148438E-5 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.287460327148438E-5 seconds.
SELECT * FROM GROUP_ITEM WHERE ID=? LIMIT 1
Array ( [0] => 9376 )
Time: 0.0001230239868164062 seconds.
SELECT OPTIONS FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 4.601478576660156E-5 seconds.
SELECT STATUS FROM USERS WHERE USER_ID = ?
Array ( [0] => 2 )
Time: 0.0001039505004882812 seconds.
SELECT USER_NAME FROM USERS WHERE USER_ID = ?
Array ( [0] => 2 )
Time: 6.914138793945312E-5 seconds.
SELECT * FROM VISITOR WHERE ADDRESS = :address AND PAGE_NAME = :page_name LIMIT 1
Array ( [:address] => 216.73.216.124 [:page_name] => forbidden_time_out )
Time: 0.0001630783081054688 seconds.
SELECT COUNT(DISTINCT G.GROUP_ID) AS NUM FROM USER_GROUP UG, SOCIAL_GROUPS G WHERE UG.USER_ID = ? AND UG.GROUP_ID = G.GROUP_ID AND ( UG.STATUS = 1 OR UG.STATUS = 5)
Array ( [0] => 2 )
Time: 0.0003221035003662109 seconds.
SELECT G.GROUP_ID AS GROUP_ID FROM SOCIAL_GROUPS G WHERE G.GROUP_NAME = ?
Array ( [0] => Personal$2 )
Time: 0.0001189708709716797 seconds.
SELECT USER_ID FROM USER_GROUP WHERE GROUP_ID = ?
Array ( [0] => -1 )
Time: 5.793571472167969E-5 seconds.
SELECT G.GROUP_ID AS GROUP_ID, G.GROUP_NAME AS GROUP_NAME, G.OWNER_ID AS OWNER_ID, O.USER_NAME AS OWNER, REGISTER_TYPE, UG.STATUS AS STATUS, G.MEMBER_ACCESS AS MEMBER_ACCESS, G.VOTE_ACCESS AS VOTE_ACCESS, G.POST_LIFETIME AS POST_LIFETIME, UG.JOIN_DATE AS JOIN_DATE, G.OPTIONS AS OPTIONS, G.RENDER_ENGINE AS RENDER_ENGINE, G.GROUP_THEME AS GROUP_THEME, G.PAGE_HEADER AS PAGE_HEADER, G.PAGE_FOOTER AS PAGE_FOOTER FROM SOCIAL_GROUPS G, USERS O, USER_GROUP UG WHERE (UG.USER_ID = :user_id) AND UG.GROUP_ID= :group_id AND UG.GROUP_ID=G.GROUP_ID AND OWNER_ID = O.USER_ID LIMIT 1
Array ( [:group_id] => 303 [:user_id] => 2 )
Time: 0.0001819133758544922 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => -2 )
Time: 6.604194641113281E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.312660217285156E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.717971801757812E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.193450927734375E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.002716064453125E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 2.384185791015625E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.597404479980469E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.597404479980469E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.692771911621094E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.597404479980469E-5 seconds.
SELECT RENDER_ENGINE FROM SOCIAL_GROUPS WHERE GROUP_ID = ?
Array ( [0] => 303 )
Time: 1.406669616699219E-5 seconds.
SELECT G.GROUP_ID AS GROUP_ID, G.GROUP_NAME AS GROUP_NAME, G.OWNER_ID AS OWNER_ID, O.USER_NAME AS OWNER, REGISTER_TYPE, UG.STATUS AS STATUS, G.MEMBER_ACCESS AS MEMBER_ACCESS, G.VOTE_ACCESS AS VOTE_ACCESS, G.POST_LIFETIME AS POST_LIFETIME, UG.JOIN_DATE AS JOIN_DATE, G.OPTIONS AS OPTIONS, G.RENDER_ENGINE AS RENDER_ENGINE, G.GROUP_THEME AS GROUP_THEME, G.PAGE_HEADER AS PAGE_HEADER, G.PAGE_FOOTER AS PAGE_FOOTER FROM SOCIAL_GROUPS G, USERS O, USER_GROUP UG WHERE (UG.USER_ID = :user_id OR G.REGISTER_TYPE IN (3,4)) AND UG.GROUP_ID= :group_id AND UG.GROUP_ID=G.GROUP_ID AND OWNER_ID = O.USER_ID LIMIT 1
Array ( [:group_id] => 303 [:user_id] => 2 )
Time: 0.0002830028533935547 seconds.
SELECT STATUS FROM USER_GROUP WHERE USER_ID=? AND GROUP_ID=? LIMIT 1
Array ( [0] => 2 [1] => 303 )
Time: 6.604194641113281E-5 seconds.