Table des matières
MKey WebServices Details
Webservice function :
The Mkey+ webservice provides 7 functions. These functions can be queried using HTTP requests. They can be reached using URLs created with the webservice address (http://mkey.services.identificationkey.fr) and a path to a webservice function. The seven functions are:
1. /identification/getDescriptiveData 2. /identification/getRemainingItemsAndDescriptorsUsingIDs 3. /identification/getDescription 4. /identification/removeSDD 5. /identification/changeDescriptionHistory
(BETA)
6. /identification/getSimilarityMap 7. /identification/getSimilarityMapForRemainingItem
For instance, the URL to call the first function is : http://mkey.services.identificationkey.fr/identification/getDescriptiveData
These functions return Json objects, and each element returned has a specific name (see Development API).
Performing an Interactive Identification using Mkey+ and a custom client
Development API
The parameters in entry of the Mkey+ API functions only use the stringified* version of the Mkey+ JSON objects.
The webservice listen to GET query methods and the dataType must be Jsonp.
Here is an example of a JQuery javascript code snippet that calls one of MKey+ function:
var webserviceURL = http://mkey.services.identificationkey.fr var sddFileURL = http://yourServer.com/yourSddFile.xml $.ajax({ url : webserviceURL + '/identification/getDescriptiveData', data : { sddURL : sddFileURL, withGlobalWeigth : true }, method : 'GET', dataType : 'jsonp' }).done(function(data) { … response management … }
- using the standard javascript function JSON.stringify()
0. Basic Json objects used and returned by Mkey+
Item: This object represents an item which can be described in a knowledge base. For taxonomists, it usually is a taxon.
{ name : String, an item's name alternativeName : String, an item's alternative name detail : String, an item's detailed description resourceIds : [long], the IDs of the resources associated to an item id : long, an item's id, unique identifier generated sequentially by Mkey+ }
Descriptor: This object is a tool that serves to describe Items, essentialy a Character for taxonomists. A Descriptor can be described with States (if it is a categorical Descriptor), or a Quantitative Measure (If it is a quantitative Descriptor).
{ name : String, a Descriptor's name detail : String, a Descriptor's detailed description resourceIds : [long], the IDs of the resources associated to a Descriptor stateIds : [long], the IDs of the states associated to a Descriptor inapplicableState = [long], the states of a parent Descriptor for which a Descriptor is inapplicable isCategoricalType = Boolean, true if the Descriptor is a categorical Descriptor, false otherwise isQuantitativeType = Boolean, true if the Descriptor is a quantitative Descriptor, false otherwise isCalculatedType = Boolean, true if the Descriptor is a calculated Descriptor, false otherwise id : long, this Descriptor's id, an unique identifier generated sequentially by Mkey+ }
State: this object is a component of categorical Descriptors, e.g. for a Descriptor named “Color of the eye”, its States could be “Blue”, “Black”, etc…
{ name : String, a state's name detail : String, a state's detailed description resourceIds : [long], the IDs of the resources associated to a state id : long, a state's id, an unique identifier generated sequentially by Mkey+ }
Resource: this object is a storage object, and is used to store media resources, which can be associated to several objects, such as Items, Descriptors, States, etc…
{ name : String, a resource's name author : String, a resource's author type : String, a resource's media type ("video","image","sound") url : String, a resource's url legend : String, a resource's legend keywords : String, a resource's keywords id : long, a resource's id, an unique identifier generated sequentially by Mkey+ }
DescriptionElement: This object stores the description of an Item, according to a single Descriptor, it represents the content of a single cell of the taxa / characters matrix. It may contain the list of selected States if the Descriptor is a categorical Descriptor, or a QuantitativeMeasure object, if the Descriptor is a quantitative Descriptor.
{ calculatedStates : [state], the calculated states representing an item's description contextualWeight : int, the weigth of this description element quantitativeMeasure : quantitativeMeasure, the quantitative measure re- -prensenting an item description states : [state], the states representing an item's description unknown : boolean, true if this description element is unkwnow }
QuantitativeMeasure: This object is associated to a DescriptionElement object, for a given quantitative Descriptor and Item, it contains the quantitative measures used to describe a specific Item for a given quantitative Descriptor.
{ min : long, this QuantitativeMeasure's minimum value max : long, this QuantitativeMeasure's maximum mean : long, this QuantitativeMeasure's mean }
1. Service : getDescriptiveData
First function to be called, getDescriptiveData initializes the webservice both on the client and server side. It returns every element used in the identification process, parsed from the SDD file.
path : /identification/getDescriptiveData(String SDDurl, Boolean withGlobalWeigth)
parameter (in the javascript before stringify):
* SDDurl = String * withGlobalWeigth = Boolean
returns :
{descriptorsScoreMap,Items,Descriptors,States,Resources,DescriptorRootId,Depend- -ancyTable,InverteddependencyTable}
- Items = [item], every item contained in the SDD
- Descriptors = [Descriptor], every Descriptor contained in the SDD
- States = [state], every states contained in the SDD
- Resources = [resource], every resources contained in the SDD
- descriptorsScoreMap = {Descriptor,float}, an associative map, which associates
to each Descriptor its discriminant power.
- DescriptorRootId = [int], ids of the node roots ( no dependency)
- InvertedDependencyTable = {long,long}, the first long is the ID of the descriptor which parent is the second long.
2. Service : getJSONRemainingItemsAndRemainingDescriptorsScoreUsingIds
Main function, used to retrieve the remaining (i.e. non-discarded) Items based on a submitted description. It also returns the remaining Descriptors, along with their new discriminant power.
path : /identification/getJSONRemainingItemsAndRemainingDescriptorsScoreUsingIds(String SDDurl, String descriptions, String remainingItemsIDs, String discardedDescrip- -torsIDs, Boolean withScoreMap, Boolean withGlobalWeigth)
parameter (in the javascript before stringify):
SDDurl = String description = { selectedStatesNames : [int] quantitativeMeasure : {min=int,max=int,mean=int} } remainingItemsID = [int] discardedDescriptorsID = [int] withScoreMap = boolean withGlobalWeigth = boolean
returns :
{discardedDescriptorsInIteration,remainingItems,descriptorScoreMap}
- remainingItems = item, array of remaining items
- discardedDescriptorsInIteration = Descriptor, array of discarded descriptor, child descriptor can be discarded with its parents.
- descriptorsScoreMap = {Descriptor,float}, an associative map, which associates to each Descriptor its discriminant power.
3. Service : getDescription
Returns the description (i.e. the description of all the Descriptors) for an Item whose name has been passed as an argument. Used to display the item description window.
path : /identification/getDescription(String itemName, String SDDurl)
parameter (in the javascript before stringify):
- itemName : String
- SDDurl : String
returns :
{description,innapDescriptorId}
- description = [descriptionElement], array of description elements describing this item.
- innapDescriptorId = [int], array of inapplicable descriptor IDs
4. Service : removeSDD
Delete the sdd from the Mkey+ server memory.
path : /identification/removeSDD(String SDDurl)
parameter (in the javascript before stringify):
- SDDurl : String
returns :
nothing
5. Service : changeDescriptionHistory
Compute identification based on the description given in parameter. This function is used to modify at all time user's identification.
path : /identification/changeDescriptionHistory
parameter (in the javascript before stringify):
- SDDurl : String
- descriptions : [{selectedStatesNames : [int], quantitativeMeasure : {min=int,max=int,mean=int}}]
returns :
{discardedDescriptors,remainingItems,descriptorScoreMap,descriptions}
- remainingItems = item, array of remaining items
- discardedDescriptorsInIteration = Descriptor, array of discarded descriptor, child descriptor can be discarded with its parents.
- descriptorsScoreMap = {Descriptor,float}, an associative map, which associates to each Descriptor its discriminant power.
- descriptions = [{selectedStatesNames: [int],quantitativeMeasure : {min=int,max=int,mean=int}}], the new description computed by the function.
6. Service : getSimilarityMap
Return a map which link items with a float representing a similarity score. This score is computed base on the descriptions submitted by the user. Items which have few difference with the descriptions given in parameter will have a high score.
path : /identification/getSimilarityMap
returns : {similarityMap}
- similarityMap = [int,float], int is the item ID and float the corresponding similarity score.
7. Service : getSimilarityMapForRemainingItem
Return a map which link items with a float representing a similarity score. This score is computed base on a global description regrouping every remaining items description elements. Items which have few difference with the descrip- tions given in parameter will have a high score.
path : /identification/getSimilarityMapForRemainingItem
returns : {similarityMap}
- similarityMap = [int,float], int is the item ID and float the corresponding similarity score.