in my transformation, I have these rules/pattern:
--8<---------------cut here---------------start------------->8---
PATTERN spouse(h, w)
WHERE NOT UNDEF h.familyFather
AND h.familyFather.mother = w
;
RULE Member2Male(member, p)
FORALL Member member, Family f
WHERE NOT isFemale(member)
AND member.model = fm
AND FamilyModelToGenealogy LINKS src = fm, dst = g
AND family(member, f)
AND FamilyToAddress LINKS src = f, dst = a
MAKE Male p FROM male(member),
setPersonProps(member, p, g, f, a)
;
RULE Member2Father(member, p)
EXTENDS Member2Male(member, p)
FORALL Member mwife, Person wife
WHERE spouse(member, mwife)
AND MemberToPerson LINKS src = mwife, dst = wife
SET p.wife = wife
;
--8<---------------cut here---------------end--------------->8---
In <8739rh4...@thinkpad.tsdh.de> I've already asked about the
EXTENDS semantics and Michael and Kerry gave helpful answers.
Especially, Michael's hint to manually "unroll" the extension to grasp
the semantics was helpful. But currently, I still cannot explain why I
always get
WARN: TRule: Member2Father matched nothing.
If I unroll the extension manually, I get
--8<---------------cut here---------------start------------->8---
RULE Member2Father(member, p)
FORALL Member member, Family f, Member mwife, Person wife
WHERE NOT isFemale(member)
AND member.model = fm
AND FamilyModelToGenealogy LINKS src = fm, dst = g
AND family(member, f)
AND FamilyToAddress LINKS src = f, dst = a
AND spouse(member, mwife)
AND MemberToPerson LINKS src = mwife, dst = wife
MAKE Male p FROM male(member),
setPersonProps(member, p, g, f, a)
SET p.wife = wife
;
--8<---------------cut here---------------end--------------->8---
and THAT DOES WORK fine...
Is EXTENDS broken? (Even the extension rule in the tutorial Class to
Table transformation does never match...)
Bye,
Tassilo