Hi Ben, please find my answers bellow. On 11/15/2016 03:57 AM, Ben Caradoc-Davies wrote: > Nuno, > > I have no objection to the encoder supporting non-GML encoding > patterns, if the change does not impact complexity or performance. The > encoder is intended to support XSDs other than just GML, hence the > module name. Before any change is merged, I would like to run the > GeoServer app-schema online test suite on your pull request.
I have done two pull requests for this: https://github.com/geotools/geotools/pull/1386 https://github.com/geoserver/geoserver/pull/1976 I have run the app-schema test suite on this (excluding the oracle ones) and add a test for this use case. > > Instead of "striping", perhaps terminology that refers to the GML > "object-property model" for clarity? Sure, I used the one present in app-schema mapping file doc. > > This method is already very long. I once printed the Encoder source in > six-point and wrapped Justin Deoliveira in it. Jody has the photo. New complexity measure :-) > > Kind regards, > Ben. > > On 15/11/16 13:52, Nuno Oliveira wrote: >> Andrea, Stefano Ben and Rob sorry for the delay and thanks for the >> feedback, much appreciated :) >> >> I dived in app-schema and GML complex features encoder code, follow the >> provided mailing list discussions and perform some tests and I got >> confused about all of this :| ... I redone all of this and found some >> answers and questions :) >> >> In my current use case I will actually build a top schema that will be >> GML based but needs to include entities from a schema that is not GML >> based. Answering Ben question the schema is this one: >> http://www.datex2.eu/schema/2/2_3/DATEXIISchema_2_2_3.xsd >> >> App-schema seems to be able to handle the mapping of XSD elements that >> doesn't respect the GML "striping" rule, i.e. it correctly builds the >> complex feature type, the complex feature and seems to handle filtering >> correctly too. So "the problem" was that the GML complex encoder was not >> encoding the elements that didn't respect the "stripping" rule. >> >> That said, I would like to relax the GML complex encoder to be able to >> encode complex features that map to a schema that didn't respect the GML >> "stripping" rule. >> >> When the GML "stripping" rule is not respected, app-schema will build a >> complex feature where the type will contain a feature of the same type. >> Using the stations example, this means that we will have a Measurement >> containing Measurement elements, this happens because the containing >> element was a XSD element of type Measurement. The encoder expected to >> receive a MeasurementProperty containing a Measurement, where the >> containing XSD element was of type MeasurementProperty. >> >> The solution I propose is basically to detect when we have a complex >> feature property the matches the pattern described above and to actually >> encode the contained properties which are the properties we are >> interested in. Mapping this to code, this would basically happen here: >> https://github.com/nmco/geotools/blob/fc6d8db315240dabad2daf0160316d51c1e33c2f/modules/extension/xsd/xsd-core/src/main/java/org/geotools/xml/Encoder.java#L747 >> >> >> >> >> Instead of just adding the current complex attribute, we could check if >> the current complex attribute is actually a non "striped" GML entity and >> encode only the contained entities: >> >> if (isNonSttrippedNestedEntity(next)) { >> for (Property property : ((ComplexAttribute) >> next).getProperties()) { >> encoded.push(new EncodingEntry(property, element, entry)); >> } >> } else { >> encoded.push(new EncodingEntry(next, element, entry)); >> } >> >> >> I have performed some tests with this and it seems to work fine. I was >> able to encode the stations data read from a MongoDB store using the >> original non valid GML schema (result attached). >> >> We can also have a flag that will control if the encoder should work in >> a relaxed way or not. >> >> What do you think about this solution ? What did I miss ? >> >> Regarding Rob comment about the result mime type, what are others >> opinion on this ? >> >> Thanks, >> >> Nuno Oliveira >> >> On 11/02/2016 02:42 PM, Nuno Oliveira wrote: >>> Thanks for the feedback Stefano and Andrea. >>> >>> So it doesn't matter how I try to map the entities, i.e. the >>> app-schema mappings, the problem is with the schema :( >>> >>> Stefano I tried to find the discussion you refer on the mailing lists >>> but could not find it, better I found to much information >>> about this, can you pass me the link :) >>> >>> You say that you already stepped on something like this how did you >>> manage to work around it ? >>> >>> Thanks, >>> >>> Nuno Oliveira >>> >>> One doubt remain, and this one is for the app-schema experts :), is >>> there a >>> >>> On 11/02/2016 10:09 AM, Nuno Oliveira wrote: >>>> Hi, >>>> >>>> I have a doubt regarding the way GML complex features encoder handles >>>> a sub collection of features, i.e. chained features. >>>> >>>> The example use case is the representation of some meteorological >>>> stations measurements in GML. The complex feature >>>> represents a station were the measurements are represented as a sub >>>> collection of features. The XML expected representation >>>> would be something like this: >>>> >>>> <?xml version="1.0" encoding="UTF-8"?> >>>> <wfs:FeatureCollection ...> >>>> <st:featureMember> >>>> <st:StationFeature gml:id="1"> >>>> <st:name>station 1</st:name> >>>> <st:contact> >>>> <st:mail>stati...@mail.com</st:mail> >>>> </st:contact> >>>> <st:measurement> >>>> <st:name>temp</st:name> >>>> <st:unit>c</st:unit> >>>> <st:value>35.5</st:value> >>>> </st:measurement> >>>> <st:measurement> >>>> <st:name>wind</st:name> >>>> <st:unit>km/h</st:unit> >>>> <st:value>110.5</st:value> >>>> </st:measurement> >>>> <st:geometry> >>>> <gml:Point >>>> srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> >>>> <gml:coordinates>50.0,60.0</gml:coordinates> >>>> </gml:Point> >>>> </st:geometry> >>>> </st:StationFeature> >>>> </gml:featureMember> >>>> </wfs:FeatureCollection> >>>> >>>> The first GML based schema I wrote for this didn't work, i.e. the >>>> measurements sub collection was not encoded by >>>> the encoder, please find that schema attached with name >>>> stations1.xsd. After some investigation I found that my >>>> problem was in this piece of code: >>>> >>>> https://github.com/geotools/geotools/blob/master/modules/extension/xsd/xsd-gml3/src/main/java/org/geotools/gml3/bindings/ComplexSupportXSAnyTypeBinding.java#L176-L177 >>>> >>>> >>>> >>>> >>>> Basically no child elements were extracted, and in this case the >>>> child elements were the station measurements. After checking >>>> the app-schema examples I came up with this second schema that >>>> worked, please find that schema attached with name stations2.xsd. >>>> >>>> The main difference is that I wrapped the measurement element with >>>> the MeasurmentPropertyType: >>>> >>>> <xs:complexType name="MeasurementPropertyType"> >>>> <xs:sequence minOccurs="0"> >>>> <xs:element ref="st:Measurement"/> >>>> </xs:sequence> >>>> <xs:attributeGroup ref="gml:AssociationAttributeGroup"/> >>>> </xs:complexType> >>>> >>>> This stations use case is just an example, I have a much more complex >>>> use case with the same problem were I cannot change the schema. >>>> So I'm wondering, did anyone had a similar use case ? did I made >>>> something wrong in the app-schema mappings-file ? is this something is >>>> just not supported by the encoder ? and did my first schema actually >>>> makes sense (in my point of view it looks sane) ? >>>> >>>> Any help with this will be very very welcomed :) >>>> >>>> Regards, >>>> >>>> Nuno Oliveira >>>> >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> >>>> >>>> Developer Access Program for Intel Xeon Phi Processors >>>> Access to Intel Xeon Phi processor-based developer platforms. >>>> With one year of Intel Parallel Studio XE. >>>> Training and support from Colfax. >>>> Order your platform today.http://sdm.link/xeonphi >>>> >>>> >>>> _______________________________________________ >>>> GeoTools-Devel mailing list >>>> GeoTools-Devel@lists.sourceforge.net >>>> https://lists.sourceforge.net/lists/listinfo/geotools-devel >>> >>> -- >>> == >>> GeoServer Professional Services from the experts! >>> Visithttp://goo.gl/it488V for more information. >>> == >>> Nuno Miguel Carvalho Oliveira >>> @nmcoliveira >>> Software Engineer >>> >>> GeoSolutions S.A.S. >>> Via di Montramito 3/A >>> 55054 Massarosa (LU) >>> Italy >>> >>> phone: +39 0584 962313 >>> fax: +39 0584 1660272 >>> mob: +39 333 8128928 >>> >>> http://www.geo-solutions.it >>> http://twitter.com/geosolutions_it >>> >>> ------------------------------------------------------- >>> >>> AVVERTENZE AI SENSI DEL D.Lgs. 196/2003 >>> Le informazioni contenute in questo messaggio di posta elettronica e/o >>> nel/i file/s allegato/i sono >>> da considerarsi strettamente riservate. Il loro utilizzo è consentito >>> esclusivamente al destinatario del messaggio, per le finalità indicate >>> nel messaggio stesso. Qualora riceviate questo messaggio senza esserne >>> il destinatario, Vi preghiamo cortesemente di darcene notizia via e >>> -mail e di procedere alla distruzione del messaggio stesso, >>> cancellandolo dal Vostro sistema. Conservare il messaggio stesso, >>> divulgarlo >>> anche in parte, distribuirlo ad altri soggetti, copiarlo, od >>> utilizzarlo per finalità diverse, costituisce comportamento >>> contrario ai >>> principi dettati dal D.Lgs. 196/2003. >>> The information in this message and/or attachments, is intended >>> solely for the attention and use of >>> the named addressee(s) and may be confidential or proprietary in >>> nature or covered by the provisions of privacy act (Legislative Decree >>> June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not >>> in accord with its purpose, any disclosure, reproduction, copying, >>> distribution, or either dissemination, either whole or partial, is >>> strictly forbidden except previous formal approval of the named >>> addressee(s). If you are not the intended recipient, please contact >>> immediately the sender by telephone, fax or e-mail and delete the >>> information in this message that has been received in error. The >>> sender does not give any warranty or accept liability as the content, >>> accuracy or completeness of sent messages and accepts no >>> responsibility for changes made after they were sent or for other >>> risks which >>> arise as a result of e-mail transmission, viruses, etc. >>> >>> >>> ------------------------------------------------------------------------------ >>> >>> >>> >>> Developer Access Program for Intel Xeon Phi Processors >>> Access to Intel Xeon Phi processor-based developer platforms. >>> With one year of Intel Parallel Studio XE. >>> Training and support from Colfax. >>> Order your platform today. http://sdm.link/xeonphi >>> >>> >>> _______________________________________________ >>> GeoTools-Devel mailing list >>> GeoTools-Devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/geotools-devel >> >> >> >> ------------------------------------------------------------------------------ >> >> >> >> >> >> _______________________________________________ >> GeoTools-Devel mailing list >> GeoTools-Devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/geotools-devel >> > -- == GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information. == Nuno Miguel Carvalho Oliveira @nmcoliveira Software Engineer GeoSolutions S.A.S. Via di Montramito 3/A 55054 Massarosa (LU) Italy phone: +39 0584 962313 fax: +39 0584 1660272 mob: +39 333 8128928 http://www.geo-solutions.it http://twitter.com/geosolutions_it ------------------------------------------------------- AVVERTENZE AI SENSI DEL D.Lgs. 196/2003 Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e -mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003. The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc. ------------------------------------------------------------------------------ _______________________________________________ GeoTools-Devel mailing list GeoTools-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel