結合

<< 目次を表示 >>

ページ位置:  ソースコードの生成と読み込み > コード分析 > コード分析 フレームワーク > コード分析のクエリ > コード分析のクエリ言語 (mFQL) >

結合

and

and(left: set, right: set)

 

and結合は2つのセットの両方に含まれるノードのセットを返します。この結合は、AND結合であるとも言えます。

 

{1, 2, 3} と {2, 3, 4} のintersect結合の結果は、 {2, 3} となります。

 

次の例は、属性名が“TYPE”で、その値が“int”のものだけを抽出しています。

 

and(

find("int"),

with("TYPE")

)

Union

union(left: set, right: set [, right: set])

 

union結合は2つのセットの少なくとも片方に含まれるノードのセットを返します。この結合は、OR結合であるとも言えます。

 

この結合のパラメータは3つ以上にできます。その場合には、すべてのセットに含まれている内容を結合したものになります。最低でも2つのセットが必要です。

 

この関数の結合の結果は、渡されるセットに重複がない限りは、結果にも重複はありません。渡されるセットに重複がある場合には、結果にも重複が残ります。

{1, 2, 3} と {2, 3, 4} のunion結合の結果は、{1, 2, 3, 4} となります。

 

次の例は、属性名が“TYPE”か、その値が“int”.のものかの両方を抽出しています。

 

union(

getByValue("int"),

getByName("TYPE")

)

except

except(left: set, right: set)

 

Except結合は 2つのセットの片方にのみ含まれるノードのセットを返します。この結合は、XOR結合であるとも言えます。

 

{1, 2, 3} と {2, 3, 4} のexcept結合の結果は、{1, 4} となります。

 

次の例は、属性名が“TYPE”でその値が“int”ではないか、属性名が“TYPE”ではなく、その値が“int”であるものの両方を抽出しています。

 

except(

find("int"),

with("TYPE")

)

exclude

exclude(left: set, right: set)

 

Exclude結合は、最初のパラメータのセットには含まれるが、2番目のパラメータのセットには含まれないものを返します。

 

{1, 2, 3} と {2, 3, 4} のexclude結合の結果は、{1, 4} となります。

 

次の例は、属性の値が“int”であるもののなかで、属性名が“TYPE”のセットには含まれないものを抽出しています。

 

Exclude(

find(“int”),

with(“TYPE”)

)

andat

andat(count: number, left: set, right: set)

andat(value: string, left: set, right: set)

andat(count: number, value: string, left: set, right: set)

 

andat関数は、ancestorやfilterのような走査と、intersect結合とを同時に行う関数です。左のセットについて走査を実施し条件を満たすセットを取得後、右のセットとのintersect結合を行います。

走査についてのパラメータは、ancestorやfilterと同じです。

 

次の例は、ノード名が “NAME” のノードのセットに対してその1つ上位の親ノードから取得したセットと、名前が “CLASS” のノードとのintersect結合を返します。つまり、両方に含まれている喉のみが返されます。その結果、NAMEのノードのすぐ上の親のノードが"CLASS"であるもののみが、結果セットに含まれることになります。

 

andat(1,

type(“NAME”),

type(“CLASS”)

)