Glancing at RFC 7946 [1] it seems that arbitrary nesting is not allowed.
If I glanced correctly, there are
1) geometry objects and
2) feature objects that can contain a geometry and
3) feature collections that can contain multiple features.
So I believe that recursion should not be a problem.
However, I think that there are other constructs in the structure of a
geometry object that are not expressible in ADM types today - so I
think that we’ll need to work with (at least partially) open types.

Cheers,
Till

[1] https://tools.ietf.org/html/rfc7946

On 21 Jun 2017, at 15:33, Mike Carey wrote:

One approach would be to be silent about properties - and then it could be there anyway - however, that wouldn't allow you to state the requirement (?) that it must be called properties and/or that it must be an object (not a scalar). That could work for now, perhaps? We need to have an "any record type" type name - we've noted a desire for that - unfortunately we don't have one I don't think. I believe the concept is there inside the code, in the type-related areas, but we don't have a keyword like name for it. (@Yingyi - comments?) And we do also have a restriction (at the type level) that precludes recursion (regular or mutual) in type definitions; we probably need to do something about that someday as well.

In the meantime, these things could be handled (weakly) by documenting what's expected/allowed in this setting.

Cheers,

Mike

PS - I wonder if JSON Schema has the expressiveness for this?


On 6/21/17 2:26 AM, Riyafa Abdul Hameed wrote:
Hi,

I would like to parse the following or any GeoJSON type[1] to a record in AsterixDB:
{
   "type":"Feature",
   "geometry":{
      "type":"Point",
      "coordinates":[
         -118.40,
         33.93
      ]
   },
   "properties":{
      "code":"LAX",
      "elevation":38
   }
}

The value of properties is optional and is a variable that is it can be any type of object. What is the most suitable datatype to use to represent properties in this case?
Is something like the following possible?

CREATE TYPE GeometryType AS {
     type: string,
     geometry: GeometryType,
     properties: object
};

I came up with the above because there's a derived type called objects[2] in AsterixDB. The above doesn't work because of the following reasons:

  * type appears to be keyword
  * We can't use the defining type within the same type recursively
    (ie. GeometryType within GeometryType)
  * The type object cannot be resolved

Any suggestions on how a GeoJSON can be parsed into AsterixDB?

[1] https://tools.ietf.org/html/rfc7946
[2] https://ci.apache.org/projects/asterixdb/datamodel.html#DerivedTypesObject

Thank you
Yours sincerely,
Riyafa

Reply via email to