ABNF (OData Version 3.0)

OData Version 4.0 is the current recommended version of OData. OData V4 has been standardized by OASIS and has many features not included in OData Version 3.0.

ABNF for OData

Current Revision: 4/27/2012

The following Augmented BackusNaur Form (ABNF) details the construction rules for OData Uris that target OData services that follow the Uri Conventions specified in this document.
WSP = ; core to ABNF, see [RFC5234]

boundActionCall = [ operationQualifier ] action [ "()" ]
; with the added restriction that the binding parameter MUST be either an entity or collection of entities
; and is specified by reference using the URL immediately preceding (to the left) of the boundActionCall

boundEntityFuncCall = fullEntityFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundEntityFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

boundEntityColFuncCall = fullEntityColFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundEntityColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

boundComplexFuncCall = fullComplexFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundComplexFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

boundComplexColFuncCall = fullComplexColFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundComplexColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

boundPrimitiveFuncCall = fullPrimitiveFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundPrimitiveFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

boundPrimitiveColFuncCall = fullPrimitiveFunctionCall functionParameters
; with the added restrictions that the Function MUST support binding, and the binding parameter type
; MUST match the type of resource identified by Uri immediately preceding (to the left) of the boundPrimitiveColFuncCall
; and the functionParameters MUST NOT include the bindingParameter.

inscopeVariableExpr = implicitVariableExpr | lambdaVariableExpr
; the lambdaVariableExpr must be the name of a variable introduced by either the
; current lambdaMethodCallExprâ€™s lambdaVariableExpr or via a wrapping
; lambdaMethodCallExprâ€™s lambdaVariableExpr.

lambdaPredicateExpr = boolCommonExpr
; this is a boolCommonExpr with the added restriction that any
; firstMemberExprs inside the methodPredicateExpr MUST have a prefix of
; lambdaPredicatePrefixExpr