XML Schema Outline -- Version 2.1 * == ELEMENT IS OPTIONAL & REPEATABLE + == ELEMENT IS MANDATORY & REPEATABLE ? == ELEMENT IS OPTIONAL & NON-REPEATABLE == ELEMENT IS MANDATORY & NON-REPEATABLE 0.0 codeBook -> Instance (ATT == ID, ->Instance@ID (priority 2) xml-lang, source, version) |----1.0 docDscr* ->NA (ATT == ID, -> Instance@ID (priority 3) xml-lang, -> -> NA source ->NA) |----1.1 citation? -> Instance: Citation (ATT == ID, -> NA xml-lang, -> NA source, -> NA MARCURI) -> NA | | | |----1.1.1 titlStmt -> NA (ATT == ID, -> NA xml-lang, -> NA source) -> NA | | | | | |----1.1.1.1 titl -> Instance: Citation: Title (M) (ATT == ID, -> NA xml-lang, ->Title@xml:lang source) -> NA | | | | | +----1.1.1.5 IDNo* -> Instance@ID (priority 1) USE NCNAME FORMAT, RECOMMENDED: Instance_(IDno) (ATT == ID, ->NA xml-lang, ->NA source, -> NA agency, -> NA: -Archive is not available for Instance (only StudyUnit), and.. -Instance@agency is NCNAME and V2 agency is CDATA level) -> NA | | | |----1.1.3 prodStmt? -> NA (ATT == ID ->NA, xml-lang, ->NA source ->NA) | | | | | |----1.1.3.1 producer* -> Instance: Citation: Publisher (ATT == ID, -> NA xml-lang, ->Publisher@xml:lang source, -> NA abbr, -> NA because Instance does not have Archive:(Organizations) affiliation, -> same as above (cannot "borrow" from Study unit bec. an Instance may have multiple studies) role) ->same as above (an Instance may have multiple studies) | | | | | |----1.1.3.3 prodDate* -> Instance:Citation:PublicationDate:HistoricalDate (is string -ok) (ATT == ID, -> NA xml-lang, -> NA source, -> NA date) -> Instance:Citation:PublicationDate:SimpleDate (M) is ISO 8601 |---- |---1.1.6 verStmt* -> NA (ATT == ID, -> NA xml-lang, -> NA source) -> NA | | | | | |----1.1.6.1 version? -> Instance@version (map only digit part of statement (PCDATA IN DDI2) (ATT == ID, -> NA xml-lang, -> NA source, -> NA date, ->Instance@VersionDate type) ->Instance:VersionRationale | | | | | |----1.1.6.2 verResp? ->Instance:VersionResponsibility (ok - is string) (ATT == ID, -> NA xml-lang, -> NA source, -> NA affiliation) ->NA because no Archive module in Instance. Option: attach content of DDI 2 attribute to name in Version Responsibility |----2.0 stdyDscr+ -> StudyUnit; Abstract and Purpose are (M); enter with content N/A UniverseReference:Id is (M) enter with content NA (assuming no univ. avail. in 2.0) (ATT == ID, -> StudyUnit@ID !(IF IDNo NOT AVAIL IN 2.0; otherwise, NA)! xml-lang, -> NA source, -> NA access) -> NA | |----2.1 citation+ ->StudyUnit:Citation (ATT == ID, -> NA xml-lang, -> NA source, -> NA MARCURI) -> NA | | | |----2.1.1 titlStmt ->NA (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | | | |----2.1.1.1 titl ->StudyUnit:Citation:Title (ATT == ID, -> NA xml-lang, ->Title@xml:lang source) -> NA | | +----2.1.1.5 IDNo* ->StudyUnit@ID (OR USE stdyDscr ID if this one not avail.) USE NCNAME FORMAT, RECOMMENDED: StudyUnit_(IDno) (ATT == ID, -> NA xml-lang, -> NA source, -> NA agency, ->Archive:OrgScheme:Org:Name, assign ID, and enter in StudyUnit@agency and ArchiveSpecific: ArchiveOrgRef(M) -- PROBLEM: ENTERING ALL RESPONSIBLE AGENCIES IN ORGANIZATIONS SCHEME RESULTS IN REDUNDANT ENTRIES - SAME NAME MAY BE PRESENT IN DDI 2.0 BUT IN 3.0 WOULD BECOME NEW ENTRY IN ORGANIZATIONS.-- Note: This will be true of categories, concepts, universes, etc. A mapping system would be needed to check for this or the redundancies need to be cleaned up after the conversion. level ->NA) | | | |----2.1.2 rspStmt? ->NA (ATT == ID, ->NA xml-lang, ->NA source ->NA) | | | | | |----2.1.2.1 AuthEnty* ->StudyUnit:Citation:Creator (ATT == ID, ->NA xml-lang, Creator@xml:lang source, ->NA affiliation) Creator@affiliation (Ok to map - is string) |----| |2.1.6 verStmt* ->NA (ATT == ID, ->NA xml-lang, ->NA source ->NA) | | | | | |----2.1.6.1 version? ->StudyUnit@version (enter digits only from DDI2 statement) (ATT == ID, ->NA xml-lang, ->NA source, ->NA date, ->StudyUnit@versionDate type) -> StudyUnit: VersionRationale | | | | | |----2.1.6.2 verResp? ->StudyUnit:VersionResponsibility (OK - is string) (ATT == ID, ->NA xml-lang, ->NA source, ->NA affiliation)->probably NA because cannot tell if new or old entry for ORGS so we may not map VerResp to Organization entry. |----2.3 method* (ATT == ID, xml-lang, source) | | | |---2.3.1 dataColl* (ATT == ID, xml-lang, source) |----2.3.1.12 weight* -> map to DataCollection:ProcessingEvent:Weighting:Content (ATT == ID, xml-lang, Weighting:Content@xml:lang source) |----4.0 dataDscr* -> LogicalProduct (ATT == ID, -> LogicalProduct@ID xml-lang, ->NA source ->Logicaol Product@agency) | |----4.1 varGrp* ->VariableScheme: VariableGroup. (ATT == ID, ->VariableGroup@ID xml-lang, ->NA source, ->NA type, ->VariableGroup: GroupType (M) var, ->VariableGroup:VariableReference - parse each entry into individual ref. varGrp, VariableGroup: VariableGroupReference name, ->VariableGroup:Name (is string, OK to map) sdatrefs, ->NA methrefs, ->NA pubrefs, ->NA access, ->NA nCube) ->NA | | | |----4.1.1 labl* ->VariableGroup:Label (ATT == ID, ->NA xml-lang, ->Label@xml:lang source, ->NA level, ->NA vendor, ->NA country, ->Label@LocationVariant (is string, ok to map) sdatrefs) ->NA | | | |----4.1.2 txt* ->VariableGroup: Definition (1st priority) (ATT == ID, ->NA xml-lang, -> Definition@xml:lang source, ->NA level, ->NA sdatrefs) ->NA | | | |----4.1.3 concept* ->ConceptualComponent:ConceptScheme:Concept:Label AND Reference concept in VariableGroup:ConceptReference (ATT == ID, ->Concept@id xml-lang, -> Concept:Label@xml:lang source, ->NA vocab, -> vocabulary and URI defined at ConceptScheme level only in DDI3 vocabURI) -> CREATE MULTIPLE CONCEPT SCHEMES TO INCLUDE CONCEPTS FROM DIFFERENT VOCABULARIES - i.e. one scheme per vocab. | | | |----4.1.4 defntn? ->VariableGroup: Definition (2nd priority) (ATT == ID, ->NA xml-lang, -> Definition@xml:lang source) ->NA | | | |----4.1.5 universe? -> may be mapped to Universe:HumanReadable in UniverseScheme but we may end up with same entry repeated MANY TIMES. THIS WOULD NOT PRODUCE INVALID DDI HOWEVER. IT WOULD JUST BE AGAINST THE REUSABILITY INTENT IN DDI 3 AND WOULD GENERATE HUGE XML FILES (HARD TO HANDLE). SOLUTION: build script to check for duplication and clean up after conversion, or clean up manually? (ATT == ID, ->UniverseScheme:Universe@ID xml-lang, ->NA source, ->NA level, ->NA clusion ->Universe@isInclusive (true/false)) | | | | |----4.1.5.1 txt -> [see above]. UniverseScheme:Universe:HumanReadable. (ATT == ID, ->NA xml-lang, ->Universe:HumanReadable@xml:lang source, ->NA level, ->NA sdatrefs) ->NA | | | | | +----4.1.5.2 concept ->UniverseScheme:Universe:MachineReadable:Code (ATT == ID, ->NA xml-lang, ->NA source, ->NA vocab, ->->NA vocabURI) ->NA | | | +----4.1.6 notes* ->LogicalProduct:Note:Content (ATT == ID, ->NA xml-lang, ->Note:Content@xml:lang source, -> Note:Responsibility, IF "resp" not present. otherwise, NA. type, ->Note:Type (is M and CV!)-> map 2.0 type to 3.0 type if there is match OR other if no match /or ALL TO COMMENT subject, ->Note:Subject level, ->NA (or, Note:Relationship:RelatedToReference) resp, -> Note:Responsibility sdatrefs) (NA) == Note:Relationship:RelatedToReference is M! - Include ID of parent element in DDI 2. Ex: here include ID of variable group, as expressed in DDI3 code (VariableGroup_VG3F1_8344) | | |----4.3 var* -> LogicalProduct:VariableScheme:Variable (ATT == ID, -> Variable@ID -- If ID missing in DDI2, create in DDI 3 by using name_XXXX.) xml-lang, ->NA source, ->NA name, ->Variable:Name wgt, ->Variable@isWeight (defaults are "not_wgt" and "false". Need only to transform wgt->true) wgt-var, ->Variable:Representation:WeightVariableReference weight, ->Variable:Representation:StandardWeightReference qstn, ->Variable:QuestionReference (is repeatable, enter each V 2.0 ref in separate field) files, ->NA vendor, dcml, ->NumericRepresentation@DecimalPositions intrvl, ->Variable:Representation@classificationLevel (discrete=nominal; continuous=continuous) rectype, sdatrefs, ->NA methrefs, ->NA pubrefs, ->NA access, ->NA aggrMeth, ->Representation:AggregationMethod measUnit, ->Representation:MeasurementUnit scale, ->NumericRepresentation@scale origin, ->NumericRepresentation@startValue nature, ->Representation@classificationLevel additivity, ->Representation:Additivity temporal, ->variable@isTemporal (if "Y" in 2.0 map to "true" in 3.0 -otherwise defaults match) geog, ->variable@isGeographic (see above) geoVocab, ->NA catQnty) ->NA | | | |----4.3.1 location* ->SEE BELOW: MANDATORY SEQUENCE FOR MARKING UP LOCATION: ... LogicalProduct_8344 LogicalRecord1_8344 PhysicalStructure_8344 PhysicalRecordSegment1_8344 ASCII1 V1_8344 144 (ATT == ID, ->NA xml-lang, ->NA source, ->NA StartPos, ->RecordLayout:DataItem:PhysicalLocation@StartPosition EndPos, ->RecordLayout:DataItem:PhysicalLocation@EndPosition width, ->RecordLayout:DataItem:PhysicalLocation@Width RecSegNo, -> ??? fileid, ->NA locMap) -> NA | | | |----4.3.2 labl* Variable: Label (ATT == ID, xml-lang, ->label@xml:lang source, ->NA level, ->NA vendor, ->NA country, ->label@locationVariant sdatrefs ->NA) | | | |----4.3.3 imputation? ->DataCollection: ProcessingEvent:Coding:GeneralInstruction:Description (create individual Coding field for each variable + AND-> reference in Variable:Representation:ImputationReference) (ATT == ID, ->Coding@id xml-lang, ->GeneralInstruction:Description@xml:lang source) ->NA | | | |----4.3.4 security? -> create Embargo entry in StudyUnit for each variable. Content under :Rationale; AgencyReference: same as ArchiveReference + AND reference in Variable:EmbargoReference. IF BOTH SECURITY AND EMBARGO ARE PRESENT IN DDI 2 THEN GIVE PRIORITY TO THE ONE WITH THE MORE RECENT START DATE. (ATT == ID, ->NA xml-lang, ->Rationale@xml:lang source, date ->[map to startDate] | | | |----4.3.5 embargo? -> create Embargo entry in StudyUnit for each variable. Content under :Rationale; AgencyReference: same as ArchiveReference + AND reference in Variable:EmbargoReference IF BOTH SECURITY AND EMBARGO ARE PRESENT IN DDI 2 THEN GIVE PRIORITY TO THE ONE WITH THE MORE RECENT START DATE. (ATT == ID, ->na xml-lang, ->Rationale@xml:lang source, date, ->map to endDate if event=notBefore (startDate=current date); map to startDate if event=notAfter (endDate=0000-00-00) event, ->see above; use to define startDate and/or endDate format ?) | | | |----4.3.6 respUnit? ->Variable:ResponseUnit (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | |----4.3.7 anlysUnit? ->Variable:AnalysisUnit - IS NOT REPEATABLE IN 3.0 THEREFORE EITHER HUMAN READABLE ENTRY UNDER 4.3.7 OR 4.3.7.1 -- OR CV UNDER 4.3.7.2 MAY BE MAPPED - BUT NOT BOTH!!! (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | | |----4.3.7.1 txt -> see note above (ATT == ID, ->NA xml-lang, ->NA source, ->NA level, ->NA sdatrefs) ->NA | | | | | +----4.3.7.2 concept ->see note above (ATT == ID, ->NA xml-lang, ->NA source, ->NA/or Variable:AnalysisUnit@codeListAgency vocab, ->Variable:AnalysisUnit@codeListID vocabURI) | | | |----4.3.8 qstn* ->DataCollection:QuestionScheme: QuestionItem; + Variable:QuestionReference (ATT == ID, ->QuestionItem@ID xml-lang, ->QuestionText@xml:lang source, ->NA qstn, -> ? DON'T KNOW WHAT THIS IS FOR IN V 2.0 var, ->NA seqNo, -> may map to ControlConstruct:Sequence (?) sdatrefs->NA) | | | | |----4.3.8.1 preQTxt* ->[ControlConstructScheme:StatementItem:DisplayText] NOT INCLUDED IN MARKUP EXAMPLE! (ATT == ID, xml-lang, source) | | | | | |----4.3.8.2 qstnLit* -> create: 1)QuestionScheme: QuestionItem:QText:LiteralText:Text 2)(ResponseDomain-M):CodeDomain:CodeSchemeRef:ID of codescheme of this variable 3)Variable:QuestionReference:ID of this question (M-> assign!) (ATT == ID, xml-lang, ->QuestionText@xml:lang source, sdatrefs) | | | | | |----4.3.8.3 postQTxt* ->[ControlConstructScheme:StatementItem:DisplayText] NOT INCLUDED IN MARKUP EXAMPLE! (ATT == ID, xml-lang, source) | | | | | |----4.3.8.4 forward* -> ControlConstructScheme:ControlConstruct:Sequence (?) NOT INCLUDED IN MARKUP EXAMPLE! (ATT == ID, xml-lang, source, qstn) | | | | | |----4.3.8.5 backward* ->ControlConstructScheme:ControlConstruct:Sequence (?) NOT INCLUDED IN MARKUP EXAMPLE! (ATT == ID, xml-lang, source, qstn) | | | | | +----4.3.8.6 ivuInstr* -> InterviewerInstructionScheme:Instruction:InstructionText (ATT == ID, xml-lang, source) | | | |----4.3.9 valrng* -> !!NA?? (Variable:Representation:NumericRepresentation:NumberRange ONLY APPLIES TO NUMERIC REPRESENTATION-TYPE VARIABLES IN DDI3, while valid range may be defined for ANY type var. in DDI2) -MAP 2.0 range or item or both (i.e. all defined values) to 3.0 NumberRange as shown above, only if and valrng available in ddi 2.0. (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | | | |----4.3.10.1 range* ->see above (ATT == ID, ->NA xml-lang, ->NA source) ->NA |----4.3.10.2 item* ->see above (ATT == ID, ->NA xml-lang,->NA source) ->NA | | |----4.3.9.1 key? ->NA (ATT == ID, xml-lang, ->NA source) ->NA | | | | | +----4.3.9.2 notes* -> see above: 1.if valrng not mapped, then its notes should be mapped to the DDI3 CodeScheme, if there is a codescheme for this var; 2. IF valrng mapped, then LogicalProduct:Note with RelatedtoReference to this variable (ATT == ID, xml-lang, source, type, subject, level, resp, sdatrefs) | | | |----4.3.10 invalrng* -> map 2.0 range or item or both if present (i.e. all defined values) to Category@missing=true (ATT == ID, xml-lang, source) | | | | | |----4.3.10.1 range* ->see above (ATT == ID, ->NA xml-lang, ->NA source) ->NA |----4.3.10.2 item* ->see above (ATT == ID, ->NA xml-lang, ->NA source) ->NA |----4.3.10.3 key? ->NA (?) (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | | | +----4.3.10.4 notes* ->LogicalProduct:Note with RelatedToReference to CategoryScheme for this variable. (ATT == ID, xml-lang, source, type, subject, level, resp, sdatrefs) | | | |----4.3.11 undocCod* (ATT == ID, xml-lang, source) | | | |----4.3.12 universe* ->see notes for 4.1.5 (ATT == ID, xml-lang, source, level, clusion) | | | | |----4.3.12.1 txt -> do NOT map (?) OR Universe:HumanReadable(see above) (ATT == ID, xml-lang, source, level, sdatrefs) | | | | | +----4.3.12.2 concept ->Universe:MachineReadable:Code (ATT == ID, xml-lang, source, vocab, ->NA vocabURI) | | | |----4.3.13 TotlResp? ->VariableStatistics: TotalResponses (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | |----4.3.14 sumStat* -> MANDATORY SEQUENCE BEFORE ENTERING VARIABLE STATISTICS: RecordLayout1_8344 http://www.icpsr.umich.edu --> THEN, FOR sumStat: V1_8344 valid false7352< /pi:VariableStatistics> (ATT == ID, ->NA xml-lang, ->NA source, ->NA wgtd, ->SummaryStatistic: Weighted (is boolean) wgt-var, ->VariableStatistics: WeightVariableReference: IN DDI 3 THIS IS REFERENCED ONLY ONCE FOR ALL STATISTICS ASSOCIATED WITH A VARIABLE (SUMMARY, CATEG, ETC.) SO IF MULTIPLE WEIGHTS APPEAR IN DDI2, CREATE SEPARATE (MULTIPLE) STATISTICS ENTRIES FOR THE SAME VARIABLE - ONE ENTRY PER WEIGHT. weight, -> VariableStatistics: WeightUsedReference (reference to Weighting in DataCollection:ProcessingEvent) !!! in ddi 3 this is a choice (WeightVar OR WeightUsed) so either one, but not both; --> map weight ONLY if wgt-var is missing in ddi 2.0 type) ->SummaryStatisticType (map DDI2 CV to full words) | | | |----4.3.15 txt* -> Variable:VariableDefinition (ATT == ID, ->NA xml-lang, ->VariableDefinition@xml:lang source, ->NA level, ->NA sdatrefs) ->NA | | | |----4.3.16 stdCatgry* ->Variable:Representation:ExternalCategoryRepresentation:Ref OR ->NA (actual text cannot be directly mapped) (ATT == ID, ->NA xml-lang, ->NA source, ->NA date, ->[ExternalCategoryReference:VersionDate] URI) ->[ExternalCategoryReference:URI] | | | |----4.3.17 catgryGrp* ->CategoryScheme:CategoryGroup; in 3.0 include categories directly within group; category group is no longer "nestable" in 3.0 (groups can no longer include groups); so when a group in 2.0 includes a group, list the categories from that group instead; see markup ex. (ATT == ID, ->CategoryGroup@id xml-lang, ->NA source, ->NA missing, ->NA missType, ->NA catgry, ->CategoryGroup:Category (see note above) catGrp, ->NA levelno, : the last 4 map to codescheme ->CodeScheme:Level@levelnumber levelnm, ->[CodeScheme:Level@levelname] compl, excls) | | | | | |----4.3.17.1 labl* ->CategoryGroup: Name (ATT == ID, ->NA xml-lang, ->Name@xml:lang source, ->NA level, ->NA vendor, ->NA country, ->NA sdatrefs) ->NA | | | | | |----4.3.17.2 catStat* ->[Create Code entry in CodeScheme and reference CategoryGroup in CategoryReference. Create fake value to support statistics.] (ATT == ID, xml-lang, source, type, URI, methrefs, wgtd, wgt-var, weight, sdatrefs) | | | | | +----4.3.17.3 txt* ->NA (ATT == ID, xml-lang, source, level, sdatrefs) | | | |----4.3.18 catgry* ->LogicalProduct:CategoryScheme:Category (ATT == ID, ->Category@ID (add study number to make it unique) xml-lang, ->NA source, ->NA missing, ->Category@missing (is boolean - map Y to true and N to false) missType, ->NA country, ->NA sdatrefs, ->NA excls, ->NA catgry, : use these 2 for Codes Hierarchy level) | | | | | |----4.3.18.1 catValu? ->Create 1 CodeScheme per variable->Code:Value for each CatValu ->assign ID to each category and add CategoryReference (M) in Code ->Insert references to CodeScheme in 1)Question:CodeDomain, and 2)Variable:Representation:CodeRepresentation (ATT == ID, xml-lang, source) | | | | | |----4.3.18.2 labl* ->Category:Label (ATT == ID, ->NA xml-lang, ->Label@xml:lang source, ->NA level, ->NA vendor, ->Category:Label@type country, ->Label@LocationVariant sdatrefs ->NA) | | | | | |----4.3.18.3 txt* ->Category:Definition (ATT == ID, ->NA xml-lang, ->Category:Definition@xml:lang source, ->NA level, ->NA sdatrefs) ->NA | | | | | |----4.3.18.4 catStat* ->PhysInstance:Statistics:VarStatististics:CatStats:CatStat:VALUE (!) (ATT == ID, ->NA xml-lang, ->NA source, ->NA type, ->CategoryStatistic:CatgoryStatisticType (map content directly, except express "freq" in 2.0 as Frequency URI, ->NA -[StatisticalDataFileRef DOES NOT REFER TO SINGLE CAT.: IS FOR FILE OR PART OF FILE - BUG WILL BE FILED 3/09] methrefs, ->NA wgtd, ->CategoryStatistic: Weighted (is boolean Y=true; N=false) wgt-var, ->NA weight, ->NA sdatrefs) ->NA | | | | | +----4.3.18.5 mrow? ->??[Variable:Representation:ConcatenatedValue] -> (do not map for now).This applies to aggregate data (ATT == ID, xml-lang, source) | | | | | +----4.3.18.5.1 mi* ->see above: do not map for now. this applies to aggregate data (ATT == ID, xml-lang, source, varRef ->ConcatenatedValue:VariableReference) | | | |----4.3.19 codInstr* ->1. DataColl:ProcessingEvent:Coding:Generation Instruction, and 2. Variable:Representation:CodingInstructionRef IF BOTH IMPUTATION AND CODINGINSTRUCTION OR DERIVATION ARE PRESENT IN DDI2 FOR THE SAME VARIABLE, CREATE TWO CODING ENTRIES TO LINK TO THE SAME VARIABLE IN DDI3. (ATT == ID, -> Coding@id xml-lang, ->GenerationInstruction:Description@xml:lang source ->NA) | | | |----4.3.20 verStmt* ->NA (see below; no parent elem. (container) in 3.0) (ATT == ID, ->NA xml-lang, ->NA source) ->NA | | | | | |----4.3.20.1 version? Variable@version (ATT == ID, ->NA xml-lang, ->NA source, ->NA date, -> Variable@versionDate type) -> Variable:VersionRationale | | | | | |----4.3.20.2 verResp? ->Variable:VersionResponsibility (ATT == ID, ->NA xml-lang, ->NA source, ->NA affiliation) ->NA (cannot link to affiliation in Orgs. because VersionResp content is string, not IDRef) OR: -> APPEND AFFILIATION TO VERSION RESP STRING. | | | | | +----4.3.20.3 notes* ->LogicalProduct:Note (link to variable ID) Note:Relationship:RelatedToReference: {Variable ID} (ATT == ID, ->NA xml-lang, ->NA Note:Content@xml:lang source, ->->NA (OR: ->Note: Responsibility, if "resp" not present) type, -> Note@type (see mapping note to previous entry) subject, ->Note: Subject / (?) Header (?) level, ->NA resp, ->Note: Responsibility sdatrefs) ->NA (OR: Note:Rrelationship:RelatedToReference) | | | |----4.3.21 concept* ->1. Concept:Label, and 2. ConceptReference in Variable (ATT == ID, ->Concept@id xml-lang, ->Concept:Label@xml:lang source, ->NA vocab, ->NA -- v.3.0 has vocabulary@URI but it applies to entire scheme not to individual concepts -I suppose we could scan 2.0 URIs and whenever / if they change, then create a new scheme with each new URI. [fortunately, this is going to be a non-issue in real life, as people have not been entering concepts vocabURI) ->NA | | | |----4.3.22 derivation? ->1. DataColl:ProcessingEvent:Coding:GenerationInstruction, and 2. Reference to above in Variable:CodingInstructionRef - (ATT == ID, ->Coding@id xml-lang, ->->GenerationInstruction:Description@xml:lang source, ->NA var) ->GenerationInstruction:SourceVariable | | | | | |----4.3.22.1 drvdesc? ->GenerationInstruction:Description (ATT == ID, ->NA xml-lang, ->Description@xml:lang source) ->NA | | | | | +----4.3.22.2 drvcmd? ->GenerationInstruction:Command:StructuredCommand:CommandText (ATT == ID, ->NA xml-lang, ->NA source, ->NA syntax) ->Command@FormalLanguage | | | |----4.3.23 varFormat? ->[use attributes to determine type of Variable:Representation] (ATT == ID, xml-lang, source, type, formatname, schema, category, URI) | | | |----4.3.24 geoMap* ->NA (ATT == ID, xml-lang, source, URI, mapformat, levelno) | | | |----4.3.25 catLevel* [use in codes hierarchy] (ATT == ID, xml-lang, source, levelnm (-> CodeScheme:Level:Name) | | | +----4.3.26 notes* ->LogicalProduct:Note (ATT == ID, ->NA xml-lang, Note:Content@xml:lang source, ->NA type, ->Note@type subject, ->Note:SubjectHeader level, ->NA (or, Note:Relationship:RelatedToReference) resp, -> Note:Responsibility sdatrefs -> (?Note:Relationship:RelatedToReference?)