CRUD: Update

The CRUD: Update Web service is used to update an existing instance record indexed in a target dataset part of a WSF (Web Services Framework).

Developers communicate with the CRUD: Update Web service using the HTTP POST method. You may request any content type (*/*). '''No content is returned by the Web service endpoint if the endpoint successfully executed the query. Only a "200 OK" message will be returned in the header.'''

Version
This documentation page is used for the version 2 of this endpoint. Check at the top of this page to see the documentation pages for the other versions of this endpoint.

Usage
This Web service is intended to be used by any user that wants to update the description of an instance record. The update of a record is performed by two atomic actions: delete and create. All records described within the input RDF document will get updated on the system. For each of them, the Crud Update web service will remove all the triples we have defined for them in the target dataset, and then will re-insert the new ones.

This is the main difference between an Update of a given instance record, and the Creation (using Crud Create) of an already existing record: the update web service guaranties that only the triples of the updated version of an instance record will be in the system. Creating an already existing instance record, will overwrite existing triples, and will add new ones. But the ones from the old version of the instance record that are not in the new version won't be delete in the triple store instance, but will be deleted in the Solr instance because Solr documents can't be updated (they can only be replaced).

It also update possible reification statements.

Warning: if your RDF document contains blank nodes and that you try to update them using the CRUD: Update web service endpoint, this will results in the creation of a new set of resources with new blank nodes URIS. This means that resources specified as blank nodes can't be updated using this web service endpoint. The best practice is not using blank nodes.

Configuration
Here are a few things you can configure to change the behavior of a CRUD: Update web service endpoint.

Geo-Enable
You can geo-enable the CRUD: Update web service endpoint. By geo-enabling the service, you will change the behavior of the endpoint such that if it detects that a record that is being indexed has geo-related information, then it will properly index that information such that other geo-enabled services, such as the Search web service endpoint, can leverage that information to perform different geo-related tasks.

Also read that other zWiki page that tells you how to geo-enabled a record description: Geo-enabling Datasets

To geo-enable a CRUD: Update web service endpoint you have to make sure that:


 * 1) The Solr instance is using the the Solr Spatial Query fix, and read this introduction article for good background information about this topic: Location-aware search with Apache Lucene and Solr
 * 2) The Solr instance is using the   schema
 * 3) The network.ini configuration file specify that the structWSF instance is geo-enabled by specifying   in the   section

Web Service Endpoint Information
This section describes all you permissions you need in the WSF (Web Service Framework) to send a query to this Web service endpoint, and it describes how to access it.

To access this Web service endpoint you need the proper CRUD (Create, Read, Update and Delete) permissions on a specific graph (dataset) of the WSF. Without the proper permissions on this graph you won't be able to send any queries to the endpoint.

Needed registered CRUD permission:


 * Create: False
 * Read: False
 * Update: True
 * Delete: False

As shown on the graph URI:


 * URI of the dataset where the instance record is indexed

Here is the information needed to communicate with this Web service's endpoint. Descriptions of the parameters are included below.

''Note: if a parameter has a default value, the requester can omit it and the default value will be used. Also, some baseline Web services may not offer other values than the default.''

HTTP Method:


 * POST

Possible "Accept:" HTTP header field value:



URI:


 * http://[...]/ws/crud/update/ ?document=param1&mime=param2&dataset=param3&registered_ip=param4&interface=param5

URI dynamic parameters description:

Note: All parameters have to be URL-encoded


 * param1. RDF document where instance record(s) to update are described. The size of this document is limited to 8MB
 * param2. One of:
 * application/rdf+xml — RDF document serialized in XML
 * application/rdf+n3 — RDF document serialized in N3


 * param3. Dataset URI where to update the indexed the RDF document
 * param4. Target IP address registered in the WSF
 * param5. Source interface used for this web service query. The interface is a different way to process a query (different algorithms, different data management system, etc. The default interface is 'default'

Available Sources Interfaces
A source interface is a way to process a web service query. Different sources interfaces can be implemented for the same structWSF web service endpoint. Each interface will process the query differently, but all the queries to the web service endpoint will be the same, at the exception of the  parameter. Each interface shares the same API (the one defined by the web service endpoint), but their processing may differ (like using different algorithms, using different data management systems, etc.)

This is a list of the core interfaces for this endpoint. Organizations that hosts a structWSF network could create their own interface and make it available to the users. However such private source interface won't be part of this list, but should be publicized by the organization.

Query Answer from the Endpoint
If the query is successfully performed by the endpoint (i.e., the Web service resource has been properly created, updated or deleted), the endpoint will return the HTTP status message "200 OK" with an empty body. If an error occured, one of the HTTP status messages with the description of the error message in the body of the HTTP query will be returned.

HTTP Status Codes
Here are the possible HTTP status (error) codes returned by this Web service endpoint.

On error code and the specific error, a different message description can be issued (meaning a different error has been returned).


 * Code: 200
 * Message: OK


 * Code: 400
 * Message: Bad Request
 * Message description: No RDF document to index
 * Message description: No dataset specified
 * Message description: Unknown MIME type for this RDF document
 * Message description: Error #crud-update-100. Syntax error in the RDF document: XYZ
 * Message description: No unique identifier specified for this dataset
 * Message description: No target dataset
 * Message description: No Web service URI available
 * Message description: Target Web service XYZ not registered to this Web Services Framework
 * Message description: No access defined for this requester IP XYZ, dataset (XYZ) and Web service (XYZ)
 * Message description: The target Web service (XYZ) needs create access and the requested user (XYZ) doesn't have this access for that dataset (XYZ)
 * Message description: The target Web service (XYZ) needs read access and the requested user (XYZ) doesn't have this access for that dataset (XYZ)
 * Message description: The target Web service (XYZ) needs update access and the requested user (XYZ) doesn't have this access for that dataset (XYZ)
 * Message description: The target Web service (XYZ) needs delete access and the requested user (XYZ) doesn't have this access for that dataset (XYZ)


 * Code: 406
 * Message: Not Acceptable
 * Message description: Unacceptable mime type requested


 * Code: 500
 * Message: Internal Error