@@ -58,17 +58,19 @@ declare %private function jmmc-simbad:tap-adql-query($uri as xs:string, $query a
5858(:~
5959 : Return a target description from the VOTable row.
6060 :
61- : The description is made from the oid, ra and dec coordinates and the main
62- : name.
63- :
61+ : The description is made from the main_name, ra, dec, pmra, pmdec coordinates and the oid.
62+ : Empty proper motion values are replaced by -0 values
6463 : @param $row a VOTable row
6564 : @return a target description as sequence
6665 :)
6766declare %private function jmmc-simbad:target ($row as element (votable:TR)) as element (target) {
6867 <target> {
6968 for $f at $i in $row/ancestor::votable:TABLE/votable:FIELD
7069 let $name := $f/@name
71- let $value := $row/votable:TD[position () = $i]/text ()
70+ let $value := if ($name=("pmra" , "pmdec" )) then
71+ try {xs:double ($row/votable:TD[position () = $i])} catch * {"-0" }
72+ else
73+ $row/votable:TD[position () = $i]/text ()
7274 return element { $name } { $value }
7375 } </target>
7476};
@@ -109,7 +111,7 @@ declare %private function jmmc-simbad:escape($str as xs:string) as xs:string {
109111declare function jmmc-simbad:votable4identifiers ($identifiers as xs:string*){
110112 let $table :=
111113 <table>
112- <tr><th>identifier </th></tr>
114+ <tr><th>user_identifier </th></tr>
113115 {
114116 for $identifier in $identifiers
115117 return <tr><td>{$identifier}</td></tr>
@@ -119,13 +121,14 @@ declare function jmmc-simbad:votable4identifiers($identifiers as xs:string*){
119121 let $votable := jmmc-tap:table2votable ($table, $name)
120122
121123 let $query := "SELECT whynot.*, main_id AS name, ra, dec, pmra, pmdec, oid AS id " ||
122- "FROM basic JOIN ident ON oidref=oid RIGHT JOIN TAP_UPLOAD.whynot as whynot ON id=my_identifier "
124+ "FROM basic JOIN ident ON oidref=oid RIGHT JOIN TAP_UPLOAD.whynot as whynot ON id=my_user_identifier "
123125 return
124126 jmmc-tap:tap-adql-query ($jmmc-simbad:TAP-SYNC, $query, $votable, count ($identifiers), "votable/td" )
125127};
126128
127129(:~
128130 : Try to identify somes targets from the given identifiers on CDS Simbad.
131+ : Empty proper motion values are replaced by -0 values
129132 :
130133 : @param $identifiers the target names
131134 : @return a map of identifiers / targets (same format as resolve-by-name) value is empty if identifier is unknown on Simbad.
@@ -134,22 +137,23 @@ declare function jmmc-simbad:resolve-by-names($identifiers as xs:string*) as ite
134137 let $votable := jmmc-simbad:votable4identifiers ($identifiers)
135138 let $map := map:merge (
136139 for $tr in $votable//*:TR
137- let $my_identifier := data ($tr/*:TD[1 ])
140+ let $user_identifier := data ($tr/*:TD[1 ])
138141 let $id := data ($tr/*:TD[7 ])
139142 let $target := if (exists ($id)) then
140143 <target>
141144 {
142- element {"name" } {data ($tr/*:TD[2 ])}
143- ,element {"ra" } {data ($tr/*:TD[3 ])}
144- ,element {"dec" } {data ($tr/*:TD[4 ])}
145- ,element {"pmra" } {data ($tr/*:TD[5 ])}
146- ,element {"pmdec" } {data ($tr/*:TD[6 ])}
147- ,element {"id" } {data ($tr/*:TD[7 ])}
145+ element {"user_identifier" } {$user_identifier}
146+ ,element {"name" } {data ($tr/*:TD[2 ])}
147+ ,element {"ra" } {data ($tr/*:TD[3 ])}
148+ ,element {"dec" } {data ($tr/*:TD[4 ])}
149+ ,element {"pmra" } {try {xs:double ($tr/*:TD[5 ])} catch * {"-0" }}
150+ ,element {"pmdec" } {try {xs:double ($tr/*:TD[6 ])} catch * {"-0" }}
151+ ,element {"id" } {$id}
148152 }
149153 </target>
150154 else
151155 ()
152- return map:entry ($my_identifier , $target)
156+ return map:entry ($user_identifier , $target)
153157 )
154158 return $map
155159};
0 commit comments