[dais-wg] Updates Based on DAIS Factory Results
Malcolm Atkinson
mpa at nesc.ac.uk
Tue May 31 13:02:08 CDT 2005
It would seem to me to be a very odd semantics that allowed update of a
result set. The result set may be incrementally instantiated much later
as it is read - what would an update mean?
Malcolm
>-----Original Message-----
>From: owner-dais-wg at ggf.org [mailto:owner-dais-wg at ggf.org] On
>Behalf Of Norman Paton
>Sent: 23 May 2005 14:31
>To: dais-wg at ggf.org
>Subject: [dais-wg] Updates Based on DAIS Factory Results
>
>
>The DAIS specifications support Factory operations, which return
>identifiers for
>the results of queries. However, there is a lack of symmetry in the
>handling of
>such results in the specs, in that their identifiers cannot
>currently be
>provided
>as inputs to update operations. This note comments on options for
>extending this
>capability.
>
>1. Relational
>
>In the relational model, data access and manipulation
>requests are directed
>at data services using the SQLAccess operation. Additional
>operations could
>be defined on the relational data access service or on the
>SQLRowSet that
>in some way push the contents of the row set to the
>relational data access
>service.
>
>1.1 Insert
>
>The following operation could be defined:
>
>SQLAccess::Insert(TableName, FieldMapping, RowsetIdentifier) ->
>SQLExecuteResponse
>
>Given the name of a table, insert the tuples from the rowset into the
>given table.
>
>Faults:
>- Unable to access Rowset.
>
>The semantics might most easily be assumed to be those of the
>existing
>SQL clause:
>
>insert into TableName [(FieldName1 [, FieldName2, ...])] SelectClause
>
>where the SelectClause is assumed to range over the tuples in the
>RowSet. The
>SQLExecuteResponse provides access to the SQLCommunicationsArea, and
>thus is able
>to provide access to a wide range of error conditions.
>
>The FieldMapping would represent a list of pairs, associating
>each named
>field in
>TableName with each of the fields in the SQLRowSetSchema; it could be
>optional if
>the names in the two settings had a 1:1 mapping.
>
>
>1.2 Delete
>
>The following operation could be defined:
>
>SQLAccess::Delete(TableName, FieldMapping, RowsetIdentifier) ->
>SQLExecuteResponse
>
>Given the name of a table, delete the tuples from the rowset from the
>given table.
>
>Faults:
>- Unable to access Rowset.
>
>The semantics might most easily be assumed to be those of the
>existing
>SQL clause:
>
>delete from TableName WHERE <condition>
>
>where the condition is assumed to test for tuples that match those in
>the RowSet,
>given the name mapping in FieldMapping. The match should probably
>involve equality
>on all attributes, but matching only on key is also an option.
>SQLExecuteResponse
>provides access to the SQLCommunicationsArea, and thus is able to
>provide access
>to a wide range of error conditions.
>
>The FieldMapping would represent a list of pairs, associating
>each named
>field in
>TableName with each of the fields in the SQLRowSetSchema; it could be
>optional if
>the names in the two settings had a 1:1 mapping.
>
>
>2. XML
>
>Unlike the WS-DAIR specification, the WS-DAIX spec contains top-level
>update operations,
>namely:
>
>XMLCollectionAccess::AddDocuments([Name, Collection, Data]) ->
>ResponseDocument
>XMLCollectionAccess::RemoveDocuments([Name], Collection) ->
>ResponseDocument
>XMLCollectionAccess::BulkLoad([Collections],[Name,
>Collection, Data]) ->
>ResponseDocument
>
>Where the above operations take Data as a parameter (for
>insertion only
>- deletes are
>by document name, which seems more natural than by document
>matching),
>one could
>envisage variants in which an XMLSequenceIdentifier is passed as a
>parameter.
>
>
>Anyway, these are some initial thoughts on how the named
>results of DAIS
>factory operations
>might be able to be used as inputs to other DAIS operations; comments
>invited.
>
>Norman
>
>
>
More information about the dais-wg
mailing list