## EDMSimpleType - x
Must Be: xs:string
Must Be: "Binary" || "Boolean" || "Byte" || "DateTime" || "DateTimeOffset" || "Time" || "Decimal" || "Double" || "Single" || "Geography" || "Point" || "LineString" || "Polygon" || "MultiPoint" || "MultiLineString" || "MultiPolygon" || "GeographyCollection" || "Geometry" || "GeometricPoint" || "GeometricLineString" || "GeometricPolygon" || "GeometricMultiPoint" || "GeometricMultiLineString" || "GeometricMultiPolygon" || "GeometryCollection" || "Guid" || "Int16" || "Int32" || "Int64" || "String" || "SByte"
Comment: EDM SimpleType instances for use by EDM Instance documents

## TMax - x
Must Be: xs:string
Must Be: "Max"

## TVariable - x
Must Be: xs:string
Must Be: "Variable"

## TMaxLengthFacet - x
Must Be:TMax || xs:nonNegativeInteger

## TIsFixedLengthFacet - x
Must Be: xs:boolean

## TPrecisionFacet - x
Must Be: xs:nonNegativeInteger

## TScaleFacet - x
Must Be: xs:nonNegativeInteger

## TIsUnicodeFacet - x
Must Be: xs:boolean

## TCollationFacet - x
Must Be: xs:string

## TSridFacet - x
Must Be: TVariable ||  xs:nonNegativeInteger

## TGuidLiteral - x
Must Be: xs:string
Pattern: "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"

## TParameterMode - x
Must Be: xs:token
Must Be: "In" || "Out" || "InOut"


## TNamespaceName - x
Must Be: TQualifiedName
Max Length: 512

## TQualifiedName - x
Must Be: xs:string
Pattern Comment: The below pattern represents the allowed identifiers in ECMA specification plus the '.' for namespace qualification
Pattern: "[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}(\.[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}){0,}"


## TSimpleIdentifier - x
Must Be: xs:string
Max Length: 480
Pattern Comment: The below pattern represents the allowed identifiers in ECMA specification
Pattern: "[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}"


## TPropertyType - x

Must Be: EDMSimpleType || TQualifiedName || xs:token
If xs:token {
    Pattern Comment: The below pattern represents the allowed identifiers in ECMA specification plus the '.' for namespace qualification
    Pattern: "[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}(\.[\p{L}\p{Nl}][\p{L}\p{Nl}\p{Nd}\p{Mn}\p{Mc}\p{Pc}\p{Cf}]{0,}){0,}"
}

## TCommandText - x
Must Be: xs:string
White Space: preserve

## TFunctionImportParameterAndReturnType - x
Must Be: EDMSimpleType || TQualifiedName || xs:token
If xs:token {
    Pattern: "Collection\([^ \t]{1,}(\.[^ \t]{1,}){0,}\)"
}

## TWrappedFunctionType - x
Must Be: TQualifiedName || xs:token
If xs:token {
    Pattern: "(Collection|Ref)\([^ \t]{1,}(\.[^ \t]{1,}){0,}\)"
}

## TUnwrappedFunctionType - x
Must Be: TQualifiedName || xs:token
If xs:token {
    Pattern: "[^ \t]{1,}(\.[^ \t]{1,}){0,}"
}

## TAction - x
Must Be: xs:token
Must Be: "Cascade" || "None"

## TMultiplicity - x
Must Be: xs:token
Must Be: "0..1"" || "1" || "*"

## TConcurrencyMode - x
Must Be: xs:token
Must Be: "None" || "Fixed"