1
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
2
|
<html>
|
3
|
<head>
|
4
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
<meta http-equiv="Content-Style-Type" content="text/css">
|
6
|
<title></title>
|
7
|
<meta name="Generator" content="Cocoa HTML Writer">
|
8
|
<meta name="CocoaVersion" content="949.43">
|
9
|
<style type="text/css">
|
10
|
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
|
11
|
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
|
12
|
span.s1 {font: 11.0px Monaco}
|
13
|
span.Apple-tab-span {white-space:pre}
|
14
|
</style>
|
15
|
</head>
|
16
|
<body>
|
17
|
<p class="p1"><br></p>
|
18
|
<p class="p1"><br></p>
|
19
|
<p class="p2">Requirements:</p>
|
20
|
<p class="p2">___________________</p>
|
21
|
<p class="p1"><br></p>
|
22
|
<p class="p2">A Kepler instance always has a unique namespace.</p>
|
23
|
<p class="p1"><span class="Apple-tab-span"> </span></p>
|
24
|
<p class="p2">Ship Kepler with a list of valid authorities for providing unique namespaces.</p>
|
25
|
<p class="p1"><br></p>
|
26
|
<p class="p2">During installation of a Kepler instance</p>
|
27
|
<p class="p2"><span class="Apple-tab-span"> </span>IF a network connection is available</p>
|
28
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>and an authority can be reached</p>
|
29
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>and a namespace can be assigned</p>
|
30
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>record authority and assigned namespace in the installation directory (not the cache directory)</p>
|
31
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>call this file InstanceAuthNamespace { file contents example:<span class="Apple-converted-space"> </span>kepler-project.org:3271 <span class="Apple-converted-space"> </span>}</p>
|
32
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>refer to an LSID generated using this kind of Authorized Namespace as a Verified LSID (VLSID)</p>
|
33
|
<p class="p2"><span class="Apple-tab-span"> </span>ELSE<span class="Apple-converted-space"> </span></p>
|
34
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>create a version 4 UUID and save it to disk as the existing namespace using "uuid" as the authority</p>
|
35
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>call this file InstanceAuthNamespace { file contents example: <span class="Apple-converted-space"> </span>uuid:<span class="s1">7e1d1daf-4890-4e84-bcf4-e9192254461a<span class="Apple-converted-space"> </span>}</span></p>
|
36
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>refer to an LSID generated using this kind of Unauthorized Namespace as a Probabilistic LSID (PLSID)</p>
|
37
|
<p class="p1"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
|
38
|
<p class="p1"><br></p>
|
39
|
<p class="p2">Kepler may only create LSIDs using the authority and namespace that is saved in the InstanceAuthNamespace file.</p>
|
40
|
<p class="p2"><span class="Apple-tab-span"> </span>(in future releases this file would be signed by the authority and could not be changed by the user without invalidating it)</p>
|
41
|
<p class="p1"><br></p>
|
42
|
<p class="p2">LSID history will be maintained</p>
|
43
|
<p class="p2"><span class="Apple-tab-span"> </span>The idea here is that if you have an object that does not match the InstanceAuthNamespace <span class="Apple-converted-space"> </span></p>
|
44
|
<p class="p2"><span class="Apple-tab-span"> </span>and you resave that object (with or without changing it) then the original LSID is recorded in the object metadata</p>
|
45
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>For example:<span class="Apple-converted-space"> </span>the InstanceAuthNamespace of an existing Kepler installation is kepler-project.org:983</p>
|
46
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>the user opens the "Display" actor that was shipped with Kepler as urn:lsid:kepler-project.org:1:1:1</p>
|
47
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>and saves it back to the library as "Display 2",<span class="Apple-converted-space"> </span></p>
|
48
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>the lsid for this new object is set as urn:lsid:kepler-project.org:983:1:1<span class="Apple-converted-space"> </span></p>
|
49
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(assuming this is the first object and first revision created with this InstanceAuthNamespace)</p>
|
50
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>also saved in the metadata for this object is the previous LSID ( urn:lsid:kepler-project.org:1:1:1 )</p>
|
51
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>call this type of LSID a Referral LSID (RLSID)</p>
|
52
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>In this way objects may have 1 LSID and an ordered list of RLSIDs (ordered from newest to oldest)</p>
|
53
|
<p class="p1"><br></p>
|
54
|
<p class="p1"><br></p>
|
55
|
<p class="p2">LSIDs may only be "deleted" and "created" never "updated".</p>
|
56
|
<p class="p2"><span class="Apple-tab-span"> </span>This implies that there will be no functionality developed to go back and retroactively update any objects that have been generated (or even uploaded) using PLSIDs.<span class="Apple-converted-space"> </span>If objects are assigned PLSIDs then those are their LSIDs.<span class="Apple-converted-space"> </span>If a user wishes to assign a VLSID to an object that has been labeled with a PLSID then they must save it as a new object (which would mean there is now an RLSID list that contains the original PLSID).</p>
|
57
|
<p class="p1"><br></p>
|
58
|
<p class="p2">______________________</p>
|
59
|
<p class="p2">Note:</p>
|
60
|
<p class="p1"><br></p>
|
61
|
<p class="p2">In this system, object revisions now become a function of both the LSID revision number and the RLSID list.</p>
|
62
|
<p class="p1"><br></p>
|
63
|
<p class="p2">These requirements are being driven by<span class="Apple-converted-space"> </span></p>
|
64
|
<p class="p2"><span class="Apple-tab-span"> </span>the need to<span class="Apple-converted-space"> </span></p>
|
65
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>always have a unique identifier for objects within Kepler,<span class="Apple-converted-space"> </span></p>
|
66
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(regardless of save state or successful communication with a server over an internet connection)</p>
|
67
|
<p class="p2"><span class="Apple-tab-span"> </span>the desire to</p>
|
68
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>minimize complexity associated with ID collision handling</p>
|
69
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>maintain provenance of Kepler objects</p>
|
70
|
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>use as much existing code as possible</p>
|
71
|
<p class="p1"><br></p>
|
72
|
</body>
|
73
|
</html>
|