IDs and LSIDs in OME-XML
The ID types used throughout the OME-XML model are designed to support identifiers in two forms. Where possible, the full LSID format should be used. If an LSID resolver is unavailable, an internal-only form may be used.
An LSID is a Life Science Identifier. It is a Uniform Resource Name standard, designed to allow the unique identifying of life sciences resources across the World Wide Web in line with the Semantic Web concept. It was designed to allow the naming or identifying of data and associated metadata that can be stored in multiple, distributed data stores.
For further information see https://en.wikipedia.org/wiki/LSID.
The format of a valid LSID is:
In OME-XML this is implemented as
The uniqueID can be any non-whitespace characters. The domain-name is any standard character (including Unicode) with dash and dot. It must contain at least one dot. The version block is not required but will be accepted if present.
The LSID specification defines the first three portions as
‘’’case-insensitive’’’, that is
URN:LSID:<Authority>. The remaining
portion is ‘’’case-sensitive’’’. In OME-XML however, we assume ‘’’lower
case’’’ for the first two portions
any case is acceptable but lower case is recommended for consistency.
The remaining portion is case-sensitive.
The shorter internal only form is:
The formats are enforced by the regular expressions defined in the schema document e.g. a sample regular expression for a Project ID is
The regex parser in XSD is slightly non standard and assumes that the pattern is always meant to start at the beginning of the line and finish at the end of the line, this means that !^ and $ are not necessary.
The simple regular expressions used provide a first level of validation but it is possible to produce an invalid LSID that will be accepted by the regex. As a tradeoff between complexity and usability, the domain-name check is quite lax e.g. it will accept www.ome-xml..org as valid despite the double dot.
sample.ome-xml.org:Project:1234 (domain but no protocol name) 1234 (no element name)