メインコンテンツへスキップ
Properties ペインで要素を作成してそのプロパティを設定すると、プログラムはそれらのプロパティ用のコードを自動生成します。本セクションでは、自動生成されたコードの内容を理解し、必要に応じて変更できるように説明します。

検索要素の構造

検索要素の構造の例 Parties.Address 検索要素の自動生成されるコードは次のようになります。

自動生成ルール

~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 );
ご覧のとおり、自動生成されたコードは、名前の競合を避けるため、常にフルパスで各検索要素を参照します。今回のケースでは、各要素名から Root を取り除くことで、要素名を短くできます

要素名を短くしたルール

~Parties.Address,
t1 : Parties.Organization,
t2 : kw_PreNextParty
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );
ここで各ステートメントの意味を順に見ていきましょう。

ルールの説明

// Address検索要素がまだ見つかっていないことを確認します。最初のインスタンスのみが必要です
~Parties.Address,
// Organization検索要素と次のパーティキーワード検索要素を取得します。これらはAddressより前に見つかっています
t1 : Parties.Organization,
t2 : kw_PreNextParty
// 1つのNERAddress名前付きエンティティを含むトークンシーケンスを検索します
// (「same」キーワードは、複数存在する場合でも1つのNERAddressのみを一致させることを指定します)
// アドレスは組織名の後、次のパーティのキーワードの前に位置する必要があります
// +記号は、トークンシーケンスが複数の単語で構成される可能性があることを示します
// 最後の~@Parties.Address条件により
// 同じトークンで再度アドレスが一致しないことが保証されます
[ t: @NERAddress( same, right_to( t1 ), left_to( t2 ) ) ~@Parties.Address ]+
=>
Parties.Address( t );