personalities2.taq

$ java -jar taq.jar personalities2 search_name=John

Running query person_search in global scope 
Parameters [personalities2, search_name=John]
name_match(name=John, age=23, starsign=Gemini, personality=gentle, affectionate, curious)

Description

personalities2.taq introduces cursor which steps through a list going forward from the start or working backwards from the end. Here a cursor is bound to a list simply by declaring it with the same name as the list

cursor<string> traits

Here the name “traits” coincides with that of the 5th column of the “person” axiom list. The cursor is used to format the “personality” term of the “name_match” template

string personality = traits++ + “,” + traits++ + “,” + traits


list<string> aries_traits = {
"courageous", "determined", "confident"
}
list<string> taurus_traits = {
"reliable", "patient", "practical"
}
list<string> gemini_traits = {
"gentle", "affectionate", "curious"
}
list<string> cancer_traits = {
"tenacious", "highly imaginative", "loyal"
}
list<string> leo_traits = {
"creative", "passionate", "generous"
}
list<string> virgo_traits = {
"loyal", "analytical", "kind"
}
list<string> libra_traits = {
"cooperative", "diplomatic", "gracious"
}
list<string> scorpio_traits = {
"resourceful", "brave", "passionate"
}
list<string> sagittarius_traits = {
"generous", "idealistic", "great sense of humor"
}
list<string> capricorn_traits = {
"responsible", "disciplined", "self-control"
}
list<string> aquarius_traits = {
"progressive", "original", "independent"
}
list<string> pisces_traits = {
"compassionate", "artistic", "intuitive"
}

axiom list person
(name, sex, age, starsign, traits)
{"John", "m", 23, "Gemini", list gemini_traits}
{"Sue", "f", 19, "Cancer", list cancer_traits}
{"Sam", "m", 34, "Scorpio", list scorpio_traits}
{"Jenny", "f", 28, "Gemini", list gemini_traits}
{"Andrew", "m", 26, "Virgo", list virgo_traits}
{"Alice", "f", 20, "Pisces", list pisces_traits}
{"Ingrid", "f", 23, "Cancer", list cancer_traits}
{"Jack", "m", 32, "Pisces", list pisces_traits}
{"Sonia", "f", 33, "Gemini", list gemini_traits}
{"Alex", "m", 22, "Aquarius", list aquarius_traits}
{"Jill", "f", 33, "Cancer", list cancer_traits}
{"Fiona", "f", 29, "Gemini", list gemini_traits}
{"Melissa", "f", 30, "Virgo", list virgo_traits}
{"Tom", "m", 22, "Cancer", list cancer_traits}
{"Bill", "m", 19, "Virgo", list virgo_traits}

template name_match
{ cursor<string> traits }
(
name ? name == search_name,
age,
starsign,
string personality = traits++ + " " + traits++ + " " + traits
)

query<axiom> person_search(person:name_match)