- From: Doug Davis <dug@us.ibm.com>
- Date: Mon, 12 Jan 2009 13:48:20 -0500
- To: public-ws-resource-access@w3.org
- Message-ID: <OF88BC5FB1.4FC2DC78-ON8525753C.004B1B2E-8525753C.00675027@us.ibm.com>
When enumerating datasets there are times when its necessary (and if supported by the data source) to have more advanced and optimized cursoring options. For example, a client may wish to change the direction in which it is iterating over the dataset, or jump to a certain index within large datasets - knowing it can skip some of the intermediate data items. Proposal: Modify the Pull operation so that some cursoring parameters can be passed-in that move the current position of the enumeration before the results are retrieved: <wsen:Pull ?> <wsen:EnumerationContext>?</wsen:EnumerationContext> <wsen:MaxTime>xs:duration</wsen:MaxTime> ? <wsen:MaxElements>xs:long</wsen:MaxElements> ? <wsen:MaxCharacters>xs:long</wsen:MaxCharacters> ? <wsen:MoveCursor> <wsen:Direction> Forward | Reverse </wsen:Direction> ? [ <wsen:Skip> xs:long </wsen:Skip> | <wsen:MoveTo> xs:long </wsen:MoveTo> | <wsen:MoveToStart/> | <wsen:MoveToEnd/> ] ? ... </wsen:MoveCursor> ? </wsen:Pull> /MoveCursor when present this element indicates how the current position within the dataset should be changed before the next chunk of data is retrieved. If not supported the datasource MUST generate a fault (define the fault). /MoveCursor/Direction when present, indicates whether the data source is moving forwards or backwards over the filtered dataset /MoveCursor/Skip when present, indicates how many items should be skipped in the filtered dataset, in the cursor's direction, before starting to retrieve the next set of data items to return. If this moves the cursor past the end of the data then no items will be returned in the response and the <wsen:EndOfSequence> element will be returned. /MoveCursor/MoveTo when present, indicates the ordinal position (1-based) within the filtered dataset to move the cursor to before starting to retrieve the next set of data items to return. This means that the data item at the specified position will be the first item in the response. If this moves the cursor past the end of the data then no items will be returned in the response and the <wsen:EndOfSequence> element will be returned. /MoveCursor/MoveToStart when present, indicates that the cursor must be moved to the start of the filtered dataset. In a forward moving enumeration the first item in the filtered dataset would be the first item returned. In a reverse moving enumeration the result from the Pull would be empty. /MoveCursor/MoveToEnd when present, indicates that the cursor must be moved to the end of the filtered dataset. In a reverse moving enumeration the last item in the filtered dataset would be the first item returned. In a forward moving enumeration the result from the Pull would be empty. If the datasource does not support this feature then a fault MUST be generated in place of a PullResponse. --- The PullResponse message will be modified too: <wsen:PullResponse> <wsen:EnumerationContext> ... </wsen:EnumerationContext> <wsen:Items CursorLocation="xs:long"? CursorDirection="Forward | Reverse"?> <xs:any> enumeration-specific element </xs:any> + <wsen:Items/> <wsen:EndOfSequence/> ? ... </wsen:PullResponse> wsen:Items@CursorLocation When present, this optional attribute, indicates the ordinal position of the first item in the Items list. This attribute MUST be present if the datasource supports the MoveCursor feature. wsen:Items@CursorDirection When present, this optional attribute, indicates the direction in which the datsource is iterating over the fitered dataset. This attribute MUST be present if the datasource supports the MoveCursor feature. thanks -Doug ______________________________________________________ STSM | Web Services Architect | IBM Software Group (919) 254-6905 | IBM T/L 444-6905 | dug@us.ibm.com
Received on Monday, 12 January 2009 18:49:23 UTC