/net/aistaff/kleiweg/alpino/almod(n1)<-[:rel{rel:'hd'}]-(vp)-[:rel*0..]->()-[r:rel]->(n)
n is nachfeld, mits…
voorwaarden:
vp.cat in ['inf','ti','ssub','oti','ppart']not r.rel in ['hd','svp']n.cat is null or not n.cat in ['inf','ppart']met:
optional match (n)-[r2:rel]->(n2) where r2.rel in ['hd','cmp','mwp','crd','rhd','whd','nucl','dp']
voorwaarden:
n1.begin < n2.beginn1.begin < n.beginmeer voorwaarden:
voorwaarde in xml:
Ik heb bovenstaande geïmplementeerd in AlpinoGraph. Dit lijkt goed te werken. Maar als ik de uitvoer vergelijk met die door de query in Cypher zie ik verschillen. Dit bijvoorbeeld.
Volgens de query in cypher is ‘conj’ een nachfeld.
Volgens mijn algoritme zijn maar en ‘np’ allebei nachfeld.
De query in Cypher (en ook die in XPath, denk ik) ziet ‘conj’ als nachfeld (wat het niet is, volgens mij), omdat het een head-achtig iets ziet (maar), dat na ‘hd’ (speelde) van de ssub staat.
De implementatie in AlpinoGraph zoekt naar een head-achtig iets van de ‘conj’, ziet de eerste ‘crd’ (niet) dat niet na de ‘hd’ komt, en concludeert dat de ‘conj’ geen nachfeld is. Het kijkt niet of ‘conj’ misschien nog een tweede head-achtig iets heeft dat wel na de ‘hd’ komt.
Het probleem is dat je een potentieel nachfeld hebt met meerder head-achtige dochters. Wat doe je hiermee?
Ik zou het algoritme kunnen aanpassen, maar het lijkt dat het algoritme het juist goed doet.
Zie alle verschillen hier
Voorbeeld 1
Voorbeeld 2