Properties with a maximum multiplicity greater than 1

Copyright © 2013 Open Geospatial Consortium. 13 The number of properties will be a global option of the conversion process, the default will be 3.

6.2.3.2 Properties with values that are data types

Examples are properties where the value type is a data type including unions defined in an application schema. Extended: Value of the JSON property is an object and each property of the data type is represented as a property of that object. Example: geoNameCollection:{ memberGeoName:{ fullName:some name, nameIdentifier:null } } Simple: Like in the TDS example, the type hierarchy is flattened. This requires that also the flattening approach is used for multiplicities 1. Example: geoNameCollection.memberGeoName.fullName:some name, geoNameCollection.memberGeoName.nameIdentifier:null, Note that this flattening approach can result in quite long lists of properties, if any of the properties contains properties with a multiplicity 1. So this option has to be used with care with complex models.

6.2.3.3 Properties that allow nil values and metadata on those nil values

Extended: Basically a nil value would be a null in JSON. However, if the equivalent of a nilReason value should be encoded in JSON, too, then we need something different, i.e. a special nil-metadata-object. Example nil value without a reason: geoNameCollection:{ memberGeoName:{ fullName:null, nameIdentifier:null } } Example nil value with a reason: geoNameCollection:{ memberGeoName:{ fullName:{ nilReason:No information }, nameIdentifier:{ nilReason:No information 14 Copyright © 2013 Open Geospatial Consortium. } } } This is not entirely satisfying as - unlike in the XML Schema case - the information is lost that it is a nil value whenever reason metadata about the nil value is provided. We will therefore use the following approach, where additional properties are added as shown in the next example. Example nil value with a reason, alternative approach: geoNameCollection:{ memberGeoName:{ fullName:null, fullName_nilReason:No information, nameIdentifier:null, nameIdentifier_nilReason:No information } } Simple: Like in the TDS example, nil and nilReason values are mapped to special values that are documented outside of the schema. Example: geoNameCollection.memberGeoName.fullName:No Information, geoNameCollection.memberGeoName.nameIdentifier:-999999

6.2.3.4 Properties with values that are enumerants

The value is a string with a constraint that the valid values are from a fixed list. Example: controllingAuthority:military,

6.2.3.5 Properties with values that are code list values

Extended: Value of the JSON property is a URI identifying the code list value. It is assumed that the URI can be dereferenced and provides a representation of the code list value GML, SKOS, JSON. Example: conditionOfFacility: http:metadata.ces.milmdrnsGSIPconditionOfFacilityfullyFunctional, Simple: Like in the TDS example, the value would be a code. The link with the underlying code list would be specified outside of the schema. Example: conditionOfFacility:fullyFunctional