Tomas,

to conform to the object-property pattern, in your schema introduce a property type that has, for example, an Email element (for simplicity I omit namespaces):

<complexType name="EmailPropertyType">
<sequence>
<element ref="Email"/>
</sequence>
</complexType>

To name properties with this type and be able to reference it, add an element with this type:

<element name="email" type=EmailPropertyType"/>

Then, inside your definition of Person, reference the property element:

<element ref="email"/>

Now you should be able to use app-schema feature chaining to define a multivalued "email" property and encode Person/email/Email.

There are several concrete examples amongst the GML schemas. Search for "PropertyType".

Kind regards,
Ben.

On 03/11/17 10:15, Tomas L. wrote:
Hi, thanks a lot for reply ..
Would you please be so kind and show/explain me how to change the schemas?
Just now, i have mappings like this:
mapping file ct_email.xml takes data from table "Emails" and contains definition
of FEATURE_LINK:
..
<sourceDataStore>datastore</sourceDataStore>
<sourceType>Email</sourceType>
<targetElement>ct:Email</targetElement>
...
<AttributeMapping>
    <targetAttribute>FEATURE_LINK</targetAttribute>
       <sourceExpression>
         <OCQL>PersonId</OCQL>
       </sourceExpression>
</AttributeMapping>
The same approach I have for web.
In mapping for person, I include both ct_email.xml and ct_web.xml, and define
mapping like:
<sourceDataStore>datastore</sourceDataStore>
<sourceType>Person</sourceType>
<targetElement>ct:Person</targetElement>
...
<AttributeMapping>
    <targetAttribute>Email</targetAttribute>
    <sourceExpression>
      <OCQL>Id</OCQL>
        <linkElement>ct:Email</linkElement>
          <linkField>FEATURE_LINK</linkField>
      </sourceExpression>
</AttributeMapping>
<AttributeMapping>
      <targetAttribute>Web</targetAttribute>
      <sourceExpression>
        <OCQL>Id</OCQL>
          <linkElement>ct:Web</linkElement>
          <linkField>FEATURE_LINK</linkField>
      </sourceExpression>
</AttributeMapping>
In case, i would like to add ContactInfoProperty, do i need to create extra
mapping file(s) (eg. ct_contactInfoProperty.xml),
which contains mapping of emails and webs? What would be datastore in this case?
And how should I link Person -> ContactInfoProperty -> ContactInfo ->
Emails/WebPages?
I have tables/viewsw for person, email and web in postgre db, and there is link
via person.Id -> email.PersonId, web.PersonId.
Do i need something similar for ContactInfoProperty/ContactInfo also?
Or is it set just in schema files?
Thanks for any advice,
Tomas
*Sent:* Tuesday, October 31, 2017 at 4:20 PM
*From:* "Gavin Medley" <med...@unavco.org>
*To:* "Tomas L." <ges...@email.com>
*Cc:* "Ben Caradoc-Davies" <b...@transient.nz>, geoserver-users
<geoserver-users@lists.sourceforge.net>
*Subject:* Re: [Geoserver-users] WFS nesting

Hi Tomas,

As Ben alluded to, I think you should first make sure that your goal is GML
compliant. That means it follows the Object-Property-Value model (or GML
striping rule). That is, GML compliant XML always consists of an Object, which
contains Properties. An object may have 0 to n properties “nested” on the same
level, like so:

|<Object> <Property1></Property1> <Property2></Property2> ... </Object> |

Each property must contain at most 1 value in GML. I believe this is where your
schema may violate the model. The value of a property may be simple, e.g.
|<Property1>foovalue</Property1>| or the value may itself be an object, like:

|... <Property1> <NestedObjectAsValue> <NestedProperty1></NestedProperty1> ...
</NestedObjectAsValue> </Property1> ... |

In your context, |<Person>| would be an object and |<ContactInfo>| would be a
property (potentially one of many). However, that property cannot contain
|<Emails>| /and/ |<Web>| as values (objects) since a property may only have a
single value. One way around this could be to skip the |<ContactInfo>| property
and use |<Emails>| and |<Web>| as properties of |<Person>|. Another would be to
create a |<contactInfoProperty>| element so that your output would look like:

|<Person> <!--Object--> <contactInfoProperty> <!--Property--> <ContactInfo>
<!--Value (Object)--> <Emails></Emails> <!--Property--> <Web></Web>
<!--Property--> </ContactInfo> </contactInfoProperty> </Person> |

Any solution will require changing your schema to be GML compliant since that is
the root of the problem.

HTH

-Gavin

​
On Tue, Oct 31, 2017 at 4:48 AM, Tomas L. <ges...@email.com
<mailto:ges...@email.com>> wrote:

     Hi, thanks for reply. Im so sorry, but i do not understand, what exactly 
you
     mean.
     How i wrote in my first question, im able to chain features exactly as you
     described:
     <featureMember>
     <Person>
     <email>
     <Email>content for email 1</Email>
     </email>
     <email>
     <Email>content for email 2</Email>
     </email>
     [...]
     I attached all my files as a ZIP, so you can see the output in 
"___output.xml".
     But i would like to "nest" emails/webs to special elements, so the output
     should be like this:
     <featureMember>
     <Person>
         .. person info
        <ContactInfo> <- .... one more "nested" element
          <Emails> <- .... another "nested" element
            <Email>
              ... email 1
            </Email>
          </Emails>
          <WebPages> <- ... another "nested"" element
            <Web>
              .... web 1
            </Web>
          </WebPages>
        </ContactInfo>
     ..
     </featureMember>

     I suppose it could be set in schema (xsd) files somehow, but i do not know
     how exactly it should be done.
     So i would really appreciate any help.
     Thanks a lot,
     Tomas
     *Sent:* Monday, October 30, 2017 at 9:24 PM
     *From:* "Ben Caradoc-Davies" <b...@transient.nz <mailto:b...@transient.nz>>
     *To:* "Tomas L." <ges...@email.com <mailto:ges...@email.com>>
     *Cc:* "Nuno Oliveira" <nuno.olive...@geo-solutions.it
     <mailto:nuno.olive...@geo-solutions.it>>,
     geoserver-users@lists.sourceforge.net
     <mailto:geoserver-users@lists.sourceforge.net>
     *Subject:* Re: [Geoserver-users] WFS nesting
     Tomas,

     for app-schema feature chaining to work properly, your XML schema must
     conform to the GML object/property model ("striping"). The encoded XML
     will be TypeName/propertyName/TypeName/propertyName/... . For example,
     with a multivalued "email" property:

     <featureMember>
     <Person>
     <email>
     <Email>content for email 1</Email>
     </email>
     <email>
     <Email>content for email 2</Email>
     </email>
     [...]

     This is required by GML. The pattern is as for GeometryPropertyType and
     similar. The reason is that this allows naming of properties and
     encoding of their concrete type (polymorphism). If your schema follows
     these rules, you will be able to use feature chaining to encode
     multivalued properties.

     Kind regards,
     Ben.

     On 30/10/17 23:50, Tomas L. wrote:
      > Thanks for answer. I know about app schema, im using it. Im able to join
      > elements through FEATURE_LINK, but have no luck with nesting of joined
     elements.
      > BR,
      > Tomas.
      > *Sent:* Monday, October 30, 2017 at 10:54 AM
      > *From:* "Nuno Oliveira" <nuno.olive...@geo-solutions.it
     <mailto:nuno.olive...@geo-solutions.it>>
      > *To:* geoserver-users@lists.sourceforge.net
     <mailto:geoserver-users@lists.sourceforge.net>
      > *Subject:* Re: [Geoserver-users] WFS nesting
      > Hi,
      >
      > The only way I know of achieving this in GeoServer is using App-Schema:
      > http://docs.geoserver.org/stable/en/user/data/app-schema/index.html
      >
      > This extension will allow you mappings between your database and a
     specific GML
      > based XML schema.
      >
      > Note that App-Schema is an extension to GeoServer and needs to be
     downloaded and
      > installed:
      > http://geoserver.org/release/stable/
      >
      > Regards,
      >
      > Nuno Oliveira
      >
      > On 10/29/2017 11:36 PM, geseus wrote:
      > > files.zip <http://osgeo-org.1560.x6.nabble.com/file/t381976/files.zip>
      > >
      > > Hi,
      > >
      > > I'm trying to do wfs with nested elements, but without success.
      > > I have 3 postgres tables: person, email, web.
      > > I'm able to join them, so output is like:
      > >
      > > <featureMember>
      > > <Person>
      > > .. person elements
      > >
      > > email 1 elements
      > >
      > >
      > > email 2 elements
      > >
      > > ..
      > > <Web>
      > > web 1 elements
      > > </Web>
      > > <Web>
      > > web 2 elements
      > > </Web>
      > >
      > > ...
      > >
      > > But I would like to have web and email info nested like this:
      > > <featureMember>
      > > <Person>
      > > .. person elements
      > >
      > >>>> HOW TO ADD THIS ELEMENT?
      > > <ContactInfo>
      > >
      > >>>> AND THIS ELEMENT?
      > > <Emails>
      > >
      > > email 1 elements
      > >
      > >
      > > email 2 elements
      > >
      > > </Emails>
      > > <WebPages>
      > > <Web>
      > > web 1 elements
      > > </Web>
      > > </WebPages>
      > >
      > > I do not know, how to create schema files and feature_link for that.
      > >
      > > And another question, i have three xml files, which contain the same
      > > datastores with exactly the same connection to database.
      > > Is it possible to define connection/datastore otside and include it 
somehow
      > > (so i have connection defined only once).
      > > And is it posible to crypt the password like this?
      > > <entry key="passwd">crypt1:SNtjcptw+CrnShpSnfw6hPBxUpGhWbIs</entry>
      > > (this doesnt work for me)
      > >
      > > All files im using are (hopefully) attached as a zip.
      > > Thanks a lot for any advice.
      > > Tomas
      > >
      > >
      > >
      > > --
      > > Sent from: 
http://osgeo-org.1560.x6.nabble.com/GeoServer-User-f3786390.html
      > >
      > >
     
------------------------------------------------------------------------------
      > > Check out the vibrant tech community on one of the world's most
      > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
      > > _______________________________________________
      > > Geoserver-users mailing list
      > >
      > > Please make sure you read the following two resources before posting 
to
     this
      > list:
      > > - Earning your support instead of buying it, but Ian Turton:
      > http://www.ianturton.com/talks/foss4g.html#/
      > > - The GeoServer user list posting guidelines:
      > http://geoserver.org/comm/userlist-guidelines.html
      > >
      > > Geoserver-users@lists.sourceforge.net
     <mailto:Geoserver-users@lists.sourceforge.net>
      > > https://lists.sourceforge.net/lists/listinfo/geoserver-users
      > >
      >
      > --
      > Regards,
      > Nuno Oliveira
      > ==
      > 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
      >
      > 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.
      >
      >
      >
     
------------------------------------------------------------------------------
      > Check out the vibrant tech community on one of the world's most
      > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
      > _______________________________________________
      > Geoserver-users mailing list
      >
      > Please make sure you read the following two resources before posting to
     this list:
      > - Earning your support instead of buying it, but Ian Turton:
      > http://www.ianturton.com/talks/foss4g.html#/
      > - The GeoServer user list posting guidelines:
      > http://geoserver.org/comm/userlist-guidelines.html
      >
      > Geoserver-users@lists.sourceforge.net
     <mailto:Geoserver-users@lists.sourceforge.net>
      > https://lists.sourceforge.net/lists/listinfo/geoserver-users
      >
      >
      >
      >
     
------------------------------------------------------------------------------
      > Check out the vibrant tech community on one of the world's most
      > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
      >
      >
      >
      > _______________________________________________
      > Geoserver-users mailing list
      >
      > Please make sure you read the following two resources before posting to
     this list:
      > - Earning your support instead of buying it, but Ian Turton:
     http://www.ianturton.com/talks/foss4g.html#/
      > - The GeoServer user list posting guidelines:
     http://geoserver.org/comm/userlist-guidelines.html
      >
      > Geoserver-users@lists.sourceforge.net
     <mailto:Geoserver-users@lists.sourceforge.net>
      > https://lists.sourceforge.net/lists/listinfo/geoserver-users
      >

     --
     Ben Caradoc-Davies <b...@transient.nz <mailto:b...@transient.nz>>
     Director
     Transient Software Limited <http://transient.nz/>
     New Zealand

     
------------------------------------------------------------------------------
     Check out the vibrant tech community on one of the world's most
     engaging tech sites, Slashdot.org! http://sdm.link/slashdot
     _______________________________________________
     Geoserver-users mailing list

     Please make sure you read the following two resources before posting to 
this
     list:
     - Earning your support instead of buying it, but Ian Turton:
     http://www.ianturton.com/talks/foss4g.html#/
     - The GeoServer user list posting guidelines:
     http://geoserver.org/comm/userlist-guidelines.html

     Geoserver-users@lists.sourceforge.net
     <mailto:Geoserver-users@lists.sourceforge.net>
     https://lists.sourceforge.net/lists/listinfo/geoserver-users

--
Gavin Medley
Software Engineer, UNAVCO
6350 Nautilus Drive
Boulder, CO 80301-5394
Mobile: 505-819-1270
med...@unavco.org <mailto:med...@unavco.org>


--
Ben Caradoc-Davies <b...@transient.nz>
Director
Transient Software Limited <http://transient.nz/>
New Zealand

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to