[CITE-Forum] Self join without aliases: valid?

cite at lat-lon.de cite at lat-lon.de
Wed Mar 28 05:43:31 EDT 2018


Hi Andrea,

we already discussed this a few month ago but could not finally clarify it.

As you say software could think it's not a join. I partially agree: multiple
type names could be the indicator to interpret the request as (self-)join. But
there may be more complex examples of filters where the alias is required to be
distinct:

<wfs:Query typeNames="myns:Person myns:Person">
  <fes:Filter>
    <fes:And>
      <fes:PropertyIsEqualTo>
        <fes:ValueReference>myns:Person/Identifier</fes:ValueReference>
        <fes:Literal>12345</fes:Literal>
      </fes:PropertyIsEqualTo>
      <fes:PropertyIsEqualTo>
        <fes:ValueReference>myns:Person/spouse<fes:ValueReference>
        <fes:ValueReference>myns:Person/Identifier</fes:ValueReference>
      </fes:PropertyIsEqualTo>
    </fes:And>
  </fes:Filter>
</wfs:Query>


To have an consistent behaviour I tend to make the aliases mandatory in case of
a self-join. The test suite should be be improved.

Can someone from the authors of the specification clarify this in detail? Maybe
a change request is needed.

Best Regards,
Lyn



Am 21.03.2018 um 14:31 schrieb Andrea Aime via CITE-Forum:
> Hi,
> the CITE test engine is generating the following request:
> 
> <?xml version="1.0"?><wfs:GetFeature
> xmlns:wfs="http://www.opengis.net/wfs/2.0" count="10" service="WFS"
> startIndex="0" version="2.0.0">
>   <wfs:Query xmlns:ns50="http://cite.opengeospatial.org/gmlsf"
> typeNames="ns50:PrimitiveGeoFeature ns50:PrimitiveGeoFeature">
>     <Filter xmlns="http://www.opengis.net/fes/2.0">
>       <Intersects>
>         <ValueReference>ns50:PrimitiveGeoFeature/ns50:surfaceProperty</ValueReference>
>         <ValueReference>ns50:PrimitiveGeoFeature/ns50:curveProperty</ValueReference>
>       </Intersects>
>     </Filter>
>   </wfs:Query></wfs:GetFeature>
> 
> 
> Now, as you can see, it's a self join, but does not contain any alias
> declaration. As stated, software could be (imho) legitimately
> think it's not actually a join, and that the two fiters are both referring
> to the first "instance" of the feature type.
> 
> I've checked the specification, all self join examples use aliases, but I
> do not see a clear request to use aliases on self-join.
> Referencing a significant bit (from 7.9.2.4.2 "query the feature types
> aliases parameter"):
> 
> Aliases are typically used in query expressions, that perform a join
> operation (see 7.9.2.5.3), to support self-
> joins. That is a join of one feature type back to itself.
> 
> EXAMPLE
> typeNames="myns:Feat1 myns:Feat1" aliases="a b"
> 
> In this example, the first feature type, myns:Feat1, is aliased to the name
> "a" and the second feature type, myns:Feat1, is
> aliased to the name "b". Thus properties from the first instance of
> myns:Feat1 can be referenced in a request as
> "/a/property_name" and properties from the second instance of myns:Feat1
> can be referenced in a request as
> "/b/property_name" where the token "property_name" is used as a place
> holder for the name of any property of the feature
> myns:Feat1.
> 
> 
> So... can anybody clarifiy if this is an issue in the test engine, or if
> the servers are indeed supposed to understand
> the above request?
> 
> Cheers
> Andrea
> 
> ==
> GeoServer Professional Services from the experts! Visit http://goo.gl/it488V
> for more information.
> ==
> 
> Ing. Andrea Aime
> @geowolf
> Technical Lead
> 
> GeoSolutions S.A.S.
> Via di Montramito 3/A
> 55054  Massarosa (LU)
> phone: +39 0584 962313
> fax: +39 0584 1660272
> mob: +39  339 8844549
> 
> 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.
> 
> 
> 
> _______________________________________________
> CITE-Forum mailing list
> CITE-Forum at lists.opengeospatial.org
> https://lists.opengeospatial.org/mailman/listinfo/cite-forum
> 

-- 
### -->  Bitte beachten Sie unsere neuen Rufnummern  <--  ###

--
l a t / l o n  GmbH
Aennchenstrasse 19                    53177 Bonn, Germany
phone ++49 +228 9477 9877             fax ++49 +228 9477 0154
http://www.lat-lon.de                 http://www.deegree.org

lat/lon gesellschaft für raumbezogene informationssysteme mbH
Registergericht: Amtsgericht Bonn, HRB 13042
Geschäftsführer: Jens Fitzke und Torsten Friebe


More information about the CITE-Forum mailing list