0

同僚との話し合いの中で、ODataURLフィルターのメソッドeq trueの呼び出し後に追加する必要があるかどうかについて質問がありました。substringof

http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title)
http://localhost/Collection/WorkItems()?$filter=substringof('crash',Title) eq true

現在、 2012年4月27日に改訂されたODataのABNFに相談しています。filter表現形式を見ると、 boolCommonExpr:が必要です。

filter                      =   "$filter" [ WSP ] "=" [ WSP] boolCommonExpr

その選択肢の1つとしてboolCommonExprリスト。しかし、ABNFにはシンボルboolMethodCallExprの定義はありません!boolMethodCallExpr

だから、私はそれがABNFのバグであり、そこにリストされている正しい代替案がなければならないことを推測しています:boolMethodExprではありませんboolMethodCallExpr

boolMethodExpr              =   endsWithMethodCallExpr /
                                startsWithMethodCallExpr /
                                substringOfMethodCallExpr /                                         
                                intersectsMethodCallExpr /
                                anyMethodCallExpr /
                                allMethodCallExpr

この場合、メソッドの呼び出しは、URIに含まれていなくても(およびありながら)行われるsubstringofことが許可されています。eq trueeq true

私の理解は正しいですか?

4

1 に答える 1

1

URLの最後に「eqtrue」を付ける必要はありません。ブール値を返す組み込み関数はどれも、それ自体で十分に機能するはずです。これはおそらくABNFのタイプミスのようです(特にboolMethodCallExprが定義されていない場合)。その特定のドキュメントは完全ではなく、いくつかのTODOが含まれています。ODataのOASIS標準化がまとまるにつれて、より明確なABNFが間もなく登場するはずです。

于 2013-02-05T21:25:44.837 に答える