@DECL
PersonAttributes(L("person pn"),L("attr pn")) {
L("conj") = pnvar(L("person pn"),"conjoined");
if (L("conj")) {
"copyperson.txt" << "Conjoined: " << pnvar(L("person pn"),"$text") << "\n";
L("node") = pndown(L("person pn"));
while (L("node")) {
PersonAttribute(L("node"),L("attr pn"));
L("node") = pnnext(L("node"));
}
} else {
"copyperson.txt" << "== " << pnvar(L("person pn"),"$text") << "\n";
PersonAttribute(L("person pn"),L("attr pn"));
}
}
PersonAttribute(L("person pn"),L("attr pn")) {
L("con") = pnvar(L("person pn"),"con");
if (!L("con")) {
return;
}
L("full") = conval(L("con"),"full");
if (L("full")) {
"copyperson.txt" << " Has full: " << conceptname(L("full")) << "\n";
L("con") = L("full");
}
L("person") = conval(L("con"),"person");
if (!L("person")) {
"copyperson.txt" << " No person found\n";
return;
}
"copyperson.txt" << conceptpath(L("person")) << "\n";
L("pn") = L("attr pn");
while (L("pn")) {
L("name") = pnname(L("pn"));
if (L("name") == "_person") {
return;
}
if (L("name") == "_attribute") {
L("attr") = MakeCountCon(L("person"),"attr");
"copyperson.txt" << " " << L("name") << ": " << pnvar(L("pn"),"$text") << "\n";
PNCopyAttrsToCon(L("pn"),L("attr"));
}
L("pn") = pnnext(L("pn"));
}
}
AddPersonToKB(L("cap"),L("first name"),L("last name")) {
L("full name") = L("first name") + " " + L("last name");
"addperson.txt" << "Adding: " << L("full name") << "\n";
L("person con") = getconcept(G("people"),L("full name"));
addstrval(L("person con"),"first",L("first name"));
addstrval(L("person con"),"last",L("last name"));
L("cap con") = pnvar(L("cap"),"con");
L("sent con") = conval(L("cap con"),"sent");
L("con") = MakeCountCon(L("sent con"),"person");
addconval(L("con"),"con",L("person con"));
addconval(L("cap con"),"person",L("person con"));
return 1;
}
AddPersonOne(L("cap"),L("name node")) {
L("con") = pnvar(L("cap"),"con");
L("full") = conval(L("con"),"full");
if (L("full")) {
L("sent con") = conval(L("con"),"sent");
L("con") = MakeCountCon(L("sent con"),"person");
addconval(L("con"),"con",L("full"));
return 1;
}
return 0;
}
AddPersonTwo(L("cap"),L("first name node"),L("last name node")) {
L("first name") = pnvar(L("first name node"),"$text");
L("last name") = pnvar(L("last name node"),"$text");
return AddPersonToKB(L("cap"),L("first name"),L("last name"));
}
AddPersonThree(L("cap"),L("first name node"),L("last piece node"),L("last name node")) {
L("first name") = pnvar(L("first name node"),"$text");
L("last name") = pnvar(L("last piece node"),"$text") + " " + pnvar(L("last name node"),"$text");
return AddPersonToKB(L("cap"),L("first name"),L("last name"));
}
MarkConjunctions(L("conj node")) {
L("first node") = pnprev(L("conj node"));
L("last node") = L("first node");
L("first name") = pnname(L("first node"));
"conjoin.txt" << "=========\nFirst: " << L("first name") << "\n";
"conjoin.txt" << "conj: " << pnname(L("conj node")) << "\n";
L("node") = pnnext(L("conj node"));
L("last conj") = L("conj node");
L("found") = 0;
while (L("node") && !L("done")) {
L("name") = pnname(L("node"));
"conjoin.txt" << "node: " << L("name") << "\n";
if (L("name") == L("first name")) {
pnmakevar(L("node"),"conjoin",1);
pnmakevar(L("last node"),"conjoin",1);
pnmakevar(L("last conj"),"conjoin",1);
L("found") = 1;
} else if (pnvar(L("node"),"conjunction")) {
L("last conj") = L("node");
} else {
L("done") = 1;
}
L("last node") = L("node");
L("node") = pnnext(L("node"));
}
if (L("found")) {
"conjoin.txt" << "CONJUNCTION FOUND!\n";
pnmakevar(L("last conj"),"conjoin",1);
}
}
@@DECL