<div dir="ltr">thanks for replying to Jani :-)  wlt</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 19, 2014 at 11:23 AM, Dan Smith <span dir="ltr">&lt;<a href="mailto:dan@colectica.com" target="_blank">dan@colectica.com</a>&gt;</span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Jani,<br>
<br>
Yes you are correct, maintainable IDs are always scoped to an agency.<br>
<br>
&quot;This suggests that @scopeOfUniqueness for Maintainables<br>
should be restricted to allow &quot;Agency&quot; only.&quot;<br>
<br>
Sure, the attribute&#39;s value could be set to fixed to ensure developers<br>
are obeying this constraint.<br>
<br>
In Colectica we scope every item to the Agency, which is also the<br>
default setting in the schema.<br>
<br>
I am also working on some DDI 3.2 examples for you which you asked about<br>
at EDDI, I will try to publish them soon.<br>
<br>
Cheers<br>
Dan<br>
<br>
On 12/19/2014 7:43 AM, Jani Hautamäki wrote:<br>
&gt;<br>
&gt; I could not find any restrictions for scoping the maintainable IDs<br>
&gt; uniqueness from the field-level documentation nor from the technical<br>
&gt; documentation (part 1),<br>
&gt;<br>
&gt;     <a href="http://www.ddialliance.org/Specification/DDI-Lifecycle/3.2/XMLSchema/HighLevelDocumentation/DDI_Part_I_TechnicalDocument.pdf" target="_blank">http://www.ddialliance.org/Specification/DDI-Lifecycle/3.2/XMLSchema/HighLevelDocumentation/DDI_Part_I_TechnicalDocument.pdf</a><br>
&gt;<br>
&gt; I am inclined to interpret the absence of any restrictions<br>
&gt; so that it is allowed to set @scopeOfUniqueness=&quot;Maintainable&quot;<br>
&gt; for any AbstractMaintainableType element.<br>
&gt;<br>
&gt; Is my interpretation of the documentation correct?<br>
&gt;<br>
&gt; For reference, here are the relevant parts regarding scopeOfUniqueness<br>
&gt; that I found from the technical documentation,<br>
&gt;<br>
&gt;     page 11:<br>
&gt;     [Unique ID in DDI is...] An identification which is unique within<br>
&gt;     a) the agency (sub-agency), or b) within the parent maintainable.<br>
&gt;     If the context is the parent maintainable the Unique ID is the ID<br>
&gt;     of the parent maintainable plus the ID of the object within that<br>
&gt;     maintainable separated by a &quot;.&quot;.<br>
&gt;<br>
&gt;     page 11:<br>
&gt;     Identifiable objects have a unique ID within the context<br>
&gt;     of their specified scope of uniqueness.<br>
&gt;<br>
&gt;     page 12:<br>
&gt;     Versionable objects have a unique ID within the context<br>
&gt;     of their specified scope of uniqueness.<br>
&gt;<br>
&gt;     (NOTE: The page continues with Maintainable objects, but<br>
&gt;     in this case nothing is said about the uniqueness of the ID)<br>
&gt;<br>
&gt;     page 17:<br>
&gt;     DDI 3.2 supports scoping the uniqueness of identifier<br>
&gt;     to the parent Maintainable or to the Agency (sub-agency).<br>
&gt;     [...]<br>
&gt;     When the ID is scoped to the Maintainable the unique identification of<br>
&gt;     a non-Maintainable object requires the Agency, ID of the parent<br>
&gt;     Maintainable, the ID of the object, and the Version Number of the object.<br>
&gt;     [...]<br>
&gt;     This attribute [scopeOfUniqueness] defines how the ID will be expressed<br>
&gt;     in the Canonical URN and what is required for a complete reference<br>
&gt;     to the object within the Maintaining Agency.<br>
&gt;<br>
&gt;     page 18:<br>
&gt;     If the scopeOfUniqueness equals &quot;Maintainable&quot; the ID of a non-Maintainable<br>
&gt;     object is structured as follows:<br>
&gt;     &quot;urn:ddi:agency[.sub-agency]:MaintainableID.ObjectID:Version&quot;.<br>
&gt;<br>
&gt; Obviously, a reference should be unambiguously resolvable to<br>
&gt; a specific data element. However, this is not always possible within<br>
&gt; the current specification.<br>
&gt;<br>
&gt; Example in DDI v3.2 (ambiguous1.xml)<br>
&gt; -----8&lt;-----8&lt;-----8&lt;-----8&lt;-----8&lt;-----<br>
&gt; &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br>
&gt; &lt;ddi:DDIInstance<br>
&gt;     xmlns:ddi=&quot;ddi:instance:3_2&quot;<br>
&gt;     xmlns:r=&quot;ddi:reusable:3_2&quot;<br>
&gt;     xmlns:s=&quot;ddi:studyunit:3_2&quot;<br>
&gt;     xmlns:c=&quot;ddi:conceptualcomponent:3_2&quot;<br>
&gt;     xml:lang=&quot;en&quot;<br>
&gt;     scopeOfUniqueness=&quot;Maintainable&quot;<br>
&gt;     &gt;<br>
&gt;   &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;   &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;   &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;   &lt;s:StudyUnit scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;     &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;     &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;     &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;     &lt;!-- FIRST conceptual component --&gt;<br>
&gt;<br>
&gt;     &lt;c:ConceptualComponent scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;       &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;       &lt;r:ID&gt;conceptual_component_first&lt;/r:ID&gt;<br>
&gt;       &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;       &lt;c:ConceptScheme scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;         &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;         &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;         &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;         &lt;c:Concept scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;           &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;           &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;           &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;           &lt;c:ConceptName&gt;<br>
&gt;             &lt;r:String&gt;the concept name&lt;/r:String&gt;<br>
&gt;           &lt;/c:ConceptName&gt;<br>
&gt;         &lt;/c:Concept&gt;<br>
&gt;<br>
&gt;       &lt;/c:ConceptScheme&gt;<br>
&gt;     &lt;/c:ConceptualComponent&gt;<br>
&gt;<br>
&gt;     &lt;!-- SECOND conceptual component --&gt;<br>
&gt;<br>
&gt;     &lt;c:ConceptualComponent scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;       &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;       &lt;r:ID&gt;conceptual_component_second&lt;/r:ID&gt;<br>
&gt;       &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;       &lt;c:ConceptScheme scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;         &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;         &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;         &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;         &lt;c:Concept scopeOfUniqueness=&quot;Maintainable&quot;&gt;<br>
&gt;           &lt;r:Agency&gt;org.acme&lt;/r:Agency&gt;<br>
&gt;           &lt;r:ID&gt;unique_within_parent&lt;/r:ID&gt;<br>
&gt;           &lt;r:Version&gt;1&lt;/r:Version&gt;<br>
&gt;<br>
&gt;           &lt;c:ConceptName&gt;<br>
&gt;             &lt;r:String&gt;different concept name&lt;/r:String&gt;<br>
&gt;           &lt;/c:ConceptName&gt;<br>
&gt;         &lt;/c:Concept&gt;<br>
&gt;<br>
&gt;       &lt;/c:ConceptScheme&gt;<br>
&gt;     &lt;/c:ConceptualComponent&gt;<br>
&gt;<br>
&gt;   &lt;/s:StudyUnit&gt;<br>
&gt; &lt;/ddi:DDIInstance&gt;<br>
&gt; -----8&lt;-----8&lt;-----8&lt;-----8&lt;-----8&lt;-----<br>
&gt;<br>
&gt; I was not able to figure out from the specifications<br>
&gt; whether the canonical URN for a Maintainable with<br>
&gt; scopeOfUniqueness=&quot;Maintainable&quot; should include<br>
&gt; the parent maintainable or not.<br>
&gt;<br>
&gt; page 17 (in technical documentation) gets close,<br>
&gt; but does not include this case:<br>
&gt;<br>
&gt;     &quot;When the ID is scoped to the Maintainable the unique identification<br>
&gt;     of a non-Maintainable object requires [...]&quot;<br>
&gt;<br>
&gt; Here the ID is scoped to the Maintainable,<br>
&gt; and we are concerned about the unique identification<br>
&gt; of a Maintainable object (instead of non-Maintainable).<br>
&gt;<br>
&gt; However, as there are only two alternatives, it is<br>
&gt; possible to explore both:<br>
&gt;<br>
&gt; Case 1 (include parent maintainable in the URN)<br>
&gt;<br>
&gt;     In this case the urn would be:<br>
&gt;     urn:ddi:org.acme:unique_within_parent.unique_within_parent:1<br>
&gt;<br>
&gt; Case 2 (do not include parent maintainable in the URN)<br>
&gt;<br>
&gt;     In this case the urn would be:<br>
&gt;     urn:ddi:org.acme:unique_within_parent:1<br>
&gt;<br>
&gt; As it turns out, both of these cases fail to provide unambiguous<br>
&gt; identification sequence.<br>
&gt;<br>
&gt; Including the TypeOfObject information will not resolve the issue,<br>
&gt; since is is possible to have two ore more non-Maintainables<br>
&gt; which all will have the same reference.<br>
&gt;<br>
&gt; For instance, in the example there are two different &lt;Concept&gt; Versionables<br>
&gt; which both will have the same reference:<br>
&gt;<br>
&gt;     &lt;!-- Reference for &quot;the concept name&quot; concept --&gt;<br>
&gt;     &lt;r:ConceptReference&gt;<br>
&gt;       &lt;r:URN&gt;urn:ddi:org.acme:unique_within_parent.unique_within_parent:1&lt;/r:URN&gt;<br>
&gt;       &lt;r:TypeOfObject&gt;Concept&lt;/r:TypeOfObject&gt;<br>
&gt;     &lt;/r:ConceptReference&gt;<br>
&gt;<br>
&gt;     &lt;!-- Reference for the &quot;different concept name&quot; concept --&gt;<br>
&gt;     &lt;r:ConceptReference&gt;<br>
&gt;       &lt;r:URN&gt;urn:ddi:org.acme:unique_within_parent.unique_within_parent:1&lt;/r:URN&gt;<br>
&gt;       &lt;r:TypeOfObject&gt;Concept&lt;/r:TypeOfObject&gt;<br>
&gt;     &lt;/r:ConceptReference&gt;<br>
&gt;<br>
&gt; It is apparent that in order to provide unambiguous reference using<br>
&gt; a sequence of object IDs, each ID must be unique within the preceding object.<br>
&gt;<br>
&gt; For instance, in the canonical URN of a non-Maintainable object<br>
&gt; the sequence of IDs is:<br>
&gt;<br>
&gt;     (agency, maintainable, identifiable)<br>
&gt;<br>
&gt; For this to work, agency must be globally unique, maintainable must be<br>
&gt; unique within the agency and identifiable must be unique within<br>
&gt; the maintainable. This suggests that @scopeOfUniqueness for Maintainables<br>
&gt; should be restricted to allow &quot;Agency&quot; only.<br>
&gt;<br>
&gt; Alternative way to resolve the issue is to modify the URN structure to allow<br>
&gt; arbitrary identification sequences. In this case, an additional restriction is<br>
&gt; also needed: objects which are not contained (or cannot be contained)<br>
&gt; within any other identified object (eg. DDIInstance) must be scoped to<br>
&gt; be unique within the agency. In this approach the identification sequence<br>
&gt; for an object that has scopeOfUniqueness=&quot;Maintainable&quot; would need to<br>
&gt; include the IDs of all the ancestor maintainables up to a maintainable that<br>
&gt; has scopeOfUniqueness=&quot;Agency&quot;. An example of such an identification<br>
&gt; sequence would be:<br>
&gt;<br>
&gt;     (agency, unique_within_agency, unique_within_parent, unique_within_parent, ...)<br>
&gt;<br>
&gt; I guess the first approach might be the simplest solution for resolving<br>
&gt; the ambiguity introduced by the unrestricted usage of @scopeOfUniqueness.<br>
&gt;<br>
&gt; Hopefully the issue will be resolved in one way or the other.<br>
&gt; The presented options are just the two most obvious solutions.<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; DDI-users mailing list<br>
&gt; <a href="mailto:DDI-users@icpsr.umich.edu">DDI-users@icpsr.umich.edu</a><br>
&gt; <a href="http://lists.icpsr.umich.edu/mailman/listinfo/ddi-users" target="_blank">http://lists.icpsr.umich.edu/mailman/listinfo/ddi-users</a><br>
&gt;<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
--<br>
Dan Smith<br>
+1 608-213-2867<br>
Colectica - Statistical Data Management<br>
<a href="http://www.colectica.com" target="_blank">http://www.colectica.com</a><br>
_______________________________________________<br>
DDI-users mailing list<br>
<a href="mailto:DDI-users@icpsr.umich.edu">DDI-users@icpsr.umich.edu</a><br>
<a href="http://lists.icpsr.umich.edu/mailman/listinfo/ddi-users" target="_blank">http://lists.icpsr.umich.edu/mailman/listinfo/ddi-users</a><br>
</font></span></blockquote></div><br clear="all"><br>-- <br><div class="gmail_signature"><div>Wendy L. Thomas                              Phone: +1 612.624.4389</div><div>Data Access Core Director                 Fax:   +1 612.626.8375</div><div>Minnesota Population Center             Email: <a href="mailto:wlt@umn.edu" target="_blank">wlt@umn.edu</a></div><div>University of Minnesota</div><div>50 Willey Hall</div><div>225 19th Avenue South</div><div>Minneapolis, MN 55455</div></div>
</div>