<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"><<a href="mailto:dan@colectica.com" target="_blank">dan@colectica.com</a>></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>
"This suggests that @scopeOfUniqueness for Maintainables<br>
should be restricted to allow "Agency" only."<br>
<br>
Sure, the attribute'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>
><br>
> I could not find any restrictions for scoping the maintainable IDs<br>
> uniqueness from the field-level documentation nor from the technical<br>
> documentation (part 1),<br>
><br>
> <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>
><br>
> I am inclined to interpret the absence of any restrictions<br>
> so that it is allowed to set @scopeOfUniqueness="Maintainable"<br>
> for any AbstractMaintainableType element.<br>
><br>
> Is my interpretation of the documentation correct?<br>
><br>
> For reference, here are the relevant parts regarding scopeOfUniqueness<br>
> that I found from the technical documentation,<br>
><br>
> page 11:<br>
> [Unique ID in DDI is...] An identification which is unique within<br>
> a) the agency (sub-agency), or b) within the parent maintainable.<br>
> If the context is the parent maintainable the Unique ID is the ID<br>
> of the parent maintainable plus the ID of the object within that<br>
> maintainable separated by a ".".<br>
><br>
> page 11:<br>
> Identifiable objects have a unique ID within the context<br>
> of their specified scope of uniqueness.<br>
><br>
> page 12:<br>
> Versionable objects have a unique ID within the context<br>
> of their specified scope of uniqueness.<br>
><br>
> (NOTE: The page continues with Maintainable objects, but<br>
> in this case nothing is said about the uniqueness of the ID)<br>
><br>
> page 17:<br>
> DDI 3.2 supports scoping the uniqueness of identifier<br>
> to the parent Maintainable or to the Agency (sub-agency).<br>
> [...]<br>
> When the ID is scoped to the Maintainable the unique identification of<br>
> a non-Maintainable object requires the Agency, ID of the parent<br>
> Maintainable, the ID of the object, and the Version Number of the object.<br>
> [...]<br>
> This attribute [scopeOfUniqueness] defines how the ID will be expressed<br>
> in the Canonical URN and what is required for a complete reference<br>
> to the object within the Maintaining Agency.<br>
><br>
> page 18:<br>
> If the scopeOfUniqueness equals "Maintainable" the ID of a non-Maintainable<br>
> object is structured as follows:<br>
> "urn:ddi:agency[.sub-agency]:MaintainableID.ObjectID:Version".<br>
><br>
> Obviously, a reference should be unambiguously resolvable to<br>
> a specific data element. However, this is not always possible within<br>
> the current specification.<br>
><br>
> Example in DDI v3.2 (ambiguous1.xml)<br>
> -----8<-----8<-----8<-----8<-----8<-----<br>
> <?xml version="1.0" encoding="utf-8"?><br>
> <ddi:DDIInstance<br>
> xmlns:ddi="ddi:instance:3_2"<br>
> xmlns:r="ddi:reusable:3_2"<br>
> xmlns:s="ddi:studyunit:3_2"<br>
> xmlns:c="ddi:conceptualcomponent:3_2"<br>
> xml:lang="en"<br>
> scopeOfUniqueness="Maintainable"<br>
> ><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <s:StudyUnit scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <!-- FIRST conceptual component --><br>
><br>
> <c:ConceptualComponent scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>conceptual_component_first</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:ConceptScheme scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:Concept scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:ConceptName><br>
> <r:String>the concept name</r:String><br>
> </c:ConceptName><br>
> </c:Concept><br>
><br>
> </c:ConceptScheme><br>
> </c:ConceptualComponent><br>
><br>
> <!-- SECOND conceptual component --><br>
><br>
> <c:ConceptualComponent scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>conceptual_component_second</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:ConceptScheme scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:Concept scopeOfUniqueness="Maintainable"><br>
> <r:Agency>org.acme</r:Agency><br>
> <r:ID>unique_within_parent</r:ID><br>
> <r:Version>1</r:Version><br>
><br>
> <c:ConceptName><br>
> <r:String>different concept name</r:String><br>
> </c:ConceptName><br>
> </c:Concept><br>
><br>
> </c:ConceptScheme><br>
> </c:ConceptualComponent><br>
><br>
> </s:StudyUnit><br>
> </ddi:DDIInstance><br>
> -----8<-----8<-----8<-----8<-----8<-----<br>
><br>
> I was not able to figure out from the specifications<br>
> whether the canonical URN for a Maintainable with<br>
> scopeOfUniqueness="Maintainable" should include<br>
> the parent maintainable or not.<br>
><br>
> page 17 (in technical documentation) gets close,<br>
> but does not include this case:<br>
><br>
> "When the ID is scoped to the Maintainable the unique identification<br>
> of a non-Maintainable object requires [...]"<br>
><br>
> Here the ID is scoped to the Maintainable,<br>
> and we are concerned about the unique identification<br>
> of a Maintainable object (instead of non-Maintainable).<br>
><br>
> However, as there are only two alternatives, it is<br>
> possible to explore both:<br>
><br>
> Case 1 (include parent maintainable in the URN)<br>
><br>
> In this case the urn would be:<br>
> urn:ddi:org.acme:unique_within_parent.unique_within_parent:1<br>
><br>
> Case 2 (do not include parent maintainable in the URN)<br>
><br>
> In this case the urn would be:<br>
> urn:ddi:org.acme:unique_within_parent:1<br>
><br>
> As it turns out, both of these cases fail to provide unambiguous<br>
> identification sequence.<br>
><br>
> Including the TypeOfObject information will not resolve the issue,<br>
> since is is possible to have two ore more non-Maintainables<br>
> which all will have the same reference.<br>
><br>
> For instance, in the example there are two different <Concept> Versionables<br>
> which both will have the same reference:<br>
><br>
> <!-- Reference for "the concept name" concept --><br>
> <r:ConceptReference><br>
> <r:URN>urn:ddi:org.acme:unique_within_parent.unique_within_parent:1</r:URN><br>
> <r:TypeOfObject>Concept</r:TypeOfObject><br>
> </r:ConceptReference><br>
><br>
> <!-- Reference for the "different concept name" concept --><br>
> <r:ConceptReference><br>
> <r:URN>urn:ddi:org.acme:unique_within_parent.unique_within_parent:1</r:URN><br>
> <r:TypeOfObject>Concept</r:TypeOfObject><br>
> </r:ConceptReference><br>
><br>
> It is apparent that in order to provide unambiguous reference using<br>
> a sequence of object IDs, each ID must be unique within the preceding object.<br>
><br>
> For instance, in the canonical URN of a non-Maintainable object<br>
> the sequence of IDs is:<br>
><br>
> (agency, maintainable, identifiable)<br>
><br>
> For this to work, agency must be globally unique, maintainable must be<br>
> unique within the agency and identifiable must be unique within<br>
> the maintainable. This suggests that @scopeOfUniqueness for Maintainables<br>
> should be restricted to allow "Agency" only.<br>
><br>
> Alternative way to resolve the issue is to modify the URN structure to allow<br>
> arbitrary identification sequences. In this case, an additional restriction is<br>
> also needed: objects which are not contained (or cannot be contained)<br>
> within any other identified object (eg. DDIInstance) must be scoped to<br>
> be unique within the agency. In this approach the identification sequence<br>
> for an object that has scopeOfUniqueness="Maintainable" would need to<br>
> include the IDs of all the ancestor maintainables up to a maintainable that<br>
> has scopeOfUniqueness="Agency". An example of such an identification<br>
> sequence would be:<br>
><br>
> (agency, unique_within_agency, unique_within_parent, unique_within_parent, ...)<br>
><br>
> I guess the first approach might be the simplest solution for resolving<br>
> the ambiguity introduced by the unrestricted usage of @scopeOfUniqueness.<br>
><br>
> Hopefully the issue will be resolved in one way or the other.<br>
> The presented options are just the two most obvious solutions.<br>
><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>
><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>