1 / 24

Navigation in Object Graphs

Navigation in Object Graphs. Mitch Wand and Karl Lieberherr. Searching for Reachable Objects. Task: Given an object o1 in an object graph, find all objects of type c1 that are reachable from o1.

kirkan
Download Presentation

Navigation in Object Graphs

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Navigation in Object Graphs Mitch Wand and Karl Lieberherr

  2. Searching for Reachable Objects • Task: Given an object o1 in an object graph, find all objects of type c1 that are reachable from o1. • Assumptions: we know the class structure that describes the object graph, but we know nothing else about the object graph except the class of the current object.

  3. Classes and Objects: Basic Notations e c1 c2 Class c1 has a part e of type c2 c1 c2 Class c1 is an ancestor of class c2 o1 c1 Object o1 is of class c1 o1 c1 c2 Object o1 is of type c2 (i.e., its class is a subclass of c2) e o1 o2 Object o1 has a part e which is object o2

  4. Finding the first step for the search C1 C2 o2 o1 o4 o3 Which arrows might lead to an object of type C2?

  5. Relations between Classes e C1 C2 e(C1,C2) C1 C2 C(C1,C2) (that is, e(C1,C2) for some e) C1 C2 C1 <= C2 o1 C1 Class(o1) = C1 o1 C1 C2 Object o1 is of type C2: Class(o1) <= C2

  6. Relations between Objects e o1 o2 e(o1,o2) o1 o2 O(o1,o2) (that is, e(o1,o2) for some e) o1 c1 Class(o1) = c1 o1 c1 c2 Object o1 is of type c2: Class(o1) <= c2

  7. Operations on Relations • R.S = {(x,z) | exists y s.t. R(x,y) and S(y,z)} • R* = reflexive, transitive closure of R

  8. Possible edges in the object graph e C1 C2 e(o1, o2) implies class(o1) (<= .e .=> ) class(o2) in the class graph “up, over, and down” O(o1, o2) implies class(o1) (<= .C .=> ) class(o2) in the class graph e o1 o2

  9. Which edges to follow to C2? C2 • From o1 of class C1, follow edge e iff there is some object graph O and some o2, o3 s.t. • e(o1,o2), • O*(o2,o3), and • class(o3) <= C2 C1 o1 * o3 o2 e The existential represents our lack of knowledge about the rest of the object graph

  10. From dynamic to static characterization • From o1 of class c1, follow edge e iff there is some object graph O and some o2, o3 s.t. • e(o1,o2), • O*(o2,o3), and • class(o3) <= c2 • From o1 of class c1, follow edge e iff there are classes c’, c’’ s.t. • c1 <=.e.=> c’ • c’ (<=.C.=>)* c’’ and • c’’ <= c2 Let c’ be class(o2), c’’ be class(o3)

  11. Relational Formulation From object o of class c1, to get to c2, follow edges in the set {e | c1 <=.e.=> (<=.C.=>)* <= c2 } Can easily compute these sets for every c1, c2 via transitive-closure algorithms.

  12. Generalizations • More complex strategies • “to c1 then to c2 then to c3” • Use “waypoint navigation”; get to a c2 object, then search for a c3 object. • Strategy graphs (a la Lieberherr) also doable in this framework

  13. Extra Slides

  14. z Strategy S -> T x X1 Y1 Z1 y S X2 Y2 Z2 T t X3 Y3 Z3 x y z t s1:S x31:X3 y31:Y3 z31:Z3 t1:T go down e iff S <=.C C3 =>.(<=.C.=>)*.<=) T

  15. z Strategy S -> T x X1 Y1 Z1 y S X2 Y2 Z2 T t X3 Y3 Z3 x y z t s1:S x31:X3 y31:Y3 z31:Z3 t1:T go down e iff S <=.C X1 =>.(<=.C.=>)*.<=) T

  16. z Strategy S -> T x X1 Y1 Z1 y S X2 Y2 Z2 T t X3 Y3 Z3 x y z t s1:S x31:X3 y31:Y3 z31:Z3 t1:T <=,=> not used go down e iff S <=.C X1 =>.(<=.C.=><=.C.=><=.C=>).<=) T

  17. class dictionary strategy A = [“x” X] [“r” R]. B = [“b” B] D. R = S. S = [“t” T] C C = D. X = B. T = R. D = . Example A -> T T -> D 0..1 X 0..1 B D A C 0..1 :D :C R S T :A 0..1 class graph object graph “r” :R :S

  18. class dictionary strategy A = [“x” X] [“r” R]. B = [“b” B] D. R = S. S = [“t” T] C C = D. X = B. T = R. D = . Example A -> T T -> D POSS(A,T,a1) = 1 edge POSS(R,T,r1) = 1 edge POSS(S,T,s1) = 0 edges 0..1 X 0..1 B D A C 0..1 :D :C R S T a1:A 0..1 class graph object graph “r” r1:R s1:S

  19. class dictionary strategy A = [“x” X] [“r” R]. B = [“b” B] D. R = S. S = [“t” T] C C = D. X = B. T = R. D = . Example A -> T T -> D POSS(A,T,a1) = 1 edge POSS(R,T,r1) = 1 edge POSS(S,T,s1) = 1 edge 0..1 X 0..1 B D A C c2:C d2:D 0..1 :D c1:C R S T a1:A 0..1 class graph r1:R s1:S t1:T r2:R

  20. Only node paths shown for space reasons Example 1 strategy: {A -> B B -> C} Object graph Strategy s t :A A B C x1:X class graph S e1:Empty :R R A x2:X Empty B x c x c1:C X b OG : A X R X C OG’: A X B X C SG : A B C (CG: A X Bopt B X C) c2:C BOpt c c3:C C

  21. Only node paths shown for space reasons Example 1A strategy: {A -> S S -> C} Object graph early termination Strategy s t :A A S C x1:X class graph S e1:Empty :R R A x2:X Empty B x c x c1:C X b OG : A X R X OG’: A X B X SG : A B (CG: A X Bopt B X) c2:C BOpt c c3:C C

  22. S = from BusRoute through Bus to Person Example 2 busStops BusRoute BusStopList buses 0..* NGasPowered BusStop BusList waiting 0..* passengers Bus PersonList Person 0..* DieselPowered

  23. OG : BR BL DP PL P OG’: BR BL B PL P SG : BR B P Example 2 Only node paths shown for space reasons BusList Route1:BusRoute buses busStops :BusStopList Bus15:DieselPowered passengers CentralSquare:BusStop waiting :PersonList :PersonList Joan:Person Paul:Person Seema:Person Eric:Person S = from BusRoute through Bus to Person

  24. OG : BR BL OG’: BR BL SG : BR Example 3 Only node paths shown for space reasons early termination BusList Route1:BusRoute buses busStops :BusStopList Bus15:DieselPowered passengers CentralSquare:BusStop waiting :PersonList :PersonList Joan:Person Paul:Person Seema:Person Eric:Person S = from BusRoute via NGasPoweredto Person

More Related