Changeset 4425
- Timestamp:
- 12/11/08 10:42:25 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
exist/trunk/xquery/atom2DIF.xq
r4421 r4425 1 declare default element namespace 'http://www.w3.org/2005/Atom'; 1 declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 2 declare namespace atom = 'http://www.w3.org/2005/Atom'; 2 3 declare namespace dif = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 3 4 declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance'; … … 23 24 :) 24 25 25 declare variable $targetCollection as xs:string := ' /db/atoms';26 declare variable $targetCollection as xs:string := 'TargetCollection'; 26 27 declare variable $deploymentsCollection as xs:string := '/db/atoms'; 27 declare variable $repositoryIdentifier as xs:string := ' badc.nerc.ac.uk';28 declare variable $localIdentifier as xs:string := ' dataent_WLSTA';28 declare variable $repositoryIdentifier as xs:string := 'RepositoryID'; 29 declare variable $localIdentifier as xs:string := 'LocalID'; 29 30 declare variable $dptTerm as xs:string := 'DPT - NOT YET SET UP/None/DPT'; 30 31 declare variable $obsTerm as xs:string := 'OBS - NOT YET SET UP/None/OBS'; 31 declare variable $activityTerm as xs:string := 'A CTIVITY - NOT YET SET UP/None/OBS';32 declare variable $activityTerm as xs:string := 'Activity - NOT YET SET UP/None/ACTIVITY'; 32 33 declare variable $granuleTerm as xs:string := 'GRAN - NOT YET SET UP/None/GRANULE'; 34 declare variable $deploymentTerm as xs:string := 'NOT YET SET UP/None/Deployment'; 33 35 declare variable $uriTerm as xs:string := 'URI'; 34 36 35 for $DE in collection($targetCollection)/ entry[matches(id, concat('__ATOM__',$localIdentifier,'$'))]37 for $DE in collection($targetCollection)/atom:entry[matches(atom:id, concat('__ATOM__',$localIdentifier,'$'))] 36 38 return 37 39 element DIF { 38 40 attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'}, 39 element Entry_ID {concat(string($DE/moles:entity/moles:molesISO/moles:providerID),':DIF:', tokenize(string($DE/ id), '__ATOM__')[2])},40 element Entry_Title {string($DE/ title)},41 element Entry_ID {concat(string($DE/moles:entity/moles:molesISO/moles:providerID),':DIF:', tokenize(string($DE/atom:id), '__ATOM__')[2])}, 42 element Entry_Title {string($DE/atom:title)}, 41 43 element Data_Set_Citation { 42 element Dataset_Creator {string($DE/a uthor/name)},43 element Dataset_Title {string($DE/ title)}44 element Dataset_Creator {string($DE/atom:author/atom:name)}, 45 element Dataset_Title {string($DE/atom:title)} 44 46 }, 45 47 element Personnel { … … 50 52 element Parameters { element Category {''}, element Topic {''}, element Term {''} }, 51 53 52 for $deploymentID in ($DE/link[@rel = 'ActivityDeployment']) 53 return 54 for $atom in ($deploymentsCollection/entry[link[@href = $deploymentID] and category[@label = 'Deployment']]) 55 return 56 for $dpt in ($atom[link[@rel = $dptTerm]]) 57 return 58 element Sensor_Name { 59 element Long_Name {data($dpt[title])} 60 }, 61 for $deploymentID in ($DE/link[@rel = 'ActivityDeployment']) 62 return 63 for $atom in ($deploymentsCollection/entry[link[@href = $deploymentID] and category[@label = 'Deployment']]) 64 return 65 for $obs in ($atom[link[@rel =$obsTerm]]) 66 return 67 element Source_Name { 68 element Long_Name {data($obs[title])} 69 }, 70 for $deploymentID in ($DE/link[@rel = 'ActivityDeployment']) 71 return 72 for $atom in ($deploymentsCollection/entry[link[@href = $deploymentID] and category[@label = 'Deployment']]) 73 return 74 for $activity in ($atom[link[@rel =$activityTerm]]) 75 return 76 element Project { 77 element Long_Name {data($activity[title])} 78 }, 79 80 for $TemporalRange in $DE/moles:temporalRange 54 (:Top level loop over all link data in the atom that refers to deployment atoms:) 55 (: NB, slightly convoluted way of doing things to avoid item duplication :) 56 for $val in distinct-values( 57 for $deploymentID in data($DE/atom:link[@rel = $deploymentTerm]/@href) 58 return 59 (:Now look up these deployment atoms and retrieve their links - removing duplicates:) 60 for $title in (data(collection($deploymentsCollection)/atom:entry[atom:link[@href = $deploymentID] and atom:category[@label = 'Deployment']]/atom:link[@rel = $dptTerm]/@title)) 61 return 62 $title 63 ) 64 return 65 element Sensor_Name { 66 element Long_Name {$val} 67 }, 68 69 for $val in distinct-values( 70 for $deploymentID in data($DE/atom:link[@rel = $deploymentTerm]/@href) 71 return 72 for $title in (data(collection($deploymentsCollection)/atom:entry[atom:link[@href = $deploymentID] and atom:category[@label = 'Deployment']]/atom:link[@rel = $obsTerm]/@title)) 73 return 74 $title 75 ) 76 return 77 element Source_Name { 78 element Long_Name {$val} 79 }, 80 for $TemporalRange in $DE/moles:temporalRange 81 81 return 82 83 84 element Start_Date {tokenize(string($DE/moles:temporalRange), '/')[0]},85 element Stop_Date {tokenize(string($DE/moles:temporalRange), '/')[1]}86 82 element Temporal_Coverage 83 { 84 element Start_Date {tokenize(string($DE/moles:temporalRange), '/')[1]}, 85 element Stop_Date {tokenize(string($DE/moles:temporalRange), '/')[2]} 86 }, 87 87 88 for $BoundingBox in $DE// georss:where/gml:Envelope88 for $BoundingBox in $DE//../gml:Envelope 89 89 return 90 90 element Spatial_Coverage { 91 element Southernmost_Latitude { data($BoundingBox/gml:lowerCorner)},92 element Northernmost_Latitude {tokenize(string($BoundingBox/gml:upperCorner), ' ')[1]},93 element Westernmost_Longitude {tokenize(string($BoundingBox/gml:lowerCorner), ' ')[0]},94 element Easternmost_Longitude {tokenize(string($BoundingBox/gml:upperCorner), ' ')[0]}91 element Southernmost_Latitude {tokenize(string($BoundingBox/gml:lowerCorner), ' ')[2]}, 92 element Northernmost_Latitude {tokenize(string($BoundingBox/gml:upperCorner), ' ')[2]}, 93 element Westernmost_Longitude {tokenize(string($BoundingBox/gml:lowerCorner), ' ')[1]}, 94 element Easternmost_Longitude {tokenize(string($BoundingBox/gml:upperCorner), ' ')[1]} 95 95 }, 96 96 97 97 element Data_Resolution {''}, 98 99 for $val in distinct-values( 100 for $deploymentID in data($DE/atom:link[@rel = $deploymentTerm]/@href) 101 return 102 for $title in (data(collection($deploymentsCollection)/atom:entry[atom:link[@href = $deploymentID] and atom:category[@label = 'Deployment']]/atom:link[@rel = $activityTerm]/@title)) 103 return 104 $title 105 ) 106 return 107 element Project { 108 element Long_Name {$val} 109 }, 98 110 element Quality {''}, 99 111 element Use_Constraints {''}, … … 102 114 element Multimedia_Sample {''}, 103 115 element Reference {''}, 104 element Summary {string($DE/ summary)},105 for $link in ($DE/link[@rel = $granuleTerm])106 107 108 109 110 116 element Summary {string($DE/atom:summary)}, 117 for $link in ($DE/atom:link[@rel = $granuleTerm]) 118 return 119 element Related_URL { 120 element URL {data($link[@href])}, 121 element Description {data($link[@title])} 122 }, 111 123 112 for $link in ($DE/link[@rel = $uriTerm])113 114 115 116 117 124 for $link in ($DE/atom:link[@rel = $uriTerm]) 125 return 126 element Related_URL { 127 element URL {data($link[@href])}, 128 element Description {data($link[@title])} 129 }, 118 130 element Parent_DIF {''}, 119 131 element IDN_Node { element Short_Name {''} }, … … 124 136 element DIF_Creation_Date {data($DE/moles:entity/moles:molesISO/moles:created)} 125 137 else (), 126 if (exists($DE/ updated)) then127 element DIF_Revision_History {data($DE/ updated)} (: missing updator + summary... :)138 if (exists($DE/atom:updated)) then 139 element DIF_Revision_History {data($DE/atom:updated)} 128 140 else () 129 141 }
Note: See TracChangeset
for help on using the changeset viewer.