Personal tools
You are here: Home Developer Infrastructure Teams Architecture Kepler Life Science Identifiers (KeplerLSID)

Kepler Life Science Identifiers (KeplerLSID)

The page will describe the format of Kepler Life Science Identifiers and how they are used within the Kepler system.

KeplerLSID format

See org.kepler.objectmanager.lsid.KeplerLSID for the class that is used to store KeplerLSIDs.


A KeplerLSID is of the format



<authority> is a string that does not contain a colon character, it is usually the URL of the web service that assigned the namespace

<namespace> is a string that does not contain a colon character, it is usually a number that was uniquely assigned from the authority

<object> is a Long, it is just a number that gets incremented each time a new object ID is assigned by Kepler

<revision> is a Long, it is just a number that gets incremented anytime a change is made to the object that the LSID is attached to

<anchor> is an optional string (that does not contain a colon character)


The anchor does not affect the uniqueness of the LSID.

For example


is equal to



How KeplerLSIDs are assigned

Every time Kepler is run it uses a unique Authority and Namespace to determine unique object ids.  Kepler can only create new LSIDs that contain the authority and namespace that are registered with the running Kepler instance.


The Authority and Namespace are stored in a file called ~/KeplerData/modules/core/AuthorizedNamespace.  The last ObjectId and revision information is stored in the persistent KeplerData directory for the core module.  For the time being if you want to retrieve a new authority and namespace you can delete the ~/KeplerData/modules/core/AuthorizedNamespace file and restart Kepler.  You should see a message about the most recent namespace being retrieved:

bash-3.2$ cd build-area
bash-3.2$ rm ~/KeplerData/modules/core/AuthorizedNamespace
bash-3.2$ ant run
      [run] Kepler Initializing...
      [run] INFO  (org.kepler.util.AuthNamespace:generateAuthNamespace:265) 
             A unique namespace, 3562, was successfully retrieved from authority
      [run] INFO  (org.kepler.objectmanager.library.LibraryManager:buildLibrary:318)
             Building Library...


The list of webservices used to retrieve a unique namespace can be found in the configuration-manager/resources/configurations/configuration.xml file of the configuration-manager module under the authNamespaceServices entity.  You can implement your own service, an example and more info about the Kepler AuthNamespace webservice exists here.


Here is a list of known implementations (updated 10/10/2010)


How to generate a LSID for a XML description of an actor or director

All the LSIDs that are in svn checked in xml files were hand generated. Feel free to generate your own LSIDs and put them in by hand.

You can make up your own authority and namespace and  do something like

Where might be something like "" and yourlogin might be your username. You will need to keep track of your own object ids and revisions when modifying things by hand.

if you want to use the same web service that Kepler uses to automate namespace generation you can connect to the following URL in your web browser:

and append the following parameters to the URL ?username=kepler&password=kepler&
and this will return an incremented integer as the next available and unique namespace
The lsid here would be (if the namespace returned was 10001)

Where the authority in this case is the actual URL of the web service that generated the namespace

Or you can implement your own web service:
and modify the configuration to reflect it in configuration-manager/resources/configuration/configuration.xml    (authNamespaceServices).

entityId and derivedFrom attributes

A KeplerLSID is assigned to a NamedObj by setting an attribute with the name "entityId".  History of assigned LSIDs for an object are kept in an attribute called "derivedFrom".  These are visible within Kepler in the Outline tab by selecting the Show All checkbox.

ObjectManager.getIdFor(NamedObj) should be used for getting an ID that has already been assigned to an object (if the object does not have an ID one will be assigned to it).

ObjectManager.getIdAttributeFor(NamedObj) will return the NamedIdObj associated with the NamedObj (or null if it does not have one).

ObjectManager.assignIdTo(NamedObj) should be used for assigning LSIDs to NamedObjs.

Code references










Document Actions