Changeset 2264 for TI01-discovery


Ignore:
Timestamp:
13/03/07 10:42:08 (13 years ago)
Author:
mpritcha
Message:

Uses new xquery for MOLES-to-DIF present

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI01-discovery/trunk/ws-Discovery2/src/ndg/services/discovery/PresentAgent.java

    r2114 r2264  
    213213                                { 
    214214                                        Vector queryParams = new Vector(); 
    215                                         String xqueryStr = "declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/';declare namespace dummy='http://ndg.nerc.ac.uk/dummy';declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';declare namespace moles='http://ndg.nerc.ac.uk/moles';declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; declare function local:docExists($coll as xs:string, $doc as xs:string) as item()* { let $testset := collection($coll)//root()  let $matches :=   for $i in $testset  where util:document-name($i) = $doc  return  document-uri($i)  return $matches  }; let $i := local:docExists('/db/discovery/original/"+this.format+"', '"+thisdoc+"')return if ( fn:empty($i) ) then ( for $DE in collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[exists('moles:dgDataEntity')  and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'] where util:document-name($DE)='"+thisdoc+"' return element dummy:container { element DIF {attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'},element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)},element Entry_Title {string($DE/moles:name)},element Data_Set_Citation {for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1] return  for $DataCreatorRoleHolder in collection('/db/discovery/moles')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)] return  element Data_Creator {if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))) else  string($DataCreatorRoleHolder/moles:abbreviation)},element Dataset_Title {string($DE/moles:name)}},for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and moles:ListLevel = 0]) return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then  element Parameters {element Category {string($StructuredKeyword/*/moles:dgValidTerm)},if (exists($StructuredKeyword//moles:dgValidSubterm)  and $StructuredKeyword//moles:dgValidSubterm != ''  and $StructuredKeyword//moles:dgValidSubterm != ' ') then  for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)] where exists($Subterm/moles:dgValidSubterm) order by $Subterm/moles:ListLevel return  if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} else()} else(),for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[moles:dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) return  element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)},for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[ moles:dgValidTermID/moles:ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'  and  moles:dgValidTermID/moles:ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'  ]/moles:dgValidTerm) return element Keyword {string($Keyword)},  for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID)  return  element Sensor_Name {for $DepDPTAbbrev in distinct-values((collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) return element Short_Name {data($DepDPTAbbrev)},for $DepDPTName in distinct-values((collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) return element Long_Name {data($DepDPTName)}},for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID) return  element Source_Name {for $DepObsStnAbbrev in distinct-values((collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) return element Short_Name {data($DepObsStnAbbrev)},for $DepObsStnName in distinct-values((collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) return element Long_Name {data($DepObsStnName)}},for $TemporalRange in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgDateRange) return  element Temporal_Coverage {element Start_Date {data($TemporalRange/moles:DateRangeStart)},element End_Date {data($TemporalRange/moles:DateRangeEnd)}},for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea/moles:dgValidTerm) return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}},  for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure) return element Data_Set_Progress {data($Data_Set_Progress)},for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox) return  element Spatial_Coverage {element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)},element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)},element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)},element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)}},for $Location in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) return element Location {$Location},  for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID) return  element Project {for $DepActAbbrev in distinct-values(collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation) return  element Short_Name {data($DepActAbbrev)},for $DepActName in distinct-values(collection('/db/discovery/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name) return  element Long_Name {data($DepActName)}},if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then  for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule return  element Access_Constraints {if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then  concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ') else (),if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then concat('See access control policy at ', escape-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL, true())) else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then data($DG/moles:accessControlPolicy/moles:accessControlPolicyText) else  for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition return if (exists($securityCondition/moles:conditionExplanationText)) then concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText)) else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority))} else (),if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder  order by $DataCreatorRole/moles:startDate empty least return  for $DataCreatorRoleHolder in collection('/db/discovery/moles')/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson) [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)] return  element Originating_Center {if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then (string($DataCreatorRoleHolder/moles:name)) else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))) else ('empty content')} else (),for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] return  for $DataCuratorRoleHolder in collection('/db/discovery/moles')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)] return  element Data_Center {element Data_Center_Name {element Short_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) else  string($DataCuratorRoleHolder/moles:abbreviation)},element Long_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) else string($DataCuratorRoleHolder/moles:name)}},if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then  element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)} else (),for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID return  element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)},element Personnel {element Role {'Data Center Contact'},if (exists($DataCuratorRoleHolder/name/knownAs)) then  element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)} else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)} else (),element Last_Name {if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then  string($DataCuratorRoleHolder/moles:name/moles:familyName) else string($DataCuratorRoleHolder/moles:name)},if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then  element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)} else  if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}) else (),if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then  element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then  element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then  element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then  element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then  element Contact_Address {for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline return element address {data($addressline)},if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then  element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then  element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)} else (),if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then  element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)} else ()} else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then  element Contact_Address {for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline return element address {data($addressline)},if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then  element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)} else (),if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then  element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)} else (),if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then  element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)} else ()} else ()}},element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)},element Related_URL {element URL_Content_Type {'NDG_B_SERVICE'},element URL {data($DE/moles:dgMetadataID/moles:repositoryIdentifier)},element Description {'The NDG service for browsing metadata.'}},for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule return if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then  (element Related_URL {element URL_Content_Type {'NDG_A_SERVICE'},if (exists($DG/instance/URI)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())} else ($DG/moles:dataModelID/moles:repositoryIdentifier),element Description {'The NDG service delivering data via NDG A metadata.'}},element Related_URL {element URL_Content_Type {'GET DATA > CSML'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())} else (),element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'}}) else if ($DG/moles:dataModelID/moles:schemeIdentifier='CDML-0') then  (element Related_URL {  element URL_Content_Type {'NDG_A_SERVICE'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} else (),element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}},element Related_URL {element URL_Content_Type {'GET DATA > DX'},if (exists($DG/instance)) then element URL {escape-uri($DG/instance/URI, true())} else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} else (),element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}}) else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then  element Related_URL {element URL {data($DG/moles:instance/moles:URI)},if (exists($DG/moles:instance/moles:instanceComment)) then  element Description {data($DG/moles:instance/moles:instanceComment)}  else  element Description {'URL to aid in delivering data. Note that this may point directly to the data or, more likely, point to the web site of the curator.'}} else (),for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)  return element Related_URL {element URL {data($RelURL_Desc)},element Description {concat(data($RelURL_Desc/moles:name), ' - ', data($RelURL_Desc/moles:notes))} },element Metadata_Name {'[CEOS IDN DIF]'},element Metadata_Version {'9.4'},if (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then  element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)} else (),for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate return  element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))},if (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then  element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)} else ()} } ) else ( element dummy:container { doc(fn:item-at($i, 1)) } )"; 
    216  
     215                                        String xqueryStr = "import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery'; declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  declare namespace moles='http://ndg.nerc.ac.uk/moles'; declare namespace dummy='http://ndg.nerc.ac.uk/dummy';  declare variable $targetCollection as xs:string {'/db/discovery/moles'}; declare variable $repositoryIdentifier as xs:string {'RepositoryID'}; declare variable $localIdentifier as xs:string {'LocalID'}; declare function local:docExists($coll as xs:string, $doc as xs:string) as item()* {      let $testset := collection($coll)//root()       let $matches :=                 for $i in $testset              where util:document-name($i) = $doc             return  document-uri($i)        return $matches };  let $i := local:docExists('/db/discovery/original/"+this.format+"', '"+thisdoc+"') return if ( fn:empty($i) ) then ( for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[      exists('moles:dgDataEntity')    and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  ]       where util:document-name($DE)='"+thisdoc+"' return element dummy:container { element DIF {      attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'},     element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, $utillib:moles_id_separator, 'DIF', $utillib:moles_id_separator, $DE/moles:dgMetadataID/moles:localIdentifier)},    element Entry_Title {string($DE/moles:name)},   element Data_Set_Citation {                 for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1]          return                      for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'                         and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier                         and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)]                  return                              element Dataset_Creator {                           if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then                                  string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName)))                           else                               string($DataCreatorRoleHolder/moles:abbreviation)                            },          element Dataset_Title {string($DE/moles:name)}      },      for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[(voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID))])                 return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then                     element Parameters {                        element Category {string($StructuredKeyword/*/moles:dgValidTerm)},                      if (exists($StructuredKeyword//moles:dgValidSubterm)                            and $StructuredKeyword//moles:dgValidSubterm != ''                              and $StructuredKeyword//moles:dgValidSubterm != ' ') then                       for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)]                         where exists($Subterm/moles:dgValidSubterm)                             order by $Subterm/moles:ListLevel                           return                                          if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}                                    else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}                                        else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}                                    else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}                                   else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}                       else()                      }           else(),         for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgDataEntity/moles:dgDataSummary/moles:dgParameterSummary/moles:dgStdParameterMeasured)[voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID) or voclib:spot-vocab($voclib:gcmd_science_valids_deprecated, moles:dgValidTermID/moles:ParentListID) and (not(exists(moles:ListLevel)) or moles:ListLevel=0)])      return          element Parameters {data($StructuredKeyword/moles:dgValidTerm)},        for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[voclib:spot-vocab($voclib:iso_topic_list, moles:dgValidTermID/moles:ParentListID)])         return              element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)},       for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[         not (voclib:spot-vocab($voclib:iso_topic_list, moles:dgValidTermID/moles:ParentListID)  or voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID)       or voclib:spot-vocab($voclib:gcmd_science_valids_correct, moles:dgValidTermID/moles:ParentListID)       )]/moles:dgValidTerm)   return element Keyword {string($Keyword)},      for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID)      return              element Sensor_Name {               for $DepDPTAbbrev in ((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation))                    return element Short_Name {data($DepDPTAbbrev)},            for $DepDPTName in ((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name))              return element Long_Name {data($DepDPTName)}                },      for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID)   return              element Source_Name {               for $DepObsStnAbbrev in ((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation))                   return element Short_Name {data($DepObsStnAbbrev)},                 for $DepObsStnName in ((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name))                     return element Long_Name {data($DepObsStnName)}             },      for $TemporalRange in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgDateRange)              return                      element Temporal_Coverage                   {                       element Start_Date {data($TemporalRange/moles:DateRangeStart)},                         element End_Date {data($TemporalRange/moles:DateRangeEnd)}                      },      for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[voclib:spot-vocab($voclib:gcmd_chronostratigraphic_valids, moles:dgValidTermID/moles:ParentListID)]/moles:dgValidTerm)              return element Paleo_Temporal_Coverage {element Chronostratigraphic_Unit {data($TemporalTerm)}},        for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure)                return element Data_Set_Progress {data($Data_Set_Progress)},    for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox)        return              element Spatial_Coverage {              element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)},                    element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)},                    element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)},                     element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)}          },      for $Location in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[voclib:spot-vocab($voclib:gcmd_location_valids, moles:dgValidTermID/moles:ParentListID)])               return element Location {$Location},    for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID)        return              element Project {           for $DepActAbbrev in (collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation)              return                      element Short_Name {data($DepActAbbrev)},               for $DepActName in (collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name)                return                      element Long_Name {data($DepActName)}           },      if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then                  for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule               return                                      element Access_Constraints {                            if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then                                    concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ')                           else (),                                if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then                                concat('See access control policy at ', escape-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL, true()))                             else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then                                  data($DG/moles:accessControlPolicy/moles:accessControlPolicyText)                            else                                for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition                               return                                      if (exists($securityCondition/moles:conditionExplanationText)) then                                         concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText))                                   else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority))                        }                 else (),  if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder)) then               for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder                     order by $DataCreatorRole/moles:startDate empty least                           return                              for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson)                                                    [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'                                                    and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier                                               and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:localIdentifier)]                               return                                          element Originating_Center {                                    if (string(local-name($DataCreatorRoleHolder))='dgOrganisation') then                                           (string($DataCreatorRoleHolder/moles:name))                                     else if (string(local-name($DataCreatorRoleHolder))='dgPerson') then                                            (string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))))                                     else ('empty content')                          }       else (),        for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate='']             return              for $DataCuratorRoleHolder in collection($targetCollection)/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'                 and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier                 and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)]                  return                      element Data_Center {                   element Data_Center_Name {                              element Short_Name {                                if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then                                      string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))                       else                                string($DataCuratorRoleHolder/moles:abbreviation)                           },                  element Long_Name {                             if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then                                  string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))                           else string($DataCuratorRoleHolder/moles:name)                      }                   },                      if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then                                 element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)}                   else (),                        for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID                       return                              element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, '__', $DGID/moles:schemeIdentifier, '__', $DGID/moles:localIdentifier)},                      element  Personnel {                            element Role {'Data Center Contact'},                           if (exists($DataCuratorRoleHolder/name/knownAs)) then                               element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)}                                else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then                                     element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)}                                else (),                                                                        element Last_Name {                                      if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then                                                string($DataCuratorRoleHolder/moles:name/moles:familyName)                                    else string($DataCuratorRoleHolder/moles:name)                                  },                          if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then                                 element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)}                           else                                if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then                                           (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)})                                   else (),                                if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then                                     element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)}                               else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then                                          element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)}                                  else (),                               if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then                                   element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)}                               else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then                                        element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)}                                         else (),                                if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then                               element Contact_Address {                                   for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline                                           return element Address {data($addressline)},                                                         if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then                                       element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)}                               else (),                                if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then                                        element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)}                                    else (),                                 if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then                                         element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)}                                 else ()                                 }                          else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then                                    element Contact_Address {                                   for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline                                             return element Address {data($addressline)},                                                             if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then                                         element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)}                                         else (),                                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then                                          element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)}                                  else (),                                         if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)) then                                           element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)}                                   else ()                                     }                          else ()                                  }                         },   element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)},    element Related_URL  {      element URL_Content_Type {'NDG_B_SERVICE'},             element URL {data($DE/moles:dgMetadataID/moles:repositoryIdentifier)},          element Description {'The NDG service for browsing metadata.'}          },  for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule       return              if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then                             (element Related_URL {                                  element URL_Content_Type {'NDG_A_SERVICE'},                             if (exists($DG/instance/URI)) then                                  element URL {escape-uri($DG/instance/URI, true())}                                  else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then                                   element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())}                             else ($DG/moles:dataModelID/moles:repositoryIdentifier),                                element Description {'The NDG service delivering data via NDG A metadata.'}                         },                         element Related_URL {                                    element URL_Content_Type {'GET DATA > CSML'},                                   if (exists($DG/instance)) then                                      element URL {escape-uri($DG/instance/URI, true())}                                  else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then                                   element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&datasetID=', true())}                             else (),                                element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'}                            })              else if ($DG/moles:dataModelID/moles:schemeIdentifier='CDML-0') then                            (element Related_URL {                                     element URL_Content_Type {'NDG_A_SERVICE'},                              if (exists($DG/instance)) then                                      element URL {escape-uri($DG/instance/URI, true())}                                  else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then                                   element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}                              else (),                                element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}                                },                          element Related_URL {                               element URL_Content_Type {'GET DATA > DX'},                             if (exists($DG/instance)) then                                      element URL {escape-uri($DG/instance/URI, true())}                                  else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then                                   element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}                              else (),                                element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'}                                })          else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then                           element Related_URL {                           element URL {data($DG/moles:instance/moles:URI)},                               if (exists($DG/moles:instance/moles:instanceComment)) then                                      element Description {data($DG/moles:instance/moles:instanceComment)}                                            else                                    element Description {'URL to aid in delivering data. Note that this may point directly to the data or, more likely, point to the web site of the curator.'}                             }       else (),        for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)         return                          element Related_URL {                           element URL {data($RelURL_Desc)},                       element Description {concat(data($RelURL_Desc/moles:name), ' - ', data($RelURL_Desc/moles:notes))}                                   },     element Metadata_Name {'[CEOS IDN DIF]'},       element Metadata_Version {'9.4'},       if  (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then                  element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)}         else (),        for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate        return              element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))},      if  (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then            element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)}       else ()         } } ) else (    element dummy:container { doc(fn:item-at($i, 1)) } )"; 
    217216                                        queryParams.addElement( xqueryStr.getBytes("UTF-8") );  
    218217                                        queryParams.addElement( 1 ); 
     
    277276                                        org.jdom.Element root = doc.getRootElement(); 
    278277                                        org.jdom.Element container = root.getChild("container", Namespace.getNamespace("dummy","http://ndg.nerc.ac.uk/dummy")); 
    279                                         org.jdom.Element elem = container.getChild("Metadata", Namespace.getNamespace("http://www.dassh.ac.uk")); 
     278                                        org.jdom.Element elem = container.getChild("Metadata", Namespace.getNamespace("http://www.oceannet.org/mdip/xml")); 
    280279 
    281280                                        returnDoc = out.outputString( elem ); 
Note: See TracChangeset for help on using the changeset viewer.