users@jpa-spec.java.net

[jpa-spec users] [jsr338-experts] Re: BNF question: how to parse the example containing KEY, VALUE (and LIKE)

From: Christian Romberg <cromberg_at_versant.com>
Date: Fri, 22 Jun 2012 12:02:00 +0200

Hi Linda,

I think this issue is still open.

I think, while it might now be possible to parse the following two queries:

(1)
SELECT i.name, p
FROM Item i JOIN i.photos p
WHERE KEY(p) LIKE ‘%egret’

(2)
SELECT i.name, p
FROM Item i JOIN i.photos p
WHERE VALUE(p) LIKE ‘%egret’

the following query still can't be parsed:

(3)
SELECT i.name, p
FROM Item i JOIN i.photos p
WHERE p LIKE ‘%egret’

But (3) is defined to be semantically identical to (2), e.g. see footnote
57 on page 153 of the draft dated 06/19/2012

Regards,

Christian

On Tue, Jun 19, 2012 at 6:54 PM, Linda DeMichiel <linda.demichiel_at_oracle.com
> wrote:

> Hi Christian,
>
> I thought I had fixed this in the spec draft I had uploaded a couple of
> weeks ago.
> On closer inspection, it looks like I had garbled the editing. Please
> have a look
> at the revised version which I just uploaded.
>
> thanks,
>
> -Linda
>
>
>
> On 6/14/2012 5:23 AM, Christian Romberg wrote:
>
>> Hi Linda,
>>
>> Any update on the issue below?
>>
>> Thank you!
>>
>> Christian
>>
>> On Wed, Mar 28, 2012 at 9:30 AM, Christian Romberg <cromberg_at_versant.com<mailto:
>> cromberg_at_versant.com>> wrote:
>>
>> Hi Linda,
>>
>>
>> > Did you mean more than that?
>>
>> Yes, a bit more:
>>
>> All terms derived from qualified_identification_**variable or
>> composable_qualified_**identification_variable start with
>> KEY, VALUE or ENTRY, respectively.
>>
>> However, section 4.4.4, footnote 56 and the referred section 4.4.2
>> state "the use of VALUE is optional"
>>
>> E.g. consider this query (modfied example from the spec, VALUE instead
>> of KEY)
>>
>> SELECT i.name <http://i.name>, p
>>
>>
>> FROM Item i JOIN i.photos p
>> WHERE VALUE(p) LIKE ‘%egret’
>>
>> which would now be parsable after your suggested BNF modifications, is
>> equivalent to:
>>
>> SELECT i.name <http://i.name>, p
>>
>>
>> FROM Item i JOIN i.photos p
>> WHERE p LIKE ‘%egret’
>>
>> which might still not be parsable, because we do only have a
>> 'identification_variable' here, and not a
>> 'qualified_identification_**variable'.
>>
>> Thank you!
>>
>> Christian
>>
>>
>> On Tue, Mar 27, 2012 at 8:08 PM, Linda DeMichiel <
>> linda.demichiel_at_oracle.com <mailto:linda.demichiel@**oracle.com<linda.demichiel_at_oracle.com>>>
>> wrote:
>>
>> Hi Christian,
>>
>> I had intended that we would treat KEY and VALUE the same in the
>> below.
>>
>> Did you mean more than that?
>>
>> regards,
>>
>> -Linda
>>
>>
>>
>> On 3/27/2012 12:14 AM, Christian Romberg wrote:
>>
>> Hi Linda and Michael,
>>
>> We do also need to cover the special short-cut case, that
>> "VALUE(identification___**variable)" is equivalent to just
>> "identification_variable"
>>
>>
>> Cheers,
>>
>> Christian
>>
>> On Mon, Mar 26, 2012 at 11:20 PM, Linda DeMichiel <
>> linda.demichiel_at_oracle.com
>> <mailto:linda.demichiel@**oracle.com<linda.demichiel_at_oracle.com>>
>> <mailto:linda.demichiel@__orac**le.com <http://oracle.com>
>>
>> <mailto:linda.demichiel@**oracle.com<linda.demichiel_at_oracle.com>>>>
>> wrote:
>>
>> Hi Michael,
>>
>>
>> On 3/26/2012 2:14 PM, Michael Bouschen wrote:
>>
>> Hi Linda,
>>
>> more below ...
>>
>> Hi Michael,
>>
>> Thanks for following up on this. More below....
>>
>> On 3/22/2012 3:50 PM, Michael Bouschen wrote:
>>
>> Hi Linda,
>>
>> Hi Michael,
>>
>> On 3/19/2012 3:26 PM, Michael Bouschen
>> wrote:
>>
>> Hi Linda,
>>
>> Hi Christian,
>>
>> On 3/19/2012 6:54 AM, Christian
>> Romberg wrote:
>>
>> Dear group,
>>
>> While investigating how to
>> parse queries like this (all page/chapter
>> references refer to
>> EDR 2.1, Dec 19th, 2011):
>>
>> SELECT p
>> FROM Person p,
>> in(pc.firstnames) n
>> WHERE n = 'Joe'
>>
>> (firstnames is a List<String>)
>>
>> I came across the following
>> example provided in the spec, which is related
>> in structure:
>>
>> section 4.4.4, p. 153:
>>
>> SELECT i.name <http://i.name>
>> <http://i.name> <http://i.name>, VALUE(p)
>>
>>
>> FROM Item i JOIN i.photos p
>> WHERE KEY(p) LIKE ‘%egret’
>>
>> I looked at the BNF how this
>> is parsed, and did not find any derivation for
>> the FROM clause:
>>
>> where_clause ::= WHERE
>> conditional_expression
>> conditional_expression ::=
>> conditional_term
>> conditional_term ::=
>> conditional_factor
>> conditional_factor ::=
>> conditional_primary
>> conditional_primary ::=
>> simple_cond_expression
>> simple_cond_expression ::=
>> like_expression
>> like_expression ::=
>> string_expression LIKE pattern_value
>>
>> So eventually I end up with
>> 'string_expression', from which I can not derive a
>> 'qualified_identification_____**variable'
>>
>>
>>
>> string_expression ::=
>> state_field_path_expression |
>> string_literal |
>> input_parameter |
>> functions_returning_strings |
>> aggregate_expression |
>> case_expression |
>> function_invocation |
>> (subquery)
>>
>> Did I miss something, or is
>> there actually a rule missing in the grammar for
>> this?
>>
>>
>> Yes, you are right. The problem
>> is that
>> composable_qualified_____**identification_variable
>>
>>
>> is currently assumed to not
>> designate a state field, which it should.
>>
>> Not sure yet what the best fix for
>> this is in the grammar yet.
>>
>> would it work if we add
>> composable_qualified_____**identification_variable as an
>>
>> additional
>>
>> alternative in string_expression
>> (and datetime_expressio etc.):
>>
>>
>> I believe so, but I think we have to go
>> further. I.e., I think we need to support this also
>> in in_expression, function_arg,
>> case_operand, aggregate_expression, and
>> entity_or_value_expression.
>>
>> Do you agree?
>>
>>
>> yes agreed. The same holds true for
>> orderby_item, correct?
>>
>>
>> Yes, orderBy_item needs to be covered as well.
>>
>> I am hesitating about adding
>> composable_qualified_____**identification_variable
>>
>>
>> to state_field_path_expression though, because a
>> key may often not be a
>> state field of the object that is the map value.
>> I'm also concerned
>> about the order-by rules. E.g.,
>>
>> @Entity
>> public class Company {
>> @Id int id;
>> ...
>> @OneToMany // map key is division name
>> Map<String, VicePresident> organization;
>>
>>
>> The following query shouldn't work, because the
>> key is
>> not part of the result.
>>
>> I agree, the above query should not work. But how
>> about returning the key that is used in the order by:
>>
>> SELECT key(vp)
>> FROM Company c JOIN c.organization vp
>> WHERE vp.reports > 100
>> ORDER BY key(vp)
>>
>>
>> Yes. I agree that this should be legal.
>>
>>
>> I think this query should be legal. This means the
>> orderby_item needs to be covered the same as all
>> the other
>> places we
>> discussed where composable_qualified_____**identification_variable
>> needs to be added. But maybe we
>>
>> should extend the
>>
>> rules for
>> the orderby_item as specified in chapter 4.9 on pages
>> 183/184. We could add
>> composable_qualified_____**identification_variable
>>
>>
>> to the second rule that covers
>> state_field_path_expression already.
>>
>>
>> Yes, only I would cover this as a separate rule (to make
>> it very clear).
>>
>>
>> SELECT vp
>> FROM Company c JOIN c.organization vp
>> WHERE vp.reports > 100
>> ORDER BY key(vp)
>>
>>
>> So, I was thinking of just either adding
>> composable_qualified_____**identification_variable to
>>
>>
>> the needed places (ugly) or defining another
>> non-terminal, e.g.,
>> generalized_state_expression::**____=
>> state_field_path_expression |
>> composable_qualified_____**identification_variable.
>>
>>
>> What do you think?
>>
>>
>> I like the idea of having another non-terminal because
>> a
>> composable_qualified_____**identification_variable like
>>
>>
>> key(vp) is
>> not really a state_field_path_expression.
>> That would mean the new non-terminal
>> generalized_state_expression is used in all the places we
>> discussed before,
>> correct?
>>
>>
>> Yes.
>>
>> Thanks again! It looks like we're on the same page here.
>>
>> regards,
>>
>> -Linda
>>
>>
>>
>>
>> Regards Michael
>>
>>
>> regards,
>>
>> -Linda
>>
>>
>>
>> So maybe we extend state_field_path_expression
>> and add
>> composable_qualified_____**identification_variable as
>>
>>
>> an alternative:
>>
>> state_field_path_expression ::=
>> general_subpath.state_field |
>> composable_qualified_____**
>> identification_variable
>>
>>
>>
>> Regards Michael
>>
>>
>> regards,
>>
>> -Linda
>>
>> string_expression ::=
>> state_field_path_expression |
>> composable_qualified_____**identification_variable
>> |
>>
>>
>> string_literal |
>> ...
>>
>> Regards Michael
>>
>>
>> Thanks for pointing this out.
>>
>> -Linda
>>
>> \
>>
>>
>> Thank you!
>>
>> Christian
>>
>>
>> --
>> Christian Romberg
>> Chief Engineer| Versant GmbH
>> (T) +49 40 60990-0<tel:%2B49%2040%2060990-0> <tel:%2B49%2040%2060990-0>
>> <tel:%2B49%2040%2060990-0>
>> (F) +49 40 60990-113<tel:%2B49%2040%2060990-113>
>> <tel:%2B49%2040%2060990-113> <tel:%2B49%2040%2060990-113>
>> (E) cromberg_at_versant.com<mailto:
>> cromberg_at_versant.com>
>> <mailto:cromberg_at_versant.com <mailto:cromberg_at_versant.com>>
>> <mailto:cromberg_at_versant.com
>> <mailto:cromberg_at_versant.com>
>> <mailto:cromberg_at_versant.com <mailto:cromberg_at_versant.com>>**>
>> www.versant.com <http://www.versant.com> <
>> http://www.versant.com>
>> <http://www.google.com/url?q=_**___http%3A%2F%2Fwww.versant.**
>> com%____2F&sa=D&sntz=1&usg=___**_AFrqEzeeEBc_gN_____**8mxtt8xDB0tjXDXQVlw
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.versant.com%
>> **__2F&sa=D&sntz=1&usg=__**AFrqEzeeEBc_gN___**8mxtt8xDB0tjXDXQVlw>
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.versant.com%
>> **__2F&sa=D&sntz=1&usg=__**AFrqEzeeEBc_gN___**8mxtt8xDB0tjXDXQVlw
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.versant.com%**
>> 2F&sa=D&sntz=1&usg=**AFrqEzeeEBc_gN_**8mxtt8xDB0tjXDXQVlw<http://www.google.com/url?q=http%3A%2F%2Fwww.versant.com%2F&sa=D&sntz=1&usg=AFrqEzeeEBc_gN_8mxtt8xDB0tjXDXQVlw>
>> >>>|
>> www.db4o.com <http://www.db4o.com> <http://www.db4o.com>
>> <http://www.google.com/url?q=_**___http%3A%2F%2Fwww.db4o.com%*
>> *2F&____sa=D&sntz=1&usg=____**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**____FxJQ<http://www.google.com/url?q=____http%3A%2F%2Fwww.db4o.com%2F&____sa=D&sntz=1&usg=____AFrqEzdo3Q40RwKQPBtnPIuBYQd1di____FxJQ>
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.db4o.com%2F&
>> **__sa=D&sntz=1&usg=__**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**__FxJQ<http://www.google.com/url?q=__http%3A%2F%2Fwww.db4o.com%2F&__sa=D&sntz=1&usg=__AFrqEzdo3Q40RwKQPBtnPIuBYQd1di__FxJQ>
>> >
>>
>>
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.db4o.com%2F&
>> **__sa=D&sntz=1&usg=__**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**__FxJQ<http://www.google.com/url?q=__http%3A%2F%2Fwww.db4o.com%2F&__sa=D&sntz=1&usg=__AFrqEzdo3Q40RwKQPBtnPIuBYQd1di__FxJQ>
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.db4o.com%2F&**
>> sa=D&sntz=1&usg=**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**FxJQ<http://www.google.com/url?q=http%3A%2F%2Fwww.db4o.com%2F&sa=D&sntz=1&usg=AFrqEzdo3Q40RwKQPBtnPIuBYQd1diFxJQ>
>> >>>
>>
>> --
>> Versant
>> GmbH is incorporated in
>> Germany. Company registration number: HRB
>> 54723, Amtsgericht Hamburg.
>> Registered Office: Halenreie 42, 22359
>> Hamburg, Germany.
>> Geschäftsführer: Bernhard Wöbker, Volker John
>>
>> CONFIDENTIALITY
>> NOTICE: This e-mail message,
>> including any attachments, is for the sole
>> use of the intended
>> recipient(s) and may contain confidential or
>> proprietary information. Any
>> unauthorized review, use, disclosure or
>> distribution is prohibited. If
>> you are not the intended recipient,
>> immediately contact the sender
>> by reply e-mail and destroy all copies of
>> the original message.
>>
>>
>>
>>
>>
>> --
>> *Michael Bouschen*
>> *Prokurist*
>>
>> akquinet tech_at_spree GmbH
>> Bülowstr. 66, D-10783 Berlin
>>
>> Fon: +49 30 235 520-33<tel:%2B49%2030%20235%20520-
>> **33> <tel:%2B49%2030%20235%20520-__**33>
>> Fax: +49 30 217 520-12<tel:%2B49%2030%20217%20520-
>> **12> <tel:%2B49%2030%20217%20520-__**12>
>> Email: michael.bouschen_at_akquinet.de<mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>
>> <mailto:michael.bouschen@__akq**uinet.de <http://akquinet.de><mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>>
>>
>> Web: www.akquinet.de <
>> http://www.akquinet.de> <http://www.akquinet.de>
>> <http://www.akquinet.de>
>>
>>
>> akquinet tech_at_spree GmbH, Berlin
>> Geschäftsführung: Martin Weber, Dr.
>> Torsten Fink
>> Amtsgericht Berlin-Charlottenburg HRB
>> 86780 B
>> USt.-Id. Nr.: DE 225 964 680
>>
>>
>>
>> --
>> *Michael Bouschen*
>> *Prokurist*
>>
>> akquinet tech_at_spree GmbH
>> Bülowstr. 66, D-10783 Berlin
>>
>> Fon: +49 30 235 520-33<tel:%2B49%2030%20235%20520-
>> **33> <tel:%2B49%2030%20235%20520-__**33>
>> Fax: +49 30 217 520-12<tel:%2B49%2030%20217%20520-
>> **12> <tel:%2B49%2030%20217%20520-__**12>
>> Email: michael.bouschen_at_akquinet.de <mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>
>> <mailto:michael.bouschen@__akq**uinet.de <http://akquinet.de><mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>>
>> Web: www.akquinet.de <http://www.akquinet.de>
>> <http://www.akquinet.de> <http://www.akquinet.de>
>>
>>
>>
>> akquinet tech_at_spree GmbH, Berlin
>> Geschäftsführung: Martin Weber, Dr. Torsten
>> Fink
>> Amtsgericht Berlin-Charlottenburg HRB 86780 B
>> USt.-Id. Nr.: DE 225 964 680
>>
>>
>>
>> --
>> *Michael Bouschen*
>> *Prokurist*
>>
>> akquinet tech_at_spree GmbH
>> Bülowstr. 66, D-10783 Berlin
>>
>> Fon: +49 30 235 520-33 <tel:%2B49%2030%20235%20520-**33>
>> <tel:%2B49%2030%20235%20520-__**33>
>> Fax: +49 30 217 520-12 <tel:%2B49%2030%20217%20520-**12>
>> <tel:%2B49%2030%20217%20520-__**12>
>> Email: michael.bouschen_at_akquinet.de <mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>
>> <mailto:michael.bouschen@__akq**uinet.de <http://akquinet.de><mailto:
>> michael.bouschen@**akquinet.de <michael.bouschen_at_akquinet.de>>>
>> Web: www.akquinet.de <http://www.akquinet.de> <
>> http://www.akquinet.de> <http://www.akquinet.de>
>>
>>
>>
>> akquinet tech_at_spree GmbH, Berlin
>> Geschäftsführung: Martin Weber, Dr. Torsten Fink
>> Amtsgericht Berlin-Charlottenburg HRB 86780 B
>> USt.-Id. Nr.: DE 225 964 680
>>
>>
>>
>>
>> --
>> Christian Romberg
>> Chief Engineer| Versant GmbH
>> (T) +49 40 60990-0 <tel:%2B49%2040%2060990-0>
>>
>> (F) +49 40 60990-113 <tel:%2B49%2040%2060990-113>
>> (E) cromberg_at_versant.com <mailto:cromberg_at_versant.com>
>> <mailto:cromberg_at_versant.com
>> <mailto:cromberg_at_versant.com>>
>> www.versant.com <http://www.versant.com>
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.versant.com%
>> **__2F&sa=D&sntz=1&usg=__**AFrqEzeeEBc_gN___**8mxtt8xDB0tjXDXQVlw
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.versant.com%**
>> 2F&sa=D&sntz=1&usg=**AFrqEzeeEBc_gN_**8mxtt8xDB0tjXDXQVlw<http://www.google.com/url?q=http%3A%2F%2Fwww.versant.com%2F&sa=D&sntz=1&usg=AFrqEzeeEBc_gN_8mxtt8xDB0tjXDXQVlw>
>> >>|
>> www.db4o.com <http://www.db4o.com>
>> <http://www.google.com/url?q=_**_http%3A%2F%2Fwww.db4o.com%2F&
>> **__sa=D&sntz=1&usg=__**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**__FxJQ<http://www.google.com/url?q=__http%3A%2F%2Fwww.db4o.com%2F&__sa=D&sntz=1&usg=__AFrqEzdo3Q40RwKQPBtnPIuBYQd1di__FxJQ>
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.db4o.com%2F&**
>> sa=D&sntz=1&usg=**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**FxJQ<http://www.google.com/url?q=http%3A%2F%2Fwww.db4o.com%2F&sa=D&sntz=1&usg=AFrqEzdo3Q40RwKQPBtnPIuBYQd1diFxJQ>
>> >>
>>
>> --
>> Versant
>> GmbH is incorporated in Germany. Company registration number:
>> HRB
>> 54723, Amtsgericht Hamburg. Registered Office: Halenreie 42,
>> 22359
>> Hamburg, Germany. Geschäftsführer: Bernhard Wöbker, Volker John
>>
>> CONFIDENTIALITY
>> NOTICE: This e-mail message, including any attachments, is for
>> the sole
>> use of the intended recipient(s) and may contain confidential
>> or
>> proprietary information. Any unauthorized review, use,
>> disclosure or
>> distribution is prohibited. If you are not the intended
>> recipient,
>> immediately contact the sender by reply e-mail and destroy all
>> copies of
>> the original message.
>>
>>
>>
>>
>>
>>
>> --
>> Christian Romberg
>> Chief Engineer| Versant GmbH
>> (T) +49 40 60990-0 <tel:%2B49%2040%2060990-0>
>> (F) +49 40 60990-113 <tel:%2B49%2040%2060990-113>
>> (E) cromberg_at_versant.com <mailto:cromberg_at_versant.com>
>> www.versant.com
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.versant.com%**
>> 2F&sa=D&sntz=1&usg=**AFrqEzeeEBc_gN_**8mxtt8xDB0tjXDXQVlw<http://www.google.com/url?q=http%3A%2F%2Fwww.versant.com%2F&sa=D&sntz=1&usg=AFrqEzeeEBc_gN_8mxtt8xDB0tjXDXQVlw>
>> >|
>> www.db4o.com
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.db4o.com%2F&**
>> sa=D&sntz=1&usg=**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**FxJQ<http://www.google.com/url?q=http%3A%2F%2Fwww.db4o.com%2F&sa=D&sntz=1&usg=AFrqEzdo3Q40RwKQPBtnPIuBYQd1diFxJQ>
>> >
>>
>>
>> --
>> Versant
>> GmbH is incorporated in Germany. Company registration number: HRB
>> 54723, Amtsgericht Hamburg. Registered Office: Halenreie 42, 22359
>> Hamburg, Germany. Geschäftsführer: Bernhard Wöbker, Volker John
>>
>> CONFIDENTIALITY
>> NOTICE: This e-mail message, including any attachments, is for the sole
>> use of the intended recipient(s) and may contain confidential or
>> proprietary information. Any unauthorized review, use, disclosure or
>> distribution is prohibited. If you are not the intended recipient,
>> immediately contact the sender by reply e-mail and destroy all copies
>> of
>> the original message.
>>
>>
>>
>>
>>
>>
>> --
>> Christian Romberg
>> Chief Engineer| Versant GmbH
>> (T) +49 40 60990-0
>> (F) +49 40 60990-113
>> (E) cromberg_at_versant.com <mailto:cromberg_at_versant.com>
>> www.versant.com
>> <http://www.google.com/url?q=**http%3A%2F%2Fwww.versant.com%**
>> 2F&sa=D&sntz=1&usg=**AFrqEzeeEBc_gN_**8mxtt8xDB0tjXDXQVlw<http://www.google.com/url?q=http%3A%2F%2Fwww.versant.com%2F&sa=D&sntz=1&usg=AFrqEzeeEBc_gN_8mxtt8xDB0tjXDXQVlw>
>> >|
>> www.db4o.com <http://www.google.com/url?q=**http%3A%2F%2Fwww.db4o.com%2F&
>> **sa=D&sntz=1&usg=**AFrqEzdo3Q40RwKQPBtnPIuBYQd1di**FxJQ<http://www.google.com/url?q=http%3A%2F%2Fwww.db4o.com%2F&sa=D&sntz=1&usg=AFrqEzdo3Q40RwKQPBtnPIuBYQd1diFxJQ>
>> >
>>
>> --
>> Versant
>> GmbH is incorporated in Germany. Company registration number: HRB
>> 54723, Amtsgericht Hamburg. Registered Office: Halenreie 42, 22359
>> Hamburg, Germany. Geschäftsführer: Bernhard Wöbker, Volker John
>>
>> CONFIDENTIALITY
>> NOTICE: This e-mail message, including any attachments, is for the sole
>> use of the intended recipient(s) and may contain confidential or
>> proprietary information. Any unauthorized review, use, disclosure or
>> distribution is prohibited. If you are not the intended recipient,
>> immediately contact the sender by reply e-mail and destroy all copies of
>> the original message.
>>
>>
>>
>>


-- 
Christian Romberg
Chief Engineer | Versant GmbH
(T) +49 40 60990-0
(F) +49 40 60990-113
(E) cromberg_at_versant.com
www.versant.com<http://www.google.com/url?q=http%3A%2F%2Fwww.versant.com%2F&sa=D&sntz=1&usg=AFrqEzeeEBc_gN_8mxtt8xDB0tjXDXQVlw>|
www.db4o.com<http://www.google.com/url?q=http%3A%2F%2Fwww.db4o.com%2F&sa=D&sntz=1&usg=AFrqEzdo3Q40RwKQPBtnPIuBYQd1diFxJQ>
-- 
Versant
GmbH is incorporated in Germany. Company registration number: HRB
54723, Amtsgericht Hamburg. Registered Office: Halenreie 42, 22359
Hamburg, Germany. Geschäftsführer: Bernhard Wöbker, Volker John
CONFIDENTIALITY
NOTICE: This e-mail message, including any attachments, is for the sole
use of the intended recipient(s) and may contain confidential or
proprietary information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the intended recipient,
immediately contact the sender by reply e-mail and destroy all copies of
the original message.