Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% Space Syntax with Prolog % Pedro Afonso Fernandes (paf@ucp.pt) % March 2021 % Knowledge base: Portela urbanization (Sacavem - Loures near Lisbon, Portugal) connected(av_descobrimentos_W,av_republica,1). connected(av_descobrimentos_W,rua_fernao_magalhaes,1). connected(av_descobrimentos_W,rua_gonc_zarco,1). connected(av_descobrimentos_W,rua_pedro_alvares_cabral,1). connected(av_descobrimentos_W,rua_bartolomeu_dias,1). connected(av_descobrimentos_W,rua_diogo_cao,1). connected(av_descobrimentos_W,rua_inf_dom_henrique,1). connected(av_descobrimentos_W,av_descobrimentos_S,1). connected(av_descobrimentos_W,circ_NW,1). connected(av_descobrimentos_W,circ_SW,1). connected(av_republica,pcta_jose_relvas,1). connected(av_republica,circ_W,1). connected(av_republica,rua_palmira_bastos,1). connected(av_republica,rua_mouzinho_albuquerque,1). connected(av_republica,rua_amelia_rey_colaco,1). connected(av_republica,clube,1). connected(av_republica,rua_atores_circ,1). connected(av_republica,rua_vasco_santana,1). connected(av_republica,circ_E,1). connected(av_republica,rua_atores_E,1). connected(av_republica,rua_escritores,1). connected(av_republica,rua_teofilo_braga,1). connected(av_republica,av_escolas_E,1). connected(av_escolas_NE,av_escolas_N,1). connected(av_escolas_NE,rua_atores_E,1). connected(av_escolas_NE,edif_gabriel,1). connected(av_escolas_NE,rua_teofilo_braga,1). connected(av_escolas_NE,av_escolas_E,1). connected(circ_N,av_escolas_E,1). connected(circ_N,rua_teofilo_braga,1). connected(edif_gabriel,rua_atores_E,1). connected(edif_gabriel,rua_atores_circ,1). connected(rua_atores_N,rua_palmira_bastos,1). connected(rua_atores_N,rua_mouzinho_albuquerque,1). connected(rua_atores_N,rua_amelia_rey_colaco,1). connected(rua_atores_N,rua_atores_circ,1). connected(rua_atores_N,rua_vasco_santana,1). connected(rua_atores_N,rua_atores_E,1). connected(av_escolas_N,rua_palmira_bastos,1). connected(av_escolas_N,rua_mouzinho_albuquerque,1). connected(av_escolas_N,rua_amelia_rey_colaco,1). connected(av_escolas_N,rua_atores_circ,1). connected(rotunda_NW,rua_mouzinho_albuquerque,1). connected(rotunda_NW,rotunda_NE,1). connected(rotunda_NW,escada_W,1). connected(rotunda_NW,rotunda_SW,1). connected(rotunda_NE,rua_mouzinho_albuquerque,1). connected(rotunda_NE,escada_NE,1). connected(rotunda_NE,rotunda_SE,1). connected(escada_NE,clube,1). connected(rotunda_SE,jardim,1). connected(rotunda_SE,igreja_N,1). connected(rotunda_SE,rua_brasil,1). connected(rotunda_SE,rotunda_SW,1). connected(rotunda_SW,escada_W,1). connected(rotunda_SW,rua_brasil,1). connected(igreja_S,igreja_N,1). connected(igreja_S,av_descobrimentos_S,1). connected(pcta_naus,av_descobrimentos_S,1). connected(circ_W,av_descobrimentos_S,1). connected(rua_sao_paulo_W,av_descobrimentos_S,1). connected(rua_brasil,av_descobrimentos_S,1). connected(circ_E,av_descobrimentos_S,1). connected(rua_escritores,av_descobrimentos_S,1). connected(parque_urbano,av_descobrimentos_S,1). connected(av_descobrimentos_E,av_descobrimentos_S,1). connected(circ_W,rua_gonc_zarco,1). connected(circ_W,escada_W,1). connected(circ_W,rua_bartolomeu_dias,1). connected(circ_W,rua_diogo_cao,1). connected(circ_E,jardim,1). connected(rua_escritores,rua_luis_de_camoes,1). connected(rua_escritores,circ_NE,1). connected(rua_escritores,rua_julio_dinis,1). connected(rua_escritores,jardim,1). connected(rua_escritores,circ_SE,1). connected(rua_escritores,rua_eca_de_queiros,1). connected(parque_urbano,circ_NE,1). connected(parque_urbano,rua_julio_dinis,1). connected(parque_urbano,circ_SE,1). connected(parque_urbano,rua_eca_de_queiros,1). connected(rua_brasil,rua_seminario,1). connected(rua_brasil,pcta_ipanema,1). connected(rua_brasil,rua_sao_paulo_S,1). connected(rua_brasil,pcta_copacabana,1). connected(rua_brasil,rua_rio_janeiro_S,1). connected(rua_brasil,estrada_circunvalacao,1). connected(pcta_naus,estrada_circunvalacao,1). connected(rua_sao_paulo_W,rua_sao_paulo_S,1). connected(rua_rio_janeiro_E,pcta_ipanema,1). connected(rua_rio_janeiro_E,pcta_copacabana,1). connected(rua_rio_janeiro_E,rua_rio_janeiro_S,1). connected(rua_seminario,pcta_papa_joao_xxi,1). connected(rua_seminario,pcta_rainha_sta_isabel,1). connected(rua_seminario,pcta_sao_luis,1). connected(rua_seminario,seminario,1). connected(rua_seminario,pcta_sao_pedro,1). connected(rua_seminario,pcta_sao_joao,1). connected(rua_seminario,pcta_sto_antonio,1). connected(rua_seminario,av_descobrimentos_E,1). connected(av_descobrimentos_S,pcta_papa_joao_xxi,1). connected(av_descobrimentos_S,pcta_rainha_sta_isabel,1). connected(av_descobrimentos_S,pcta_sao_luis,1). connected(av_descobrimentos_S,pcta_sao_pedro,1). connected(av_descobrimentos_S,pcta_sao_joao,1). connected(av_descobrimentos_S,pcta_sto_antonio,1). % Space Syntax measures: adjacent(X,Y,1):-connected(X,Y,1). adjacent(X,Y,1):-connected(Y,X,1). connectivity(X,Y,AC):-aggregate_all(count,adjacent(X,Y,1),AC). control(X,Y,E):-aggregate_all(sum(G),(adjacent(X,Z,1),connectivity(Z,Y,AC),G is 1/AC),E). depth(X,Y,1):-adjacent(X,Y,1). depth(X,Y,2):-adjacent(X,Z,1),depth(Z,Y,1),dif(X,Y). depth(X,Y,3):-adjacent(X,Z,1),depth(Z,Y,2),dif(X,Y). depth(X,Y,4):-adjacent(X,Z,1),depth(Z,Y,3),dif(X,Y). depth(X,Y,5):-adjacent(X,Z,1),depth(Z,Y,4),dif(X,Y). depth(X,Y,6):-adjacent(X,Z,1),depth(Z,Y,5),dif(X,Y). depth(X,Y,7):-adjacent(X,Z,1),depth(Z,Y,6),dif(X,Y). depth(X,Y,8):-adjacent(X,Z,1),depth(Z,Y,7),dif(X,Y). depth(X,Y,9):-adjacent(X,Z,1),depth(Z,Y,8),dif(X,Y). graph(X,Y,D):-distinct([Y],depth(X,Y,D)). controllability(X,Y,Z,F):-connectivity(X,Y,AC),aggregate_all(count,graph(X,Z,2),D2),F is AC/(AC+D2). totdepth(X,Y,TD):-aggregate_all(sum(D),graph(X,Y,D),TD). nodes(X,Y,D,N):-aggregate_all(count,graph(X,Y,D),N). meandepth(X,Y,D,MD):-totdepth(X,Y,TD),nodes(X,Y,D,N), MD is TD/N. integration(X,Y,D,I):-meandepth(X,Y,D,MD), I is 1/MD. asymmetry(X,Y,D,RA):-totdepth(X,Y,TD),nodes(X,Y,D,N), RA is 2*(TD/N-1)/(N-1). dvalue(K,DV):-DV is 2*(K*(log((K+2)/3)/log(2)-1)+1)/((K-1)*(K-2)). rra(X,Y,D,RRA):-asymmetry(X,Y,D,RA),nodes(X,Y,D,N),dvalue(N+1,DV), RRA is RA/DV. integrationHH(X,Y,D,IHH):-rra(X,Y,D,RRA), IHH is 1/RRA. % Local measures for radius R: rdepth(X,Y,D,R):-depth(X,Y,D), D =< R. rgraph(X,Y,D,R):-distinct([Y],rdepth(X,Y,D,R)). rtotdepth(X,Y,TD,R):-aggregate_all(sum(D),rgraph(X,Y,D,R),TD). rnodes(X,Y,D,N,R):-aggregate_all(count,rgraph(X,Y,D,R),N). rmeandepth(X,Y,D,MD,R):-rtotdepth(X,Y,TD,R),rnodes(X,Y,D,N,R), MD is TD/N. rintegration(X,Y,D,I,R):-rmeandepth(X,Y,D,MD,R), I is 1/MD. rasymmetry(X,Y,D,RA,R):-rtotdepth(X,Y,TD,R),rnodes(X,Y,D,N,R), RA is 2*(TD/N-1)/(N-1). rrra(X,Y,D,RRA,R):-rasymmetry(X,Y,D,RA,R),rnodes(X,Y,D,N,R),dvalue(N+1,DV), RRA is RA/DV. rintegrationHH(X,Y,D,IHH,R):-rrra(X,Y,D,RRA,R), IHH is 1/RRA. % Rings: graph2(X,Y,D):-distinct([Y],(depth(X,Y,D),D>1)). ring(X,Y,Z,D):-adjacent(X,Y,1),graph2(Y,X,D),connectivity(X,Z,AC), AC > 1. rings(X,Y,Z,D,R):-aggregate_all(count,(ring(X,Y,Z,D)),C), R is max(C-1,0). ringiness(X,Y,Z,RR):-rings(X,Y,Z,D,R),nodes(X,Y,D,N), RR is R/N. % Queries (examples): % adjacent(av_descobrimentos_W,Y,1). % connectivity(av_descobrimentos_W,Y,AC). % graph(av_descobrimentos_W,Y,D). % control(av_descobrimentos_W,Y,E). % controllability(av_descobrimentos_W,Y,Z,F). % totdepth(av_descobrimentos_W,Y,TD). % meandepth(av_descobrimentos_W,Y,D,MD). % integration(av_descobrimentos_W,Y,D,I). % asymmetry(av_descobrimentos_W,Y,D,RA). % rra(av_descobrimentos_W,Y,D,RRA). % integrationHH(av_descobrimentos_W,Y,D,IHH). % rgraph(av_descobrimentos_W,Y,D,3). % rintegration(av_descobrimentos_W,Y,D,I,3). % rasymmetry(av_descobrimentos_W,Y,D,RA,3). % rings(av_descobrimentos_W,Y,Z,D,R). % ringiness(av_descobrimentos_W,Y,Z,RR).