>> type appears to be keyword
`type` would make it valid.
>> We can't use the defining type within the same type recursively (ie.
GeometryType within GeometryType)
We don't support recursive type definition.
>> The type object cannot be resolved
We don't have a builtin name for a completely open type, but you can
define one.
What you can do is:
CREATE TYPE AnyObject AS {};
CREATE TYPE GeometryType AS {
`type`: string,
geometry: SomeType;
properties: AnyObject
}
Best,
Yingyi
On Wed, Jun 21, 2017 at 6:33 AM, Mike Carey <[email protected]> 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#Deri
> vedTypesObject
>
> Thank you
> Yours sincerely,
> Riyafa
>
>
>