Zum Hauptinhalt springen
Wenn Sie ein Element erstellen und seine Eigenschaften im Bereich Properties konfigurieren, generiert das Programm automatisch Code für diese Eigenschaften. Dieser Abschnitt hilft Ihnen, den automatisch generierten Code zu verstehen, damit Sie ihn bei Bedarf anpassen können.

Struktur des Suchelements

Beispiel für die Struktur des Suchelements Der automatisch generierte Code für das Suchelement Parties.Address sieht folgendermaßen aus:

Automatisch generierte Regel

~Root.Parties.Address,
t1 : Root.Parties.Organization,
t2 : Root.kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Root.Parties.Address ]+
=>
Root.Parties.Address( t );
Wie Sie sehen, verweist der automatisch generierte Code stets auf jedes Such­element über den vollständigen Pfad, um Namenskonflikte zu vermeiden. In diesem Fall können wir die Elementnamen kürzen, indem wir „Root“ bei jedem entfernen.

Regel mit kürzeren Elementnamen

~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
Wir können nun die Bedeutung jeder Aussage aufschlüsseln:

Regel erklärt

// Prüfen, dass das Suchelement Address noch nicht gefunden wurde, da nur die erste Instanz benötigt wird
~Parties.Address,
// Das Suchelement Organization und das nächste Schlüsselwort-Suchelement für Party abrufen. Diese wurden vor Address gefunden
t1 : Parties.Organization,
t2 : kw_PreNextParty
// Die Token-Sequenz finden, die eine Named Entity vom Typ NERAddress enthält
// (das Schlüsselwort „same" gibt an, dass nur eine NERAddress abgeglichen werden soll, falls mehrere vorhanden sind)
// Die Adresse sollte sich nach dem Organisationsnamen und vor dem Schlüsselwort für die nächste Partei befinden
// Das Pluszeichen bedeutet, dass die Token-Sequenz aus mehreren Wörtern bestehen kann
// Die Bedingung ~@Parties.Address am Ende stellt sicher,
// dass die Adresse nicht erneut mit denselben Tokens abgeglichen wird
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );