Very good
On Wed, Aug 27, 2014 at 2:39 AM, and...@apache.org (Andy McMurry) < mcmurry.a...@gmail.com> wrote: > Interesting thread in UIMA core about JSON Serialization CAS and > Descriptors. > > > Begin forwarded message: > > > From: Marshall Schor <m...@schor.com> > > Subject: Re: [jira] [Created] (UIMA-3969) Add JSON Serialization for > CASs and UIMA Descriptors > > Date: August 25, 2014 at 8:33:54 PM PDT > > To: d...@uima.apache.org > > Reply-To: d...@uima.apache.org > > > > > > On 8/25/2014 6:54 PM, Jens Grivolla wrote: > >> Is the JSON serialization documented somewhere? > > Yes, there's a chapter in the reference book. You can build that > > (uima-docbook-references), until it's released. > > > > There are also lots of Javadocs in the main implementing class: > > XmiCasSerializer. (It's in this class because it shares a lot of the > machinery > > with Xmi serialization). > > > >> > >> I saw that there appear to be quite a few alternative serializations. It > >> seems to include something like a typesystem definition, but only with a > >> list of feature names, not their types, if I understood the format > >> correctly (@featureRefs has a list of the features that are not of > >> primitive types, it seems). > > The @featureRefs is only those features which are "references" to other > feature > > structures. > > > > You're correct, in noticing that the feature "range" types are not > present. > > This is because the serialization is to JSON, which supports a native > > representation of things that are collections (JSON arrays) which could > be uima > > Arrays or Lists, and ranges that are boolean are representable by JSON > true and > > false values. There is no distinction that a number is a > byte/short/int/long, > > because those are all represented as a JSON "number". And so forth... > > > > The Json serialization for a CAS can optionally include parts of the type > > system: It can include what the supertypes are for serialized types (to > enable > > iterating over a type and all of its subtypes, like Cas iterators > normally do); > > it can also identify which slots which appear to have number values are > actually > > to be interpreted as references to other feature structures. Otherwise, > the > > serialized form might have a slot "foo" : 111 which is a number value, > and a > > slot "bar" : 112 which is a reference to another feature structure whose > ID is > > 112. This extra information (in @featureRefs) permits the user of the > JSON > > serialized form a way to distinguish these two case. > > > >> > >> It would be very useful if the serialization allowed one to easily pull > out > >> a partial CAS with just a subset of the views (by only including some > >> subtrees of the JSON structure), and merge views into it. > > Another optional part of the serialization is a list of views, together > with an > > array of numbers each one of which represents a serialized Feature > Structure > > that is indexed in that view. > >> This might be > >> complicated, as I understand that the views define annotation indices, > but > >> the same annotation can be indexed in several views, right? > > > > Feature Structures can be classified into "Annotations" and other types > (not a > > subtype of Annotation). > > > > Annotations are special - they have an implied reference to a particular > subject > > of analysis. So they are restricted to being indexed in the view that is > > associated with that subject-of-analysis. > > > > Other types (not subtypes of Annotation (or more precisely, > AnnotationBase)) do > > not have this restriction, and can be indexed in multiple views. > > > > See > > > http://uima.apache.org/d/uimaj-2.6.0/tutorials_and_users_guides.html#ugr.tug.aas.annotations_associated_sofa > . > > > > Let me know where the documentation might be improved :-) > > > > -Marshall > >> > >> -- Jens > >> > >> > >> > > > >