Project

General

Profile

Bug #3939 » PLSID_requirements.html

Aaron Aaron, 04/20/2009 10:20 AM

 
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>
    (1-1/1)