Title: Mitch Wand
1Navigation in Object Graphs
- Mitch Wand
- and
- Karl Lieberherr
2Searching 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.
3Search using meta information
- we could visit the entire object but that
- would be wasteful or
- might lead to wrong results
4Classes and Objects Basic Notations
e
c2
c1
Class c1 has a part e of type c2
c2
c1
Class c1 inherits from class c2
c1
o1c1
Object o1 is of class c1
c1
o1c1
c2
Object o1 is of type c2 (i.e., its class is a
subclass of c2)
e
o2
o1
Object o1 has a part e which is object o2
5Finding the first step for the search
C1
C2
ObjectGraph-object
o2
o1C1
o4
o3
Which arrows might lead to an object of type C2?
Traversal Strategy (// C1 C2)
6Relations between Classes
e
C2
C1
e(C1,C2)
C2
C1
C(C1,C2) (that is, e(C1,C2) for some e)
C2
C1
lt(C1,C2), gt(C2,C1)
C1
o1C1
Class(o1) C1
C1
o1C1
C2
Object o1 is of type C2 Class(o1) lt C2
7Relations between Objects
e
o2
o1
e(o1,o2)
o2
o1
O(o1,o2) (that is, e(o1,o2) for some e)
8Operations on Relations
- R.S (x,z) exists y s.t. R(x,y) and S(y,z)
- R reflexive, transitive closure of R
9Write graph in terms of relations
Set S,T,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
Relations are sets of pairs, ordering is
irrelevant.
Relations x,y,z,t,lt,gt x(S,X1) y(X2,Y2) z(
Y1,Z1) t(Z2,T) lt(Y2,Y1) lt(X2,X1) lt(X3,X2) gt(
X2,X3) gt(X1,X2) gt(Z1,Z2)
z
x
X1
Y1
Z1
T
y
t
X2
S
Y2
Z2
X3
Y3
Z3
10Possible edges in the object graph
e
C1
C2
e(o1, o2) implies class(o1) (lt .e .gt )
class(o2) in the class graph
up, over, and down
O(o1, o2) implies class(o1) (lt .C .gt )
class(o2) in the class graph
e
o1
o2
11Which 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) lt C2
C1
o1C1
o3
o2
e
The existential quantifier there is some object
graph represents our lack of knowledge about the
rest of the object graph
12Example
from Basket to Orange (from-to Basket Orange)
(// Basket Orange)
f
Fruit
Basket
Orange
class graph
v
Vegetable
Apple
premature termination
f
a1Apple
f
b1Basket
b1Basket
v
object graph
v1Vegetable
object graph slice
13Example
(// Basket Orange)
mapping o1 b1 o2 a1 o3 a1 e f
f
Fruit
Basket
Orange
class graph
v
Vegetable
Apple
f
a1Orange
b1Basket
object graph
v
object graph slice
v1Vegetable
14Example B1
strategy
from A via T to D (join (// A T) (// T D))
0..1
X
B
0..1
D
A
C
0..1
D
C
R
S
T
a1A
0..1
class graph
object graph
r1R
s1S
15Example B1
strategy
from A via T to D (join (// A T) (// T D))
0..1
X
B
0..1
D
A
C
0..1
object graph slice
D
C
R
S
T
a1A
0..1
class graph
object graph
r1R
s1S
16Example B2
strategy
from A via T to D (join (// A T) (// T D))
a1A
0..1
D
r1R
X
B
0..1
c1C
s1S
D
A
C
s2S
t1T
0..1
r2R
object graph
R
S
T
0..1
c2C
class graph
d2D
17Example B2
from A via T to D (join (// A T) (// T D))
strategy
object graph slice
a1A
0..1
D
r1R
X
B
0..1
c1C
s1S
D
A
C
s2S
t1T
0..1
r2R
object graph
R
S
T
0..1
c2C
class graph
d2D
18Lack of Knowledge
- Objects of a given class may be very different.
- We want to go down edges without looking ahead!
- We dont want to go down edges that are
guaranteed to be unsuccessful (never reaching a
target object).
19Object 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) (lt .e .gt ) class(o2)
in the class graph
20From 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) lt c2
- From o1 of class c1, follow edge e iff there are
classes c, c s.t. - c1 lt.e.gt c
- c (lt.C.gt) c and
- c lt c2
Let c be class(o2), c be class(o3)
21Example
static characterization
from Basket to Orange
f
Fruit
Basket
Orange
class graph
v
Vegetable
Apple
premature termination
f
a1Apple
f
b1Basket
b1Basket
v
object graph
v1Vegetable
object graph slice
22Example
static characterization
from Basket to Orange
mapping c1 Basket c Orange c Orange e f
f
Fruit
Basket
Orange
class graph
v
Vegetable
Apple
f
a1Orange
b1Basket
object graph
v
object graph slice
v1Vegetable
23Relational Formulation
from x1 to x2
From object o of class x1, to get to x2, follow
edges in the set POSS(x1,x2)e x1
lt.e.gt.(lt.C.gt).lt x2
Can easily compute these sets for every x1, x2
via transitive-closure algorithms. POSS
abbreviation for following these edges it is
still possible to reach a x2-object for some
x1-object rooted at o.
24Relational Formulation
from x1 to x2
From object o of class x1, to get to x2, follow
edges in the set POSS(x1,x2)e x1
lt.e.gt.(lt.C.gt).lt x2
- Simplification for class graphs obtained from hw
class graphs - POSS(x1,x2)e x1 e.gt.(C.gt).lt x2 (flat)
- up-over-and-down becomes over-and-down
- gt means only one edge
- lt means only one edge
-
25Negative formulation
Positive Formulation From object o of class x1,
to get to x2, follow edges e in the set
POSS(x1,x2)e x1 lt.e.gt.(lt.C.gt).lt x2
Build paths anyway you like but dont follow gt
(down) immediately after lt (up) and the first
has-a edge must have label e.
Edge kinds Is-a (down, up) Has-a
ok
down
up
down
up
Forbidden
ok
26Followed-by relationships
Followed by Is-a down gt Is-a up lt Has-a e, C
Is-a down yes yes yes
Is-a up NO yes yes
Has-a yes yes yes
27Linking the terminologies
program theory
-gtA,b,B Has-a over e, C
gt A,B Is-a in reverse down gt
gt A,B Is-a up lt
28Generalizations
- 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
29Examples
30Example A
z
Strategy S -gt T
x
X1
Y1
Z1
T
Relations x(S,X1) gt(X1,X2) y(X2,Y2) lt(Y2,Y1) z(
Y1,Z1) gt(Z1,Z2) t(Z2,T) lt(X2,X1) lt(X3,X2) gt(X2
,X3)
t
y
X2
S
Y2
Z2
X3
Y3
Z3
x
y
z
t
x31X3
y31Y3
z31Z3
t1T
s1S
go down x iff S and T are in relation lt.x.
gt.(lt.C.gt).lt
31Example A
z
Strategy S -gt T
x
X1
Y1
Z1
Relations x(S,X1) gt(X1,X2) y(X2,Y2) lt(Y2,Y1) z(
Y1,Z1) gt(Z1,Z2) t(Z2,T) lt(X2,X1)
T
t
y
X2
S
Y2
Z2
X3
Y3
Z3
x
y
z
t
x31X3
y31Y3
z31Z3
t1T
s1S
lt,gt not used
go down x iff S lt.x. gt.(lt.C.gt).lt T
32Example A
z
Strategy S -gt T
x
X1
Y1
Z1
T
Relations x(S,X1) gt(X1,X2) y(X2,Y2) lt(Y2,Y1) z(
Y1,Z1) gt(Z1,Z2) t(Z2,T) lt(X2,X1)
y
t
X2
S
Y2
Z2
X3
Y3
Z3
x
y
z
t
x31X3
y31Y3
z31Z3
t1T
s1S
lt,gt not used
go down x iff S lt.x. gt.(lt.C.gt.lt.C.gt.lt.Cgt).
lt T
33Just in terms of relations
Relations are sets of pairs, ordering is
irrelevant.
z
x
X1
Y1
Z1
T
y
t
X2
S
Y2
Z2
X3
Y3
Z3
Set S,T,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
34Write graph in terms of relations
Set S,T,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
Relations are sets of pairs, ordering is
irrelevant.
Relations x,y,z,t,lt,gt x(S,X1) y(X2,Y2) z(
Y1,Z1) t(Z2,T) lt(Y2,Y1) lt(X2,X1) lt(X3,X2) gt(
X2,X3) gt(X1,X2) gt(Z1,Z2)
z
x
X1
Y1
Z1
T
y
t
X2
S
Y2
Z2
X3
Y3
Z3
35Compose relations
Set S,T,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
Relations are sets of pairs, ordering is
irrelevant.
inheritance in reverse
Relations x,y,z,t,lt,gt x(S,X1) y(X2,Y2) z(Y1,Z1)
t(Z2,T) lt(Y2,Y1) lt(X2,X1) lt(X3,X2) gt(X2,X3)
gt(X1,X2) gt(Z1,Z2)
inheritance
Are S and T in the relation lt.x.
gt.(lt.C.gtlt.C.gt.lt.Cgt).lt
36Just in terms of relations
Set S,T,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
Relations are sets of pairs, ordering is
irrelevant.
The order in which we consume the pairs
Relations x,y,z,t,lt,gt x(S,X1) y(X2,Y2) z(Y1,Z1)
t(Z2,T) lt(Y2,Y1) lt(X2,X1) lt(X3,X2) gt(X2,X3)
gt(X1,X2) gt(Z1,Z2)
Relations x(S,X1) gt(X1,X2) y(X2,Y2) lt(Y2,Y1) z(
Y1,Z1) gt(Z1,Z2) t(Z2,T)
go down x iff S lt.x. gt.(lt.C.gtlt.C.gt.lt.Cgt).lt
T
37How big is the relation?
How many pairs does the relation contain in this
example?
lt.x. gt.(lt.C.gtlt.C.gt.lt.Cgt).lt
38What is disallowed?
E
Where can you go from A?
e
A
B
x
D
C
go down x iff S and T are in relation lt.x.
gt.(lt.C.gt).lt
39Example B
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 .
A -gt T T -gt D
0..1
POSS(x1,x2)e x1 e.C x2
X
B
0..1
D
A
C
0..1
D
C
R
S
T
A
0..1
class graph
object graph r
R
S
40Example B1
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 .
A -gt T T -gt D
POSS(A,T) 1 edge POSS(R,T) 1 edge POSS(S,T)
0 edges
0..1
X
B
0..1
D
A
C
0..1
D
C
R
S
T
a1A
0..1
class graph
object graph r
r1R
s1S
POSS(c1,c2)e c1 e.C c2
41Example B1
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 .
A -gt T T -gt D
POSS(A,T) 1 edge POSS(R,T) 1 edge POSS(S,T)
0 edges
0..1
X
B
0..1
D
A
C
0..1
object graph slice
D
C
R
S
T
a1A
0..1
class graph
object graph r
r1R
s1S
POSS(c1,c2)e c1 e.C c2
42Example B2
strategy
POSS(A,T) 1 edge POSS(R,T) 1 edge POSS(S,T)
1 edge POSS(T,D) 1 edge POSS(R,D) 1 edge
A -gt T T -gt D
object graph slice
a1A
0..1
D
r1R
X
B
0..1
c1C
s1S
D
A
C
s2S
t1T
0..1
object graph r t
r2R
R
S
T
0..1
c2C
class graph
d2D
POSS(c1,c2)e c1 e.C c2
43Example B2
strategy
POSS(A,T) 1 edge POSS(R,T) 1 edge POSS(S,T)
1 edge POSS(T,D) 1 edge POSS(R,D) 1 edge
A -gt T T -gt D
object graph slice
a1A
0..1
D
r1R
X
B
0..1
c1C
s1S
D
A
C
s2S
t1T
0..1
object graph r t
r2R
R
S
T
0..1
c2C
class graph
d2D
POSS(c1,c2)e c1 e.C c2
44Example C
Only node paths shown for space reasons
strategy SG A -gt B B -gt C
Object graph
Strategy s
t
A
A
B
C
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
OG A X R X C OG A X B X C SG A
B C
c2C
BOpt
c
c3C
C
45Example C
Write Java code that does the traversal
strategy A -gt B B -gt C
Object graph
Strategy s
t
A
A
B
C
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
c2C
BOpt
c
c3C
C
46Example C
Not the complete story
strategy A -gt B B -gt C
Object graph
From A to B
Strategy s
t
A
A
B
C
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
From B to C
c2C
BOpt
c
c3C
C
47Example C
Not the complete story traversal must look for
further B
strategy A -gt B B -gt C
Object graph
From A to B
Strategy s
t
A
A
B
C
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
From B to C
c2C
BOpt
c
c3C
C
48Example C
Not the complete story traversal must look for
further B
strategy A -gt B B -gt C
Object graph
From A to B
Strategy s
t
A
A
B
C
First B found
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
Premature Termination No more B
c2C
BOpt
c
c3C
C
49Example C1
Only node paths shown for space reasons
strategy SG A -gt S S -gt C
Object graph
early termination
Strategy s
t
A
A
S
C
x1X
class graph
S
e1Empty
R
R
A
x2X
B
Empty
x
c
x
c1C
X
b
OG A X R X OG A X B X SG A
B CG A X Bopt B X
c2C
BOpt
c
c3C
C
50Example D
S from BusRoute through Bus to Person
busStops
BusRoute
BusStopList
buses
0..
BusStop
NGasPowered
BusList
waiting
0..
passengers
Bus
PersonList
Person
0..
DieselPowered
51Example D1
OG BR BL DP PL P OG BR BL B PL P S BR
B P
Only node paths shown for space reasons
BusList
Route1BusRoute
buses
busStops
BusStopList
Bus15DieselPowered
passengers
CentralSquareBusStop
waiting
PersonList
PersonList
JoanPerson
PaulPerson
SeemaPerson
EricPerson
S from BusRoute through Bus to Person
52Example D2
OG BR BL OG BR BL S BR
Only node paths shown for space reasons
early termination
BusList
Route1BusRoute
buses
busStops
BusStopList
Bus15DieselPowered
passengers
CentralSquareBusStop
waiting
PersonList
PersonList
JoanPerson
PaulPerson
SeemaPerson
EricPerson
S from BusRoute via NGasPowered to Person
53Relational Formulation
from c1 bypassing x1,x2, ,xn to c2
From object o of class c1, to get to c2, follow
edges in the set POSS(c1,c2)e c1 lt.e.gt
(lt.C.gt) lt 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).
54Example D
S from BusRoute bybassing Bus to Person
busStops
BusRoute
BusStopList
buses
0..
BusStop
NGasPowered
BusList
waiting
0..
passengers
Bus
PersonList
Person
0..
DieselPowered
55Example D
S from BusRoute bybassing Bus to Person
busStops
BusRoute
BusStopList
buses
0..
BusStop
NGasPowered
BusList
waiting
PersonList
Person
0..
DieselPowered
56Conclusions
- Programming language elements are mathematical
objects having precise mathematical definitions. - Exercise in applying an abstract algorithm to
concrete inputs. Mapping abstract situations to
concrete situations. - 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 ...