Home >Documents >CHAO ZHANG MONGODB WITH DLVHEX. THE MONGODB INTRODUCTION TO MONGODB MongoDB is an open-source...

CHAO ZHANG MONGODB WITH DLVHEX. THE MONGODB INTRODUCTION TO MONGODB MongoDB is an open-source...

Date post:22-Dec-2015
Category:
View:216 times
Download:1 times
Share this document with a friend
Transcript:
  • Slide 1
  • CHAO ZHANG MONGODB WITH DLVHEX
  • Slide 2
  • THE MONGODB
  • Slide 3
  • INTRODUCTION TO MONGODB MongoDB is an open-source document database which provides high performance on big data. A record in MongoDB is a document, which is similar to JSON format, called BSON.
  • Slide 4
  • ADVANTAGE OF MONGODB JSON is native data type in many programming languages. Embedded documents and arrays instead of joins. Dynamic schema.
  • Slide 5
  • EMBEDDED VS NORMALIZED
  • Slide 6
  • MONGODB IS FAST AND SCALABLE Disk seeking and data locality
  • Slide 7
  • RELATIONSHIP WITH RDB
  • Slide 8
  • WORKING WITH MONGODB In the MongoDB we have the following data: { "name" : "Joe", "age" : 33, "gender" : "m" }, { "name" : "Jane", "age" : 40, "gender" : "f" }, { "name" : "Marry", "age" : 33, "gender" : "f" }, { "name" : "Methuselah", "age" : null }, { "name" : "Samantha", "age" : 21, "city" : "Los Angeles", "state" : "CA", "gender" : "f" }, { "name" : "Chris", "age" : 25, "gender" : "m" }, { "name" : "Mike", "age" : 34, "marriage" : true, "gender" : "m" }, { "name" : "Robot", "age" : 21, "birthday" : ISODate("2013-10- 02T01:11:53.976Z"), "gender" : "m" }, { "name" : "Josh", "age" : 29, "grades" : [ 90, 89, 85, 65, 88 ], "gender" : "m" }
  • Slide 9
  • INSERT DATA INTO MONGODB 1. Use Command: db.persons.insert() for one document every time. 2. Or Create a variable: var doc = [{},{},{}] db.persons.insert(doc) for multiple records
  • Slide 10
  • QUERY THE MONGODB Find all the person, whose age is less than 30, return the name. db.persons.find({age:{$lt:30}},{name:1,age:1, _id:0}) { "name" : "Samantha", "age" : 21 } { "name" : "Chris", "age" : 25 } { "name" : "Robot", "age" : 21 } { "name" : "Josh", "age" : 29 } Query Operation Output Operation Collection name & command
  • Slide 11
  • QUERY WITH ARRAY Find the grades of Josh db.persons.find({name:"Josh"},{grades:1,_id:0}) { "grades" : [ 90, 89, 85, 65, 88 ] }
  • Slide 12
  • EXAMPLE SENSOR DATA { "@id": "smart_ontology:record001", "@type": ["smart_ontology:Record"], "smart_ontology:startTime": ["1410114600", "2014-09-07T11:30:00-07:00], "smart_ontology:endTime": ["1410116400", "2014-09-07T12:00:00-07:00"], "smart_ontology:fromDevice": [ { "@id": "smart_ontology:phone1", "@type": ["smart_ontology:SmartPhone"], "smart_ontology:installedIn": [ { "@id": "smart_ontology:Alice", "@type": ["smart_ontology:User"] } ] } ], "smart_ontology:isValue": [ "run", "run", "run", "walk", "walk", "walk", "walk", "stay", "stay", "stay", "walk", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "stay", "walk", "walk", "walk" ] }
  • Slide 13
  • SENSOR DATA FROM BASIS
  • Slide 14
  • SLEEP DATA FROM BASIS
  • Slide 15
  • DLVHEX MONGODB PLUGIN
  • Slide 16
  • PLUGIN MODEL: - QUERY (1) &mongo_query[D, Q, P](Output) - D: database and collection name: eg: test.persons - Q: query criteria: eg: {age: {$lt: 30} - P: query result projection: eg: {name;gender} (should be separated by ;) result(NAME,GENDER) :- &mongo_query[">
  • Slide 17
  • PLUGIN MODEL: - QUERY(2) ARRAY If the mongo_query result is array, you should run mongo_array plugin to traverse the data in array. &mongo_array[A](Index, Value) - A: the input of an Array - Output: Index: the index number of one array item Value: the value of one array item result(NAME,GRADE) :- &mongo_query["test.persons","{grades:{$exists:1}}","name;grades "](NAME, GRADE). grade(NAME,I,G) :- &mongo_array[GRADE](I,G), result(NAME,GRADE),I=0.
  • Slide 18
  • PLUGIN MODEL: - INSERT &mongo_insert[D, K1, V1,[K2,V2]...]() - D: database and collection name: eg: test.persons - K: The field of JSON Element: eg: name - V: The value of JSON Element: eg: adam - The [K, V] should be paired, and can have as many as you want. success :- &mongo_insert["test.persons","name","adam","age","2 0","interest","CS"]().
  • Slide 19
  • EXAMPLE OF FALLING REASONING(1) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Part 1: Data Retrive from MongoDB %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The event of Falling has been detected % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% falling_time(T) :- &mongo_query["smart.example", "{'smart_ontology:isValue.0': 'fall'}", "smart_ontology:isTime.0"](T). thirty_minutes_before(T1) :- falling_time(T), T1 = T-1800. hour_before(T2) :- falling_time(T), T2 = T-3600. one_minute_before(T3) :- falling_time(T), T3 = T - 60.
  • Slide 20
  • EXAMPLE OF FALLING REASONING(2) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Get the movement data from smartphone sensor in the range % of 30 minutes before the falling down happened. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% movement_array(S,A) :- &mongo_query["smart.example", "{'smart_ontology:[email protected]':'smart_ontology:phone1', 'smart_ontology:startTime.0': {$lt: '$INPUT'}, 'smart_ontology:endTime.0': {$gt: '$INPUT'}}", "smart_ontology:isValue;smart_ontology:startTime.0", T,T](A,S), falling_time(T).
  • Slide 21 T, thirty_minutes_before(T).">
  • EXAMPLE OF FALLING REASONING(3) movement_array(S,A) :- &mongo_query["smart.example", "{'smart_ontology:[email protected]':'smart_ontology:phone1', 'smart_ontology:startTime.0': {$lt: '$INPUT'}, 'smart_ontology:endTime.0': {$gt: '$INPUT'}}", "smart_ontology:isValue;smart_ontology:startTime.0", T1,T1](A,S), thirty_minutes_before(T1). movement_total(S,I,V) :- &mongo_array[A](I,V), movement_array(S,A), V != "NULL. movement_in_30_minutes(T1,V) :- movement_total(S,I,V), T1= S+I1, I1 = I*60, T1 > T, thirty_minutes_before(T).
  • Slide 22
  • EXAMPLE OF FALLING REASONING(4) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Get the "insulin taken" and "eating" event data from % camera sensor in one hour before the falling down happened. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% take_insulin_time(T) :- &mongo_query["smart.example", "{'smart_ontology:[email protected]':'smart_ontology:Camera', 'smart_ontology:isValue.0':'take_insulin', 'smart_ontology:isTime.0': {$lt: '$INPUT'}, 'smart_ontology:isTime.0': {$gt: '$INPUT'}}}", "smart_ontology:isTime.0", T1, T2](T), falling_time(T1), hour_before(T2).
  • Slide 23 T1.">
  • EXAMPLE OF FALLING REASONING(5) eat_time(T) :- &mongo_query["smart.example", "{'smart_ontology:[email protected]':'smart_ontology:Camera', 'smart_ontology:isValue.0':'eat','smart_ontology:isTime.0': {$lt: '$INPUT'}, 'smart_ontology:isTime.0': {$gt: '$INPUT'}}}", "smart_ontology:isTime.0", T1, T2](T), falling_time(T1), hour_before(T2). eat_after_insulin_taken :- take_insulin_time(T1), eat_time(T), T > T1.
  • Slide 24
  • EXAMPLE OF FALLING REASONING(6) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Glucose testing was given every hour % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% glucose(T,V) :- &mongo_query["smart.example", "{'smart_ontology:[email protected]':'smart_ontology:glucose1','smart_ontology:isTime.0': {$lt: '$INPUT'}, 'smart_ontology:isTime.0': {$gt: '$INPUT'}}}", "smart_ontology:isTime.0;smart_ontology:isValue.0", T1, T2](T,V), falling_time(T1), hour_before(T2).
  • Slide 25
  • EXAMPLE OF FALLING REASONING(7) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Get the heart rate 1 minute before the falling down event %%%%%%%%%%%%%%%%%%%%%%%%%%%%% heart_rate_array(A) :- &mongo_query["smart.example", "{'smart_ontology:from[email protected]':'smart_ontology:heartrate1', 'smart_ontology:startTime.0': {$lt: '$INPUT'}, 'smart_ontology:endTime.0': {$gt: '$INPUT'}}", "smart_ontology:isValue", T,T](A), one_minute_before(T). heart_rate(I,V) :- &mongo_array[A](I,V), heart_rate_array(A), V != "NULL". not_newest_heart_rate(I,V) :- heart_rate(I,V), heart_rate(I1,V1), I < I1. newest_heart_rate(V) :- heart_rate(I,V), not not_newest_heart_rate(I,V).
  • Slide 26 50.">
  • EXAMPLE OF FALLING REASONING(8) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Part 2: Reasoning Task %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % If the activities of run is dominant in the previous 30 % minutes, the person has been activiated intensively. That % might be one reason of falling down. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% intensive_activity_possibility(Y1) :- &count[movement_in_30_minutes](X1), &count[movement_in_30_minutes,mask,"run"](X2), Y = X2*100, Y1 = Y/X1. reason_of_falling("intensive_activity") :- intensive_activity_possibility(Y), Y > 50.
  • Slide 27
  • EXAMPLE OF FALLING REASONING(9) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % If the person has low glucose level and not eat after the % insulin taking, or the use has two insulin taking in the % previous hour, the reason of falling might be "insulin shock" % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% reason_of_falling("insulin_shock") :- glucose(T,V), V< 50, not eat_after_insulin_taken. reason_of_falling("insulin_shock") :- glucose(T,V), V = 2.
  • Slide 28
  • EXAMPLE OF FALLING REASONING(10) %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % If the person has a heart attack that the heart almost stop % beating, the falling down reason would be "heart attack %%%%%%%%%%%%%%%%%%%%%%%%%%%%% reason_of_falling("heart_attack") :- newest_heart_rate(V), V < 20. %%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Insert the reasoning result back to the database % %%%%%%%%%%%%%%%%%%%%%%%%%%%%% insert_success:- &mongo_insert["smart.reasoning", "reason_of_falling", X](), reason_of_falling(X).
  • Slide 29
Popular Tags:

Click here to load reader

Embed Size (px)
Recommended