XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: V4.0_ERRATA02
    • Fix Version/s: V4.0_ERRATA03
    • Component/s: ABNF, URL Conventions
    • Labels:
      None
    • Environment:

      [Applied]

    • Proposal:
      Hide

      1. * should include nav props on complex types (arbitrarily deep)
      2. Allow for the * expand to be used on complex type properties as well as specific sub types as well. The new ABNF for $expand would look something like:

      expand = '$expand' EQ expandItem *( COMMA expandItem )
      expandItem = expandStar
      / expandPath
      ( expandNavigationProperty
      / expandStar
      )
      expandPath = [ ( qualifiedEntityTypeName / qualifiedComplexTypeName ) "/" ]
      *( ( complexProperty / complexColProperty ) "/" [ qualifiedComplexTypeName "/" ] )
      expandNavigationProp = navigationProperty
      [ "/" qualifiedEntityTypeName ]
      [ ref [ OPEN expandRefOption *( SEMI expandRefOption ) CLOSE ]
      / count [ OPEN expandCountOption *( SEMI expandCountOption ) CLOSE ]
      / OPEN expandOption *( SEMI expandOption ) CLOSE
      ]
      expandStar = [ STAR [ ref / OPEN levels CLOSE ] ]

      Applied:
      https://www.oasis-open.org/committees/download.php/55614/odata-v4.0-wd08-part2-url-conventions-2015-05-07.docx
      https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-construction-rules.txt?rev=678
      https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-testcases.xml?rev=678

      Show
      1. * should include nav props on complex types (arbitrarily deep) 2. Allow for the * expand to be used on complex type properties as well as specific sub types as well. The new ABNF for $expand would look something like: expand = '$expand' EQ expandItem *( COMMA expandItem ) expandItem = expandStar / expandPath ( expandNavigationProperty / expandStar ) expandPath = [ ( qualifiedEntityTypeName / qualifiedComplexTypeName ) "/" ] *( ( complexProperty / complexColProperty ) "/" [ qualifiedComplexTypeName "/" ] ) expandNavigationProp = navigationProperty [ "/" qualifiedEntityTypeName ] [ ref [ OPEN expandRefOption *( SEMI expandRefOption ) CLOSE ] / count [ OPEN expandCountOption *( SEMI expandCountOption ) CLOSE ] / OPEN expandOption *( SEMI expandOption ) CLOSE ] expandStar = [ STAR [ ref / OPEN levels CLOSE ] ] Applied: https://www.oasis-open.org/committees/download.php/55614/odata-v4.0-wd08-part2-url-conventions-2015-05-07.docx https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-construction-rules.txt?rev=678 https://tools.oasis-open.org/version-control/browse/wsvn/odata/trunk/spec/ABNF/odata-abnf-testcases.xml?rev=678

      Description

      Currently we can use a * on the expand to ask the service to expand all available navigation properties of an entity type. However, it is currently not possible to express the same intend for all navigation properties of a complex type.

      For further clarification we might want to document if a $expand=* is intended to expand all the navigation properties of complex types as well and/or if this is recursive, i.o.w. is it to be expected that a navigation property of a complex type in a complex type is to be expanded in that case too.

      Our current ABNF doesn't allow us to expand all the navigation properties of a particular sub type either, something one might expect to be able to do too.

      So IMHO the following examples should be supported as well:

      $expand=ComplexProp/*
      $expand=ComplexProp/ComplexProp/*
      $expand=ComplexProp/model.type/ComplexProp/*
      $expand=model.type/ComplexProp/*
      $expand=model.type/ComplexProp/model.type/ComplexProp/*

      As with the existing use cases of *, each of these could be followed by either the /$ref or ($levels=max) segments.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              hubert.heijkers Hubert Heijkers (Inactive)
            • Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: