OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

legaldocml message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: On ids for structures in multipleVersions documents


Ciao. 

I had a remaining task I promised last week to Grant, i.e. to provide my own point of view on how to solve the riddle of managing multiple coexisting versions of the same structure (say, section 9 of a bill) in a multi-versioning document (i.e., a document that maintains data about multiple subsequent versions and can be used to display the content of any of them). 

Let's make a simple example. Here you have section 9 of a bill as presented on January 1st, 2013. Each month (to simplify) it gets renumbered, first to 7 and next to 13 and finally again to 9, but the content never changes. The version of January 1st is a originalVersion, all the subsequent ones are multipleVersions. 

FIRST VERSION
-------------

<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="originalVersion" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval refersTo="#firstVersion" start="#e1" />
				</temporalGroup>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			...
			<section id="sec9">
				<num>Section 9</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

Pretty simple so far. On February 1st, a new version of the document gets approved, where section 9 is now section 7 and nothing else. The manifestation of the new expression becomes multipleVersions, we now have three temporalInfo elements (what has remained without changes, what has been deleted in version 2 and what has been inserted in version 2). 

As for the body, we have two choices. The first one is to mark simply and exactly the text fragments that have changed. Therefore there is still only ONE section element, and id and evolving ids are used as needed and we have two spans in the CONTENT of the num element associated to one or the other of the temporalInfo elements, as follows: 

SECOND VERSION, APPROACH ONE
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
				</temporalGroup>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			<section id="sec9" evolvingId="sec7">
				<num>Section 
					<span id="sp1" period="ti2">9</span>
					<span id="sp2" period="ti3">7</span>
				</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

The second approach is to duplicate the section element, and to maintain identity as follows: the currently existing section with the new content maintains the id, plus the evolving id, while the old section, maintaining the old content, has some appropriate identifier and no evolvingId (because it does not exist now and therefore needs no evolvingId). Furthermore, we add a renumberingInfo element to keep track of the changes (when only dealing with two versions, this element does not provide any additional information than evolving ids, but is will change from the second renumbering.  

SECOND VERSION, APPROACH TWO
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
				</temporalGroup>
				<renumberingInfo id="rI1" originalId="#sec9" evolvedId="sec7" start="#e2"/>
			</temporalData>
			<references source="#fv">... </references>
		</meta>
		<body>
			<section id="sec9-1" period="#ti2">
				<num>Section 9</num>
				<heading id="sec9-1-h">Some heading</heading>
				<content id="sec9-1-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9" evolvingId="sec7" period="#ti3">
				<num>Section 7</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

Ok so far? The choice between approach one and approach two is left to the marker, and in my mind it clearly depends on how much of section 9 has been changed besides the simple number. If much has changed, then approach two is better, if only the number has changed, then approach one is better. 

-----

On March 1st, the section gets renumbered again, this time to 13. Now we know the drill and the two approaches still work. Please note that in the two approaches the section meta is identical, while the body is different. 

THIRD VERSION, APPROACH ONE
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
				<eventRef id="e3" date="2013-03-01" source="#pr2" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
					<timeInterval id="ti4" refersTo="#repealedinVersion3" start="#e2" end="#e3" />
					<timeInterval id="ti5" refersTo="#addedinVersion3" start="#e3" />
				</temporalGroup>
				<renumberingInfo id="ri1" originalId="#sec9" evolvedId="sec7" start="#e2" end="#e3"/>
				<renumberingInfo id="ri2" originalId="#sec9" evolvedId="sec13" start="#e3"/>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			<section id="sec9" evolvingId="sec7">
				<num>Section 
					<span id="sp1" period="ti2">9</span>
					<span id="sp2" period="ti4">7</span>
					<span id="sp3" period="ti5">13</span>
				</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

THIRD VERSION, APPROACH TWO
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
				<eventRef id="e3" date="2013-03-01" source="#pr2" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
					<timeInterval id="ti4" refersTo="#repealedinVersion3" start="#e2" end="#e3" />
					<timeInterval id="ti5" refersTo="#addedinVersion3" start="#e3" />
				</temporalGroup>
				<renumberingInfo id="ri1" originalId="#sec9" evolvedId="sec7" start="#e2" end="#e3"/>
				<renumberingInfo id="ri2" originalId="#sec9" evolvedId="sec13" start="#e3"/>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			<section id="sec9-1" period="#ti2">
				<num>Section 9</num>
				<heading id="sec9-1-h">Some heading</heading>
				<content id="sec9-1-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9-2" period="#ti4">
				<num>Section 7</num>
				<heading id="sec9-2-h">Some heading</heading>
				<content id="sec9-2-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9" evolvingId="sec13" period="#ti5">
				<num>Section 13</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

Finally, on April 1st, we renumber the section back to section 9, but we want to maintain the twists that the section has gone through in the past. 

FOURTH VERSION, APPROACH ONE
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
				<eventRef id="e3" date="2013-03-01" source="#pr2" type="amendment" />
				<eventRef id="e4" date="2013-04-01" source="#pr3" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
					<timeInterval id="ti4" refersTo="#repealedinVersion3" start="#e2" end="#e3" />
					<timeInterval id="ti5" refersTo="#addedinVersion3" start="#e3" />
					<timeInterval id="ti6" refersTo="#repealedinVersion4" start="#e3" end="#e4" />
					<timeInterval id="ti7" refersTo="#addedinVersion4" start="#e4" />
				</temporalGroup>
				<renumberingInfo id="ri1" originalId="#sec9" evolvedId="sec7" start="#e2" end="#e3"/>
				<renumberingInfo id="ri2" originalId="#sec9" evolvedId="sec13" start="#e3" end="#e4"/>
				<renumberingInfo id="ri3" originalId="#sec9" evolvedId="sec9" start="#e4"/>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			<section id="sec9" evolvingId="sec7">
				<num>Section 
					<span id="sp1" period="ti2">9</span>
					<span id="sp2" period="ti4">7</span>
					<span id="sp3" period="ti6">13</span>
					<span id="sp4" period="ti7">9</span>
				</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>

FOURTH VERSION, APPROACH TWO
----------------------------
<akomaNtoso xmlns="http://docs.oasis-open.org/legaldocml/ns/akn/3.0/CSD05";>
	<bill contains="multipleVersions" name="bill">
		<meta>
			<identification source="#fv"> ... </identification>
			<lifecycle source="#fv">
				<eventRef id="e1" date="2013-01-01" source="#ro1" type="generation" />
				<eventRef id="e2" date="2013-02-01" source="#pr1" type="amendment" />
				<eventRef id="e3" date="2013-03-01" source="#pr2" type="amendment" />
				<eventRef id="e4" date="2013-04-01" source="#pr3" type="amendment" />
			</lifecycle>
			<temporalData source="#fv">
				<temporalGroup id="tg1">
					<timeInterval id="ti1" refersTo="#originalVersion" start="#e1" />
					<timeInterval id="ti2" refersTo="#repealedinVersion2" start="#e1" end="#e2" />
					<timeInterval id="ti3" refersTo="#addedinVersion2" start="#e2" />
					<timeInterval id="ti4" refersTo="#repealedinVersion3" start="#e2" end="#e3" />
					<timeInterval id="ti5" refersTo="#addedinVersion3" start="#e3" />
					<timeInterval id="ti6" refersTo="#repealedinVersion4" start="#e3" end="#e4" />
					<timeInterval id="ti7" refersTo="#addedinVersion4" start="#e4" />
				</temporalGroup>
				<renumberingInfo id="ri1" originalId="#sec9" evolvedId="sec7" start="#e2" end="#e3"/>
				<renumberingInfo id="ri2" originalId="#sec9" evolvedId="sec13" start="#e3" end="#e4"/>
				<renumberingInfo id="ri3" originalId="#sec9" evolvedId="sec9" start="#e4"/>
			</temporalData>
			<references source="#fv"> ... </references>
		</meta>
		<body>
			<section id="sec9-1" period="#ti2">
				<num>Section 9</num>
				<heading id="sec9-1-h">Some heading</heading>
				<content id="sec9-1-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9-2" period="#ti4">
				<num>Section 7</num>
				<heading id="sec9-2-h">Some heading</heading>
				<content id="sec9-2-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9-3" period="#ti6">
				<num>Section 13</num>
				<heading id="sec9-3-h">Some heading</heading>
				<content id="sec9-3-cnt">
					<p>Some content</p>
				</content>
			</section>
			<section id="sec9" evolvingId="sec9" period="#ti7">
				<num>Section 9</num>
				<heading id="sec9-h">Some heading</heading>
				<content id="sec9-cnt">
					<p>Some content</p>
				</content>
			</section>
		</body>
	</bill>
</akomaNtoso>   

That is all. I hope I did not make errors in the markup. I also hope I was clear and exhaustive. I surely was exhausting, but alas, what could I do?

Ciao

Fabio

--

Fabio Vitali                            Tiger got to hunt, bird got to fly,
Dept. of Computer Science        Man got to sit and wonder "Why, why, why?'
Univ. of Bologna  ITALY               Tiger got to sleep, bird got to land,
phone:  +39 051 2094872              Man got to tell himself he understand.
e-mail: fabio@cs.unibo.it         Kurt Vonnegut (1922-2007), "Cat's cradle"
http://vitali.web.cs.unibo.it/






[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]