CRUD: Update

From OSF Wiki
Jump to: navigation, search
CRUD: Update endpoint version:
1.1
2
2.1
3

The CRUD: Update Web service is used to update a published revision of an instance record. The service may also be used to create a new (unpublished) revision of an instance record. (Unpublished revisions may subsequently be changed to a published status, a feature useful for testing or draft purposes.)

Developers communicate with the CRUD: Update Web service using the HTTP POST method. You may request any of the available content types (*/*).

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 3 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 published revision 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.

Every time this web service endpoint is called, a new revision can be created in the revisions graph of the dataset where the record is getting indexed. The status of this revision is determined by the lifecycle parameter of the endpoint. If the lifecycle stage specified in the query is not published then a revision will be created, but the actual record won't be updated in the dataset. If the lifecycle stage is published then the endpoint ensure that the previous latest revision is currently published, and then it will update the record in the dataset, and create a revision for that record in the revisions graph.

If the revision parameter is false then the record will be updated in the dataset, but no revision will be created in the revision graph and the currently revision marked as published won't be updated neither. This means that is that if a revision for that record is re-published, then these unrevisioned changes will be lost.

It also update possible reification statements. All the reification statements are saved in the revisions records.

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 solr_schema_locale_v1_x.xml schema
  3. The network.ini configuration file specify that the OSF Web Service instance is geo-enabled by specifying geoenabled = true in the [geo] 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=&mime=&dataset=&lifecycle=&revision=&interface=&version=

URI dynamic parameters description:

Note: All parameters have to be URL-encoded

  • document. RDF document where instance record(s) to update are described. The size of this document is limited to 8MB
  • mime. Mime type of the RDF document specified in the document parameter. One of:
    • application/rdf+xml — RDF document serialized in XML
    • application/rdf+n3 — RDF document serialized in N3
  • dataset. Dataset URI where to update the indexed the RDF document
  • lifecycle. Publication lifecycle stage of the record. One of:
    • published (default)
    • archive
    • experimental
    • pre_release
    • staging
    • harvesting
    • unspecified
  • revision. Specify if we want to create a new revision or not for the updated record. One of:
    • true (default)
    • false
  • intereface. 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'
  • version. (default: 3.0) Version of the interface to query

Available Sources Interfaces

A source interface is a way to process a web service query. Different sources interfaces can be implemented for the same OSF 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 interface 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 OSF Web Service 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.


Source Interface Name Description
default Default source interface for this OSF Web Service endpoint. This interface implements the default behavior of this OSF Web Service endpoint.

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).


HTTP 200

Message Description
OK


HTTP 400

ID Level Name Description
WS-CRUD-UPDATE-200 Warning No RDF document to index No RDF document defined for this query
WS-CRUD-UPDATE-201 Warning Unknown MIME type for this RDF document Unknown MIME type defined for the target RDF document for this query
WS-CRUD-UPDATE-202 Warning No dataset specified No dataset URI has been defined for this query
WS-CRUD-UPDATE-300 Fatal Syntax error in the RDF document A syntax error has been detected in the RDF document
WS-CRUD-UPDATE-301 Fatal Can't update the record(s) in the triple store An error occured when we tried to update the record(s) in the triple store
WS-CRUD-UPDATE-302 Fatal Can't list the record(s) that have to be updated An error occured when we tried to list all the record(s) that have to be updated
WS-CRUD-UPDATE-303 Fatal Can't delete the temporary update graph An error occured when we tried to delete the temporary update graph
WS-CRUD-UPDATE-304 Fatal Can't update the Solr index An error occured when we tried to update the Solr index
WS-CRUD-UPDATE-305 Fatal Can't commit changes to the Solr index An error occured when we tried to commit changes to the Solr index
WS-CRUD-UPDATE-307 Fatal Can't parse RDF document Can't parse the specified RDF document
WS-CRUD-UPDATE-309 Fatal Can't parse the classHierarchySerialized.srz file We can't parse the classHierarchySerialized.srz file. Please do make sure that this file is properly serialized. You can try to fix that issue by re-creating a serialization file from the latest version of the OntologyRead web service endpoint and to replace the result with the current file being used.
WS-CRUD-UPDATE-310 Fatal Requested source interface not existing The source interface you requested is not existing for this web service endpoint.
WS-CRUD-UPDATE-311 Fatal Requested incompatible Source Interface version The version of the source interface you requested is not compatible with the version of the source interface currently hosted on the system. Please make sure that your tool get upgraded for using this current version of the endpoint.
WS-CRUD-UPDATE-312 Fatal Unknown publication lifecycle stage The publication lifecycle stage that has been specified for this query is unknown. Known publication lifecycle stages are: published, archive, experimental, pre_release, staging, harvesting, unspecified
WS-CRUD-UPDATE-313 Fatal Latest revision of this record is unpublished You cannot create a new published revision of a record if a more recent unpublished revision exists for that record. The first thing you have to do is to use the Revision: Update web service endpoint to publish the latest revision and then you will be able to use this web service endpoint to create this new published revision.
WS-CRUD-UPDATE-314 Fatal Can't query the revisions graph Can't read the revisions graph to get the lifecycle stage of the last revision
WS-CRUD-UPDATE-315 Fatal Can't get the description of the initial version of this record An error occured when we tried to get the description of the initial version of this record

HTTP 403

ID Level Name Description
WS-AUTH-VALIDATION-100 Fatal Unauthorized Request Your request cannot be authorized for this web service call
WS-AUTH-VALIDATION-101 Fatal Unauthorized Request Your request cannot be authorized for this web service call
WS-AUTH-VALIDATION-102 Fatal Couldn't authorize request An internal error occured when we tried to authorize this request
WS-AUTH-VALIDATION-103 Fatal Unauthorized Request Your request cannot be authorized for this user: "---", on this dataset: "---", using this web service endpoint: "---"


HTTP 406

Message Description
Not Acceptable Unacceptable mime type requested


HTTP 500

Message Description
Internal Error