BIM-Spatial Reasoning using CLP & Other Research Topics Joaqu´ ın Arias Herrero 10 Oct 2019
Outline. About me (C)LP BIM-Spatial Research Bibliography • About me. • Introduction to (Constraint) Logic Programming (CLP). • BIM-Spatial reasoning using CLP. • Other Research Topics: • TCLP: a generic Tabled CLP framework. • s(CASP): a non-monotonic reasoner. 2 / 17
About me. About me (C)LP BIM-Spatial Research Bibliography 1993-2002 Architect 2011-2015 Computer Science 1999-2000 RWTH-Aachen 2015- PhD in DSSC Summer’17 UTD-Dallas Summer’19 A!-Helsinki 1993-1999 Madrid Summer’95 Belo Horizonte 2000-2005 Marbella 2013- Madrid (IMDEA Software) 2005-2008 Estepona Summer’19 Helsinki (VisuaLynk) 2008-2009 Bucarest 2009- Madrid (Freelance Arch.) 3 / 17
About me. About me (C)LP BIM-Spatial Research Bibliography 1993-2002 Architect 2011-2015 Computer Science 1999-2000 RWTH-Aachen 2015- PhD in DSSC Summer’17 UTD-Dallas 2010 & 2015 Summer’19 A!-Helsinki 1993-1999 Madrid I love biking Summer’95 Belo Horizonte 2000-2005 Marbella 2013- Madrid (IMDEA Software) 2005-2008 Estepona Summer’19 Helsinki (VisuaLynk) 2008-2009 Bucarest 2009- Madrid (Freelance Arch.) 3 / 17
About me (C)LP BIM-Spatial Research Bibliography (Constraint) Logic Programming 4 / 17
(Constraint) Logic Programming. About me (C)LP BIM-Spatial Research Bibliography • It is a high level language rooted in logic and constraint: • The language makes it easier to maintenance the programs. • The constraint prunes the search space in early stages. • TCLP makes it possible to reuse previous results during execution of CLP programs. • s(CASP) supports logic programs with negation (both default and classical). 5 / 17
(Constraint) Logic Programming. About me (C)LP BIM-Spatial Research Bibliography • It is a high level language rooted in logic and constraint: • The language makes it easier to maintenance the programs. • The constraint prunes the search space in early stages. • TCLP makes it possible to reuse previous results during execution of CLP programs. • s(CASP) supports logic programs with negation (both default and classical). • Reduces code size & complexity. • Etalis [Anicic et al. 2010] 2,500 lines of code instead of 150,000 with SQL. • Yedalog by Google [Chin et al. 2015] 70% fewer lines of code than with C++. 5 / 17
(C)LP: Introduction I. About me (C)LP BIM-Spatial • Is based on 1 st order logic [Socrates, -399] . Research Bibliography ∀ x . man ( x ) → mortal ( x ) 6 / 17
(C)LP: Introduction I. About me (C)LP BIM-Spatial • Is based on 1 st order logic [Socrates, -399] . Research Bibliography ∀ x . man ( x ) → mortal ( x ) • You write logical specifications of searches and get them executed. mortal(X) :- man(X). % X is mortal if X is a man. 1 man(socrates). % Socrates is a man. 2 ?- mortal(socrates). % Is Socrates mortal? 6 / 17
(C)LP: Introduction I. About me (C)LP BIM-Spatial • Is based on 1 st order logic [Socrates, -399] . Research Bibliography ∀ x . man ( x ) → mortal ( x ) • You write logical specifications of searches and get them executed. mortal(X) :- man(X). % X is mortal if X is a man. 1 man(socrates). % Socrates is a man. 2 ?- mortal(socrates). % Is Socrates mortal? • Passive vs Active Constraints % Search and filter % Prune the search ?- age(X,A), A > 18. ?- A #> 18, age(X,A). 6 / 17
(C)LP: Introduction II. About me (C)LP % append(X,Y,Z) true if X concatenated with Y is Z 1 BIM-Spatial append([X | Xs], Ys, [X | Zs]) :- append(Xs, Ys, Zs). 2 Research append([], Ys, Ys ). 3 Bibliography ?- append([1],[2,3], X). X = [1,2,3] ? 7 / 17
(C)LP: Introduction II. About me (C)LP % append(X,Y,Z) true if X concatenated with Y is Z ?- append(X, Y, [1,2,3]). 1 BIM-Spatial append([X | Xs], Ys, [X | Zs]) :- append(Xs, Ys, Zs). 2 Research append([], Ys, Ys ). 3 Bibliography ?- append([1],[2,3], X). X = [1,2,3] ? 7 / 17
(C)LP: Introduction II. About me (C)LP % append(X,Y,Z) true if X concatenated with Y is Z ?- append(X, Y, [1,2,3]). 1 BIM-Spatial append([X | Xs], Ys, [X | Zs]) :- append(Xs, Ys, Zs). 2 Research append([], Ys, Ys ). X = [], Y = [1,2,3] ?; 3 Bibliography X = [1], Y = [2,3] ?; X = [1,2], Y = [3] ?; ?- append([1],[2,3], X). X = [1,2,3], Y = [] ? X = [1,2,3] ? 7 / 17
(C)LP: Introduction II. About me (C)LP % append(X,Y,Z) true if X concatenated with Y is Z ?- append(X, Y, [1,2,3]). 1 BIM-Spatial append([X | Xs], Ys, [X | Zs]) :- append(Xs, Ys, Zs). 2 Research append([], Ys, Ys ). X = [], Y = [1,2,3] ?; 3 Bibliography X = [1], Y = [2,3] ?; X = [1,2], Y = [3] ?; ?- append([1],[2,3], X). X = [1,2,3], Y = [] ? X = [1,2,3] ? However , CLP loops due: • Left recursion: path(A,B) :- path(A,Z), edge(Z,B). 1 path(A,B) :- edge(A,B). 2 • Non-stratified negation: p(X) :- not q(X). 1 q(X) :- not p(X). 2 7 / 17
(C)LP: Introduction II. About me (C)LP % append(X,Y,Z) true if X concatenated with Y is Z ?- append(X, Y, [1,2,3]). 1 BIM-Spatial append([X | Xs], Ys, [X | Zs]) :- append(Xs, Ys, Zs). 2 Research append([], Ys, Ys ). X = [], Y = [1,2,3] ?; 3 Bibliography X = [1], Y = [2,3] ?; X = [1,2], Y = [3] ?; ?- append([1],[2,3], X). X = [1,2,3], Y = [] ? X = [1,2,3] ? However , CLP loops due: Other Research Topics: • Tabled CLP • Left recursion: [PADL’16, TLPL’19] • Suspends subsumed calls & reuses answers. path(A,B) :- path(A,Z), edge(Z,B). 1 • Improves termination and efficiency. path(A,B) :- edge(A,B). 2 • Non-stratified negation: • s(CASP) [TLPL’18] • Goal directed ASP (w.o. grounding). p(X) :- not q(X). 1 q(X) :- not p(X). • c-forall/2 handles constraints. 2 7 / 17
(C)LP: DEMO. About me (C)LP BIM-Spatial Research Bibliography 8 / 17
About me (C)LP BIM-Spatial Research Bibliography BIM-Spatial Reasoning using CLP 9 / 17
BIM-Spatial Reasoning using CLP. About me • Motivation : Spatial, ontology and logic queries for BIM models. (C)LP BIM-Spatial • BIM-Spatial detects spatial semantics relationships in/between models... Research ...providing a unique formalism to combine the different semantics. Bibliography 10 / 17
BIM-Spatial Reasoning using CLP. About me • Motivation : Spatial, ontology and logic queries for BIM models. (C)LP BIM-Spatial • BIM-Spatial detects spatial semantics relationships in/between models... Research ...providing a unique formalism to combine the different semantics. Bibliography Additionally: • The spatial constraint model is n -dimensional... interval(point(Xa), point(Xb), Sh) :- Sh = shape([X], [X #>= Xa,X #< Xb]). 1 rectangle(point(Xa,Ya), point(Xb,Yb), Sh):- Sh = shape([X,Y], [X #>= Xa,X #< Xb, Y #>= Ya,Y #< Yb]). 2 box(point(Xa,Ya,Za), point(Xb,Yb,Zb), Sh):- Sh = shape([X,Y,Z], [X #>= Xa,X #< Xb, ...). 3 10 / 17
BIM-Spatial Reasoning using CLP. About me • Motivation : Spatial, ontology and logic queries for BIM models. (C)LP BIM-Spatial • BIM-Spatial detects spatial semantics relationships in/between models... Research ...providing a unique formalism to combine the different semantics. Bibliography Additionally: • The spatial constraint model is n -dimensional... interval(point(Xa), point(Xb), Sh) :- Sh = shape([X], [X #>= Xa,X #< Xb]). 1 rectangle(point(Xa,Ya), point(Xb,Yb), Sh):- Sh = shape([X,Y], [X #>= Xa,X #< Xb, Y #>= Ya,Y #< Yb]). 2 box(point(Xa,Ya,Za), point(Xb,Yb,Zb), Sh):- Sh = shape([X,Y,Z], [X #>= Xa,X #< Xb, ...). 3 ...the extra dimensions can be used to represent, e.g., movement, change or progress. 10 / 17
BIM-Spatial Reasoning using CLP. About me • Motivation : Spatial, ontology and logic queries for BIM models. (C)LP BIM-Spatial • BIM-Spatial detects spatial semantics relationships in/between models... Research ...providing a unique formalism to combine the different semantics. Bibliography Additionally: • The spatial constraint model is n -dimensional... interval(point(Xa), point(Xb), Sh) :- Sh = shape([X], [X #>= Xa,X #< Xb]). 1 rectangle(point(Xa,Ya), point(Xb,Yb), Sh):- Sh = shape([X,Y], [X #>= Xa,X #< Xb, Y #>= Ya,Y #< Yb]). 2 box(point(Xa,Ya,Za), point(Xb,Yb,Zb), Sh):- Sh = shape([X,Y,Z], [X #>= Xa,X #< Xb, ...). 3 ...the extra dimensions can be used to represent, e.g., movement, change or progress. • We can construct new objects using: • Complementary, union, intersection, subtraction... 10 / 17
BIM-Spatial: Implementation I. About me (C)LP BIM-Spatial % Intersection: ShInt = Sh1s ∧ Sh2 intersect_shapes([shape(Vars,Geo1)], 1 13 Research shape_intersect(Sh1s, Sh2s, ShInt) :- [shape(Vars,Geo2)],ShInt):- 2 14 Bibliography shape_intersect_(Sh1s, Sh2s, [], ShInt). copy_term([Vars,Geo1,Geo2],[CVars,CGeo1,CGeo2]), 3 15 ( apply_clp_constraints(CGeo1), 4 16 shape_intersect_([],_,ShInt,ShInt) :- !. apply_clp_constraints(CGeo2) - > 5 17 shape_intersect_(_,[],ShInt,ShInt) :- !. dump_clp_constraints(CVars, Vars, GeoInt), 6 18 shape_intersect_([Sh1|Sh1s],[Sh2|Sh2s], ShInt = [shape(Vars,GeoInt)] 7 19 ShInt0,ShInt):- ; ShInt = [] 8 20 intersect_shapes([Sh1], [Sh2], Sh12), ). 9 21 % Union: ShUnion = Sh1s ∨ Sh2s shape_union(ShInt0,Sh12,ShInt1), 10 22 shape_intersect_([Sh1], Sh2s, ShInt1,ShInt2), shape_union(Sh1s, Sh2s, ShUnions) :- 11 23 shape_intersect_(Sh1s,[Sh2|Sh2s],ShInt2,ShInt). append(Sh1s, Sh2s, ShUnions). 12 24 11 / 17
Recommend
More recommend