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