XQuery Update Facility Working Drafts

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

XQuery Update Facility Working Drafts

Jonathan Robie

Two new Working Drafts were published today:

XQuery Update Facility
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdate-20060127/

XQuery Update Facility Use Cases
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdateusecases-20060127/

I wrote a quick summary of the functionality provided in the following
blog entry:

http://blogs.datadirect.com/jonathan_robie/2006/01/first_working_d.html

Hope this is useful!

Jonathan

--
Read my Blog: http://blogs.datadirect.com/jonathan_robie/
Learn XQuery:
http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
Learn XQJ (the JDBC for XQuery):
http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
Get DataDirect XQuery: http://www.datadirect.com/products/xquery/



Reply | Threaded
Open this post in threaded view
|

Re: XQuery Update Facility Working Drafts

Henry Luo
Glad to see the XQuery working group is working on the Update Facility.

I think it is useful to include another "move" update primitive. Although "move" can be achieved through combination of "insert" followed by "delete".
It will be much more convenient to have a simple "move".

I don't know what's the internal thinking on the expression level of the snapshot semantic:
"In principle, upd:applyUpdates could be invoked at a lower level, resulting in expression-level snapshot semantics. This change would require other semantic changes to ensure deterministic results. The Update Language Task Force is currently investigating the issue of snapshot semantics."

I have one suggestion here, which is based on the update mechanism used in Candle (http://www.vibrasoft.net/candle/manual.csp?pid=1038).
Firstly, I think it is important to preserve the functional nature (i.e. side-effect free) of the XQuery functions.
So I suggest to introduce a new routine type called "method" or "procedure".
Within functions, there can be updated instructions, by no applyUpdate. Thus the function only returns an update list and has no side effect.
"method" can contain mixture of flow control expr, update primitive and applyUpdate.
"method" can call function, by function cannot call method.

However, if we proceed along this line, allowing update instructions may seem redundant. And maintaining an update list can be complicated to implement.
Thus in Candle the update instructions are excluded completely from the functions. And each update instruction takes effect immediately.
Of course that becomes a totally different processing model.

Regards

Henry


Jonathan Robie wrote:

Two new Working Drafts were published today:

XQuery Update Facility
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdate-20060127/

XQuery Update Facility Use Cases
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdateusecases-20060127/

I wrote a quick summary of the functionality provided in the following
blog entry:

http://blogs.datadirect.com/jonathan_robie/2006/01/first_working_d.html

Hope this is useful!

Jonathan


Reply | Threaded
Open this post in threaded view
|

XQuery Update Facility - Transaction Expressions

TAN Kuan Hui
In reply to this post by Jonathan Robie

I note that transaction semantics (wrt ACID) are not mentioned
anywhere in the draft. Is this to be expected in subsequent
drafts or that it has already been factored in ?

Kuan Hui



Reply | Threaded
Open this post in threaded view
|

XQuery Update - unordered collection of update primitives

TAN Kuan Hui
In reply to this post by Jonathan Robie

Section 2.1, Extensions to the Processing Model, carries the following
definition.

[Definition: A pending update list is an unordered collection of update primitives, which represent node state changes that have not
yet been applied.]

What is the significance of an <<unordered>> collection of update primitives ?
How is updating integrity preserved with an unordered collection of update
instructions ? I could not find an explicit description on the above and
would appreciate clarifications.

Thank you.

Kuan Hui





Reply | Threaded
Open this post in threaded view
|

RE: XQuery Update - unordered collection of update primitives

Michael Rys

The updating integrity is guaranteed by the commutability constraints
(only operations considered to be commutable are allowed). The reason
you want an unordered collection is that you can perform your updates
efficiently and potentially in parallel.

Best regards
Michael

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On
> Behalf Of TAN Kuan Hui
> Sent: Monday, January 30, 2006 5:07 AM
> To: Jonathan Robie; [hidden email]
> Subject: XQuery Update - unordered collection of update primitives
>
>
> Section 2.1, Extensions to the Processing Model, carries the following
> definition.
>
> [Definition: A pending update list is an unordered collection
> of update primitives, which represent node state changes that have not
> yet been applied.]
>
> What is the significance of an <<unordered>> collection of
> update primitives ?
> How is updating integrity preserved with an unordered
> collection of update
> instructions ? I could not find an explicit description on
> the above and
> would appreciate clarifications.
>
> Thank you.
>
> Kuan Hui
>
>
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

RE: XQuery Update Facility - Transaction Expressions

Michael Rys
In reply to this post by TAN Kuan Hui

This has been factored in, in that we have the notion of a snapshot at
the top-level statement which needs to guarantee certain consistency
constraints.

Note that we expect the update language to be used in many different
transaction environments and thus do not define a single transactional
semantics. This means you could use the statements in a fully
serializable transaction, or in an optimistic CC environment.

Best regards
Michael

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On
> Behalf Of TAN Kuan Hui
> Sent: Monday, January 30, 2006 5:07 AM
> To: Jonathan Robie; [hidden email]
> Subject: XQuery Update Facility - Transaction Expressions
>
>
> I note that transaction semantics (wrt ACID) are not mentioned
> anywhere in the draft. Is this to be expected in subsequent
> drafts or that it has already been factored in ?
>
> Kuan Hui
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: XQuery Update - unordered collection of update primitives

Jonathan Robie
In reply to this post by Michael Rys

Looking at the spec, I see that we didn't really say that. We should put
a paragraph in the compatibility appendix to explain what Michael said
below.

Jonathan

Michael Rys wrote:

>The updating integrity is guaranteed by the commutability constraints
>(only operations considered to be commutable are allowed). The reason
>you want an unordered collection is that you can perform your updates
>efficiently and potentially in parallel.
>
>Best regards
>Michael
>
>  
>
>>-----Original Message-----
>>From: [hidden email] [mailto:[hidden email]] On
>>Behalf Of TAN Kuan Hui
>>Sent: Monday, January 30, 2006 5:07 AM
>>To: Jonathan Robie; [hidden email]
>>Subject: XQuery Update - unordered collection of update primitives
>>
>>
>>Section 2.1, Extensions to the Processing Model, carries the following
>>definition.
>>
>>[Definition: A pending update list is an unordered collection
>>of update primitives, which represent node state changes that have not
>>yet been applied.]
>>
>>What is the significance of an <<unordered>> collection of
>>update primitives ?
>>How is updating integrity preserved with an unordered
>>collection of update
>>instructions ? I could not find an explicit description on
>>the above and
>>would appreciate clarifications.
>>
>>Thank you.
>>
>>Kuan Hui
>>
>>
>>
>>
>>
>>
>>    
>>


--
Read my Blog: http://blogs.datadirect.com/jonathan_robie/
Learn XQuery: http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
Learn XQJ (the JDBC for XQuery): http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
Get DataDirect XQuery: http://www.datadirect.com/products/xquery/


Reply | Threaded
Open this post in threaded view
|

Re: XQuery Update Facility - Transaction Expressions

Jonathan Robie
In reply to this post by Michael Rys

Michael Rys wrote:

>This has been factored in, in that we have the notion of a snapshot at
>the top-level statement which needs to guarantee certain consistency
>constraints.
>
>Note that we expect the update language to be used in many different
>transaction environments and thus do not define a single transactional
>semantics. This means you could use the statements in a fully
>serializable transaction, or in an optimistic CC environment.
>  
>

I think the XQuery Update Facility Requirements says quite a bit about
transactional characteristics here:

http://www.w3.org/TR/2005/WD-xquery-update-requirements-20050603/#N1026E

We say atomicity, consistency, and durability must be observed. We
decided that isolation is a SHOULD, since it's not clear what we can
reasonably achieve in the very wide variety of environments that have
XQuery implementations - it would be nice if there were a good solution,
but we're not at all confident we could find one, so isolation may wind
up being implementation defined.

The requirements also answer Kuan Hui's question about explicit support
for transactions in XQuery syntax - we MAY add support for transactions
within a given query, but do not see this as a requirement for our first
updates recommendation. And our initial work on this was not promising,
we found some problems that were difficult to solve. I'd rather get
updates out quickly and think about finer grained transactions in a
future version. We need some version of updates quickly, and if we stop
to solve all interesting problems, it won't be quick.

I think all of the things the requirements say about transactions should
be stated explicitly in our spec - I do think the spec is consistent
with our requirements, but it is not very explicit about that fact.

Thanks, Kuan Hui!

Jonathan

--
Read my Blog: http://blogs.datadirect.com/jonathan_robie/
Learn XQuery: http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
Learn XQJ (the JDBC for XQuery): http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
Get DataDirect XQuery: http://www.datadirect.com/products/xquery/


Reply | Threaded
Open this post in threaded view
|

RE: XQuery Update Facility Working Drafts

Fiebig, Thorsten
In reply to this post by Jonathan Robie

Hi,

I like the update proposal, but I have one major concern. My current
observation is that proposal allows the removal of document nodes from
an XDM instance via the "delete" operation. Assuming that my XDM
instance represents an XML database I can remove a document (node) from
my database via the "delete" operation.
On the other hand the constraints defined for the "insert" operation
seem to forbid the insertion of document nodes into an XDM instance. I
have a problem with that, because from my point of view this makes it
impossible to insert new document nodes into a database via XQuery
update.  

Best Regards,

Thorsten Fiebig


-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of
Jonathan Robie
Sent: Friday, January 27, 2006 9:11 PM
To: [hidden email]
Subject: XQuery Update Facility Working Drafts


Two new Working Drafts were published today:

XQuery Update Facility
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdate-20060127/

XQuery Update Facility Use Cases
W3C Working Draft 27 January 2006
http://www.w3.org/TR/2006/WD-xqupdateusecases-20060127/

I wrote a quick summary of the functionality provided in the following
blog entry:

http://blogs.datadirect.com/jonathan_robie/2006/01/first_working_d.html

Hope this is useful!

Jonathan

--
Read my Blog: http://blogs.datadirect.com/jonathan_robie/
Learn XQuery:
http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
Learn XQJ (the JDBC for XQuery):
http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
Get DataDirect XQuery: http://www.datadirect.com/products/xquery/




Reply | Threaded
Open this post in threaded view
|

RE: XQuery Update Facility Working Drafts

Michael Rys
In reply to this post by Jonathan Robie

The insert statement as currently defined needs a node as insertion
target. Since you cannot insert a document node into any other node, you
cannot insert it using the insert statement. You should use a mechanism
that is specific to your environment to insert documents. E.g. in SQL
you would use the SQL INSERT or UPDATE statement to insert the XML
document into a cell...

Best regards
Michael

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf
Of

> Fiebig, Thorsten
> Sent: Wednesday, February 01, 2006 1:22 PM
> To: Jonathan Robie; [hidden email]
> Subject: RE: XQuery Update Facility Working Drafts
>
>
> Hi,
>
> I like the update proposal, but I have one major concern. My current
> observation is that proposal allows the removal of document nodes from
> an XDM instance via the "delete" operation. Assuming that my XDM
> instance represents an XML database I can remove a document (node)
from

> my database via the "delete" operation.
> On the other hand the constraints defined for the "insert" operation
> seem to forbid the insertion of document nodes into an XDM instance. I
> have a problem with that, because from my point of view this makes it
> impossible to insert new document nodes into a database via XQuery
> update.
>
> Best Regards,
>
> Thorsten Fiebig
>
>
> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On Behalf
Of

> Jonathan Robie
> Sent: Friday, January 27, 2006 9:11 PM
> To: [hidden email]
> Subject: XQuery Update Facility Working Drafts
>
>
> Two new Working Drafts were published today:
>
> XQuery Update Facility
> W3C Working Draft 27 January 2006
> http://www.w3.org/TR/2006/WD-xqupdate-20060127/
>
> XQuery Update Facility Use Cases
> W3C Working Draft 27 January 2006
> http://www.w3.org/TR/2006/WD-xqupdateusecases-20060127/
>
> I wrote a quick summary of the functionality provided in the following
> blog entry:
>
>
http://blogs.datadirect.com/jonathan_robie/2006/01/first_working_d.html

>
> Hope this is useful!
>
> Jonathan
>
> --
> Read my Blog: http://blogs.datadirect.com/jonathan_robie/
> Learn XQuery:
> http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
> Learn XQJ (the JDBC for XQuery):
> http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
> Get DataDirect XQuery: http://www.datadirect.com/products/xquery/
>
>
>


Reply | Threaded
Open this post in threaded view
|

RE: XQuery Update Facility Working Drafts

Michael Kay-3

I remember raising a comment on the requirements document that there needed
to be features for adding documents to a collection and deleting documents
from a collection.

I suspect that the task force is focusing its energy on more
difficult/interesting problems...

Michael Kay
 

> -----Original Message-----
> From: [hidden email] [mailto:[hidden email]] On
> Behalf Of Michael Rys
> Sent: 01 February 2006 21:40
> To: Fiebig, Thorsten; Jonathan Robie; [hidden email]
> Subject: RE: XQuery Update Facility Working Drafts
>
>
> The insert statement as currently defined needs a node as insertion
> target. Since you cannot insert a document node into any
> other node, you
> cannot insert it using the insert statement. You should use a
> mechanism
> that is specific to your environment to insert documents. E.g. in SQL
> you would use the SQL INSERT or UPDATE statement to insert the XML
> document into a cell...
>
> Best regards
> Michael
>
> > -----Original Message-----
> > From: [hidden email] [mailto:[hidden email]] On Behalf
> Of
> > Fiebig, Thorsten
> > Sent: Wednesday, February 01, 2006 1:22 PM
> > To: Jonathan Robie; [hidden email]
> > Subject: RE: XQuery Update Facility Working Drafts
> >
> >
> > Hi,
> >
> > I like the update proposal, but I have one major concern. My current
> > observation is that proposal allows the removal of document
> nodes from
> > an XDM instance via the "delete" operation. Assuming that my XDM
> > instance represents an XML database I can remove a document (node)
> from
> > my database via the "delete" operation.
> > On the other hand the constraints defined for the "insert" operation
> > seem to forbid the insertion of document nodes into an XDM
> instance. I
> > have a problem with that, because from my point of view
> this makes it
> > impossible to insert new document nodes into a database via XQuery
> > update.
> >
> > Best Regards,
> >
> > Thorsten Fiebig
> >
> >
> > -----Original Message-----
> > From: [hidden email] [mailto:[hidden email]] On Behalf
> Of
> > Jonathan Robie
> > Sent: Friday, January 27, 2006 9:11 PM
> > To: [hidden email]
> > Subject: XQuery Update Facility Working Drafts
> >
> >
> > Two new Working Drafts were published today:
> >
> > XQuery Update Facility
> > W3C Working Draft 27 January 2006
> > http://www.w3.org/TR/2006/WD-xqupdate-20060127/
> >
> > XQuery Update Facility Use Cases
> > W3C Working Draft 27 January 2006
> > http://www.w3.org/TR/2006/WD-xqupdateusecases-20060127/
> >
> > I wrote a quick summary of the functionality provided in
> the following
> > blog entry:
> >
> >
> http://blogs.datadirect.com/jonathan_robie/2006/01/first_worki
> ng_d.html
> >
> > Hope this is useful!
> >
> > Jonathan
> >
> > --
> > Read my Blog: http://blogs.datadirect.com/jonathan_robie/
> > Learn XQuery:
> >
> http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
> > Learn XQJ (the JDBC for XQuery):
> > http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
> > Get DataDirect XQuery: http://www.datadirect.com/products/xquery/
> >
> >
> >
>
>
>



Reply | Threaded
Open this post in threaded view
|

Re: XQuery Update Facility Working Drafts

John Snelson-3
In reply to this post by Michael Rys

Michael Rys wrote:
> You should use a mechanism
> that is specific to your environment to insert documents. E.g. in SQL
> you would use the SQL INSERT or UPDATE statement to insert the XML
> document into a cell...

Unless, of course, you don't use a relational database and SQL/XML. It
is desirable to have a standard way to add and remove documents from a
collection - since there isn't currently a way to do this if you aren't
using SQL/XML. in my opinion, this is a major ommission from the current
XQuery Update specification. A lot of people out there are aiming to use
XQuery as their only database manipulation language.

John

--
John Snelson, XML Consultant           +44-1865-811184
Parthenon Computing Ltd                http://blog.parthcomp.com/dbxml

Reply | Threaded
Open this post in threaded view
|

Re: XQuery Update - unordered collection of update primitives

TAN Kuan Hui
In reply to this post by Jonathan Robie

I presume the commutability constrains you are refering to
is required by section 3.5 Compatibility of Update Primitives.

Is this a really necessary constrain ? Is parallel update
<<on the same node>> a must requirement ? While I could
appreciate the value of unordered execution for query
processing, I am not too sure if the same is warranted
for updating.

Furthermore, whether you have an ordered or unordered
collection of update primitives, it actually has no impact on
XQuery update semantics since snapshot imposes a post-query
update. Right ? This statement remains true even if
expression level snapshots are considered, correct ?

Unless it is really justified, I would suggest to the WG
to consider removing the "unorder-ness" constrain on
update primitives; it can potentially remove a lot of
complicated rules from the specs.


----- Original Message -----
From: "Jonathan Robie" <[hidden email]>
To: "Michael Rys" <[hidden email]>
Cc: "TAN Kuan Hui" <[hidden email]>; <[hidden email]>
Sent: Monday, January 30, 2006 11:03 PM
Subject: Re: XQuery Update - unordered collection of update primitives


> Looking at the spec, I see that we didn't really say that. We should put
> a paragraph in the compatibility appendix to explain what Michael said
> below.
>
> Jonathan
>
> Michael Rys wrote:
>
> >The updating integrity is guaranteed by the commutability constraints
> >(only operations considered to be commutable are allowed). The reason
> >you want an unordered collection is that you can perform your updates
> >efficiently and potentially in parallel.
> >
> >Best regards
> >Michael
> >
> >
> >
> >>-----Original Message-----
> >>From: [hidden email] [mailto:[hidden email]] On
> >>Behalf Of TAN Kuan Hui
> >>Sent: Monday, January 30, 2006 5:07 AM
> >>To: Jonathan Robie; [hidden email]
> >>Subject: XQuery Update - unordered collection of update primitives
> >>
> >>
> >>Section 2.1, Extensions to the Processing Model, carries the following
> >>definition.
> >>
> >>[Definition: A pending update list is an unordered collection
> >>of update primitives, which represent node state changes that have not
> >>yet been applied.]
> >>
> >>What is the significance of an <<unordered>> collection of
> >>update primitives ?
> >>How is updating integrity preserved with an unordered
> >>collection of update
> >>instructions ? I could not find an explicit description on
> >>the above and
> >>would appreciate clarifications.
> >>
> >>Thank you.
> >>
> >>Kuan Hui
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
>
>
> --
> Read my Blog: http://blogs.datadirect.com/jonathan_robie/
> Learn XQuery: http://media.datadirect.com/download/docs/ddxquery/tutorial_query.html
> Learn XQJ (the JDBC for XQuery): http://www.datadirect.com/developer/xquery/topics/xqj_tutorial/
> Get DataDirect XQuery: http://www.datadirect.com/products/xquery/
>
>
>