propertyinfo("Address",X) :- addresstext(X) propertyinfo("Parcel Number",X) :- apn(X) propertyinfo("Zoning District",X) :- zonelist(X) formattedlocation(L) :- evaluate( if( someformattedaddress, choose(A,formattedaddress(A)), true, stringappend("Parcel Number: ", choose(A,apn(A))) ), L ) someformattedaddress :- formattedaddress(X) formattedaddress(X) :- address(A) & ~empty(A) & city(J) & evaluate( capitalizeone( stringappend( A,", ",J ) ), X ) %To be shown in property information addresstext(X) :- evaluate( if( someformattedaddress, stringappend(choose(A,formattedaddress(A)),", CA"), true, "—" ), X ) zonelist(ZL) :- evaluate(setofall(Z,displayzone(Z)),S) & map(divify,S,L) & joinall(L,"",ZL) displayzone(T) :- zone(Z) & evaluate(display_url(Z), T) display_url(Z) := if ( zone_url(Z,_), stringappend("",Z,""), true, Z ) divify(X,Y) :- stringappend("