Life Sciences Identifiers: Life Sciences Identifiers slides from Sean Martin (IBM) andamp; Martin Senger (EBI) History & Status: History andamp; Status I3C started the initiative concentration on early implementation IBM (an I3C member) implemented it main use case: PDB OMG-LSR initial submissions posted June 2003 submitters: EBI/IBM (joint submission), I3C Revised submission post October 2003 submitters: EBI/IBM/I3C (joint submission) Three basic parts: Three basic parts Life Science Indentifier Syntax how to name uniquely data entities Life Science Indentifier Resolution Service how to get (to) data entity from its LSID subpart: how to find the LSID Resolution Service Life Science Indentifier Assigning Service how to invent LSIDs for new data entities Life Science Indentifier Syntax: Life Science Indentifier Syntax Examples URN:LSID:ebi.ac.uk:SWISS-PROT.accession:P34355:3 URN:LSID:pdb.org:PDB:1AFT URN:LSID:ncbi.nlm.nih.gov:GenBank.accession:NT_001063:2 Parts: urn:lsid:andlt;authorityandgt;:andlt;namespaceandgt;:andlt;objectandgt;[:andlt;revisionandgt;] Basic rules: LSIDs must be assigned to at most one resource, and are never reassigned There is no requirement that a data entity has only one LSID An LSID usually represents a piece of data, but it is allowed to have LSIDs representing an abstract entities or concepts If an LSID represents real data, the LSID Resolution service must resolve always the same set of bytes representing such data If an LSID represents an abstract entity the LSID resolution service must always resolve an empty result Life Science Indentifier Resolution Service: Life Science Indentifier Resolution Service getAvailableServices(LSID) getData(LSID) getDataByRange(LSID,size) getMetadata(LSID, string[] accepted_formats) resolveMetadataSubset(LSID, string[] accepted_formats, string selector) … Data Meta data Meta data Meta data Metadata for the same LSID may differ depending on the service that provides them Data for the same LSID is always the same Data retrieval services getData(LSID) getDataByRange(LSID,size) getMetadata(LSID, string[] accepted_formats) resolveMetadataSubset(LSID, string[] accepted_formats, string selector) getData(LSID) getDataByRange(LSID,size) getMetadata(LSID, string[] accepted_formats) resolveMetadataSubset(LSID, string[] accepted_formats, string selector) What are acceptable metadata formats?: What are acceptable metadata formats? Metadata can be made available in multiple formats This to be as inclusive as possible Order of accepted formats expresses preference accepted_formats is a string Examples: XMI = x-application/xmi+xml RDF = x-application/rdf+xml Two wildcard entries accepted */* xxx/* (where xxx is a IANA registered media type) How to find an appropriate LSID Resolution Service from an LSID?: How to find an appropriate LSID Resolution Service from an LSID? LSID Resolution Service is well advertised with the correct endpoint (URL, …) usually the same resolution service works for a collection of data entities from the same repository If the 'authority' field in the LSID is usually a domain name, a DNS resolution service can be used to find the LSID Resolution Service Authority field must be a unique string this procedure is not part of the LSID spec because it may be too implementation specific but the implementations are encouraged to provide client-side libraries for this purpose Using LSID ResolutionDiscoveryService: getLSIDResolutionServices(LSID) a pointer to a Resolution Service that knows about the given LSID or or LSID Assigning Service: LSID Assigning Service The LSID Assigning service is responsible for creation of LSIDs for given data entities For example, it is provided by database storage for assigning LSIDs for submitted data entries Methods are: LSID assignLSID (String authority, String namespace, property_list) LSID assignLSIDFromList (property_list, LSID[] list_of_suggested_ids) String getLSIDPattern (String authority, String namespace, property_list) String getLSIDPatternFromList (property_list, String[] list_of_suggested_patterns) LSID assignLSIDForNewRevision (LSID previous_identifier) String [ ] getAllowedPropertyNames() String [ ] [ ] getAuthoritiesAndNamespaces() Slide9: Platform-Specific Models: Platform-Specific Models The revised submission includes two PSMs Java (Interfaces) Interfaces are normative Includes class defining an exception SOAP (WSDL) Compliant with WS-I Basic Profile 1.0a and previews of Basic Profile 1.1 Supports binary attachments in WSDL Acknowledgements: Acknowledgements IBM Jordi Albornoz Stefan Atev Ray Lee Alister Lewis-Bowen Sean Martin Chetan Murthy Dennis Quan Ben Szekely Alyssa Wolf EBI Martin Senger Ugis Sarkans Avaki Corporation Philip Werner Josh Apgar Stephanos Bacon Millennium Pharmaceuticals, Inc Ted Liefeld MIT/Whitehead Institute Brian Gilman I3C Mike Niemi