1 / 38

Navigation in Object Graphs

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

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 Navigation in Object Graphs

  2. Searching for Reachable Objects • Task: Given an object o1 of class c1 in an object graph, find all objects of type c2 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. Navigation in Object Graphs

  3. Classes and Objects: Basic Notations e c1 c2 Class c1 has a part e of type c2 c1 c2 Class c1 inherits from class c2 o1:c1 c1 Object o1 is of class c1 o1:c1 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 Navigation in Object Graphs

  4. Finding the first step for the search C1 C2 ObjectGraph-object o2: o1:C1 o4: o3: Which arrows might lead to an object of type C2? Traversal Strategy: from C1 to C2 Navigation in Object Graphs

  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 C1 Class(o1) = C1 o1:C1 C1 C2 Object o1 is of type C2: Class(o1) <= C2 Navigation in Object Graphs

  6. Relations between Objects e o1: o2: e(o1,o2) o1: o2: O(o1,o2) (that is, e(o1,o2) for some e) Navigation in Object Graphs

  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 Navigation in Object Graphs

  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: Navigation in Object Graphs

  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:C1 * o3: o2: e The existential quantifier “there is some object graph” represents our lack of knowledge about the rest of the object graph Navigation in Object Graphs

  10. from Basket to Orange Example f Fruit Basket Orange class graph v Vegetable Apple premature termination f a1:Apple f b1:Basket b1:Basket v object graph v1:Vegetable object graph slice Navigation in Object Graphs

  11. from Basket to Orange mapping: o1 b1 o2 a1 o3 a1 e f Example f Fruit Basket Orange class graph v Vegetable Apple f a1:Orange b1:Basket object graph v v1:Vegetable Navigation in Object Graphs

  12. Lack of Knowledge • Objects of a given class may be very different. • We want to go down edges without looking ahead! • We don’t want to go down edges that are guaranteed to be unsuccessful (never reaching a target object). Navigation in Object Graphs

  13. Object graph conforms to class graph • The object graph O must follow the rules of the class graph: the object graph cannot contain more information than the class graph allows. For all edges e(o1,o2) in the object graph: e(o1, o2) implies class(o1) (<= .e .=> ) class(o2) in the class graph Navigation in Object Graphs

  14. 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) Navigation in Object Graphs

  15. from c1 to c2 Relational Formulation From object o of class c1, to get to c2, follow edges in the set POSS(c1,c2,o)={e | c1 <=.e.=> (<=.C.=>)* <= c2 } Can easily compute these sets for every c1, c2 via transitive-closure algorithms. POSS = abbreviation for: following these edges it is still possible to reach a c2-object for some c1-object rooted at o. Navigation in Object Graphs

  16. Generalizations • More complex strategies • “from c1 through c2 to c3” • Use “waypoint navigation”; get to a c2 object, then search for a c3 object. • More complex strategy graphs also doable in this framework Navigation in Object Graphs

  17. Traversal algorithms • Rename POSS to FIRST. • Applications of FIRST for strategies of the form : from c1 through c2 through … to ck. Navigation in Object Graphs

  18. Definition of R-path • Let R = (c1, … ,ck) be a non-empty sequence of classes. Let p = (o1, … , oN) be a path in O. We say that p is an R-path iff there is a subsequence oj1, … ,ojk of p such that for each i, oji has type ci and jk=N, (that is the last element of the path must be a part of the subsequence). Navigation in Object Graphs

  19. Minimal R-paths • We say that an R-path is minimal iff it has no initial segment that is also an R-path. Navigation in Object Graphs

  20. Algorithm search(o,R)(visit all endpoints of minimal R-paths) Let (c1, … ,cn) be the classes such that R = (c1, … ,cn). 1. If o does not have type c1, then for each e in FIRST(class(o), c1) and each o’ such that e(o,o’), do search(o’, R). 2. If o has type c1, and R=(c1), then do visit(o). 3. If o has type c1, and R=(c1, c2, … ,cn), then do search(o,(c2, … ,cn)). Navigation in Object Graphs

  21. Cyclic and acyclic object graphs • If the object graph is acyclic, algorithm search will terminate, since every step either decreases the longest chain of links in the object graph or decreases the length of R. • If the object graph is cyclic, then we need to mark each searched object with the state R in which it was reached (to not visit it again in the same state). Navigation in Object Graphs

  22. Extra Slides Navigation in Object Graphs

  23. Example A 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 x iff S <=.x. =>(<=.C.=>)*<=) T Navigation in Object Graphs

  24. Example A 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 x iff S <=.x. =>.(<=.C.=>)*.<=) T Navigation in Object Graphs

  25. Example A 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 x iff S <=.x. =>.(<=.C.=><=.C.=><=.C=>).<=) T Navigation in Object Graphs

  26. 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 B A -> T T -> D 0..1 POSS(c1,c2,o)={e | c1 e.C* c2 } X 0..1 B D A C 0..1 :D :C R S T :A 0..1 class graph object graph “r” :R :S Navigation in Object Graphs

  27. 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 B1 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 POSS(c1,c2,o)={e | c1 e.C* c2 } Navigation in Object Graphs

  28. 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 B1 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 object graph slice :D :C R S T a1:A 0..1 class graph object graph “r” r1:R s1:S POSS(c1,c2,o)={e | c1 e.C* c2 } Navigation in Object Graphs

  29. strategy POSS(A,T,a1) = 1 edge POSS(R,T,r1) = 1 edge POSS(S,T,s1) = 1 edge POSS(T,D,t1) = 1 edge POSS(R,D,r2) = 1 edge Example B2 A -> T T -> D object graph slice a1:A 0..1 :D r1:R X 0..1 B c1:C s1:S D A C s2:S t1:T 0..1 object graph “r t” r2:R R S T 0..1 c2:C class graph d2:D POSS(c1,c2,o)={e | c1 e.C* c2 } Navigation in Object Graphs

  30. Only node paths shown for space reasons Example C strategy SG: {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 c2:C BOpt c c3:C C Navigation in Object Graphs

  31. Only node paths shown for space reasons Example C1 strategy SG: {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 Navigation in Object Graphs

  32. S = from BusRoute through Bus to Person Example D busStops BusRoute BusStopList buses 0..* NGasPowered BusStop BusList waiting 0..* passengers Bus PersonList Person 0..* DieselPowered Navigation in Object Graphs

  33. OG : BR BL DP PL P OG’: BR BL B PL P S : BR B P Example D1 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 Navigation in Object Graphs

  34. OG : BR BL OG’: BR BL S : BR Example D2 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 Navigation in Object Graphs

  35. from c1 bypassing {x1,x2, … ,xn} to c2 Relational Formulation From object o of class c1, to get to c2, follow edges in the set POSS(c1,c2,o)={e | c1 <=.e.=> (<=.C.=>)* <= c2 } POSS = abbreviation for: following these edges it is still possible to reach a c2-object for some c1-object rooted at o. Delete x1,x2, … ,xn and all edges incident with these nodes from the class graph (assumed to be different from c1, c2). Navigation in Object Graphs

  36. S = from BusRoute bybassing Bus to Person Example D busStops BusRoute BusStopList buses 0..* NGasPowered BusStop BusList waiting 0..* passengers Bus PersonList Person 0..* DieselPowered Navigation in Object Graphs

  37. S = from BusRoute bybassing Bus to Person Example D busStops BusRoute BusStopList buses 0..* NGasPowered BusStop BusList waiting PersonList Person 0..* DieselPowered Navigation in Object Graphs

  38. Conclusions • Separation of concerns is also useful for defining programming language elements • separate subgraph selected from • how the subgraph is traversed (depth-first etc.) • In earlier works: meaning of a traversal strategy for an object graph • was a traversal history • now it is a subgraph of the object graph. A traversal history can be defined ... Navigation in Object Graphs

More Related