国立天文台 天文学データ解析計算センター 白崎裕治

Slides:



Advertisements
Similar presentations
XML ゼミ 独習 XML ~ 第 6 章 XHTML~ 6.1 XHTML の概要 6.2 XHTML の構造 谷津 哲平.
Advertisements

応用 Java(Java/XML) 第 10 回 2006 年 7 月 14 日 植田龍男. 後半の内容の予定 XPath (6/9) 、 XSLT (6/16) 名前空間 (Namespace) (6/16) XML 文書の妥当性の検証 (6/23) DTD, W3C XML Schema SOAP.
バーチャル天文台標準規約の紹介と運用への取り組み、そしてサイエンスの実践
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
第9回 2007年6月22日 応用Java (Java/XML).
事前準備 ttsshでのログイン フォルダ名 XML ファイルコピー  cp ~hurry-go-round/Java/XML/* .
Applet 岡部 祐典 鈴木 敬幸.
背景 我々の研究室で開発しているJavaプログラム解析フレ ームワークでは,解析情報はメモリ上に保持される 問題点
IE5でアプリケーション開発 東日本計算センター 小野 修司.
JSFによるWebアプリケーション開発 第11回
早稲田大学大学院理工学研究科 情報科学専攻修士2年 後藤滋樹研究室 坂本義裕
アルゴリズムとプログラミング (Algorithms and Programming)
第1回 HTML5入門.
XMLゼミ 2.3 XMLのプロローグ 2.4 XMLのタグ 高橋 辰裕.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
卒研:データベースチーム 第4回 DOMを使った処理
最新情報技術を活用した超大規模 天文データ解析機構の研究開発
Solar-B データベース およびデータ解析環境
XSLT XML文書はそのままでは読み易い形で表示されない。 XML文書を別のXML文書に変換して、情報抽出や表示をする枠組みがXSLT。
JSFによるWebアプリケーション開発 第6回
WSDL と JAX-RPC 年10月20日 Webサービス II (第4回) WSDL と JAX-RPC 年10月20日.
SGMLについて 2年8組  原口 文晃.
XMLゼミ 5.1 XML文書と表示 5.2 CSS 5.3 XMLとXSL 高橋 辰裕.
XSL-FO + MathML MathML表示、PDF生成、SVG生成
2018/9/21 JVOの研究開発 国際連携と全体進捗 国立天文台 & 総合研究大学院大学     大石雅寿 2004/03/23
第12回 2007年7月13日 応用Java (Java/XML).
11.6 ランダムアクセスファイル 11.7 StreamTokenizerクラス
9.1 DOMの概要 9.2 DOMプログラミングの基礎 9.3 DOMのプログラミング例
第10回 2007年6月29日 応用Java (Java/XML).
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
図書館職員のための アプリケーション開発講習会
2018/12/5 ネット商品の管理術 ファイル読み込みの活用.
第11回 2007年7月6日 応用Java (Java/XML).
第8回 2007年6月15日 応用Java (Java/XML).
第3回 2007年4月27日 応用Java (Java/XML).
VO ツール利用法 TOPCAT 国立天文台 天文データセンター 白崎 裕治.
XBRLで記述された財務データを扱う言語処理系の提案
第7回 2007年6月8日 応用Java (Java/XML).
独習XML 第2章 XML文書の構成要素 2.1 XMLの文字と文字列 2.2 コメント
第6回 2007年6月1日 応用Java (Java/XML).
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
Present Status of Metbroker
JVOの研究開発 (メタデータ交換の国際対応)
JVO の研究開発 -- バーチャル天文台に対応した データサービスの実装 --
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド
Javaによる Webアプリケーション入門 第2回
第2回 2007年4月20日 応用Java (Java/XML).
独習XML ~第3章 文書と構造~ 3.3 スキーマ 3.3 XML Schema
第1章 実世界のモデル化と形式化 3.地物インスタンスの表現
第13回 2007年7月20日 応用Java (Java/XML).
アルゴリズムとデータ構造 2010年6月21日
XML Schema (1) ソフトウェア特論 第3回 /
~let's take fun when you can do it~
応用Java(Java/XML) 第7回 2006年6月16日 植田龍男.
XMLゼミ 3.5 DTD M2 正木 裕一.
3-1.文書と構造 3-2.整形式文書と検証済み文書 兒玉 光太郎
JVOの研究開発 (プロトタイプ2の実装) 田中昌宏、白崎裕治、本田敏志、 大石雅寿、水本好彦(国立天文台)、
コンピュータ プレゼンテーション.
画像を貼る 目標:このようなページを作る.
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
ポインタとポインタを用いた関数定義.
独習XML ~第1章 XMLの基礎~ 1.1 XML文書の基礎 1.2 XMLとHTML
JSPの基本 J2EE I (データベース論) 第8回 /
2006年10月18日 植田龍男 Webサービス II (第4回) 年10月18日 植田龍男.
応用Java(Java/XML) 第8回 2005年6月9日 植田龍男.
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
応用Java(Java/XML) 第8回 2005年6月23日 植田龍男.
Presentation transcript:

国立天文台 天文学データ解析計算センター 白崎裕治 VOTable について 国立天文台 天文学データ解析計算センター 白崎裕治

VOTable VOTable はデータの受け渡しを行うための文書である。 VOTable は XML (eXtensible Markup Language) の規約に則って書かれた文書である。 HTML はタグ名は勝手に決められない。 XML は自由に定義することができる。 整形式文書 (well-formed XML document) 妥当な文書 (valid XML document) DTD, XML Schema により文書の構成を定義 VOTable は VOTable Schma に則った妥当な文書である。

VO におけるデータの受け渡し VO Data Center ユーザ VOQL, ADQL, SIAP, SSAP (HTTP-SOAP or HTTP-GET/PUT) ADQL, SIAP, SSAP (HTTP-SOAP or HTTP-GET/PUT) VO VOTable, FITS VOTable, FITS ADQL, SIAP, SSAP (HTTP-SOAP or HTTP-GET/PUT) Data Center ユーザ VOTable, FITS

XML 文書の例 <要素名 属性名1=“属性値1” 属性名2=“属性値2”> データ </要素名> <?xml version=“1.0” encoding=“Shift_JIS”?> <!-- 簡単な XML 文書 --> <cars xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“car.xsd"> <car id=“1001” country=“日本”> <name>乗用車</name> <price>150</price> </car> </cars> id=“1001” ルート 要素 属性 XML宣言 コメント <要素名 属性名1=“属性値1” 属性名2=“属性値2”> データ </要素名> 要素名やデータ型は XML Schema によって定義される。

XML Schema の例 <?xml version=“1.0” encoding=“UTF-8” ?> <xsd:schema targetNamespace=“car.xsd” xmlns=“car.xsd” xmlns:xs=“http://www.w3.org/2001/XMLSchema”> <xs:element name=“cars” type=“carsType”/> <xs:element name=“car” type=“carType”/> <xs:element name=“name” type=“xs:string”/> <xs:element name=“price” type=“xs:string”/> <xs:complexType name=“carsType”> <xs:element ref=“car” maxOccurs=“unbounded”/> </xs:complexType> <xs:complexType name=“carType”> <xs:sequence> <xs:element ref=“name”/> <xs:element ref=“price”/> </xs:sequence> <xs:attribute name=“id” type=“xs:int”/> <xs:attribute name=“country” type=“xs:string”/>

VOTable の情報源 IVOA VOTable Working Group http://www.ivoa.net/twiki/bin/view/IVOA/IvoaVOTable VOTable Format Denition Version 1.093 http://cdsweb.u-strasbg.fr/doc/VOTable/latest/votable.htx VOTable Schema Version 1.1 http://www.ivoa.net/internal/IVOA/IvoaVOTable/VOTable-1.1.xsd VOTable I/O Libraries and Tools http://www.ivoa.net/internal/IVOA/IvoaVOTable/VOTableAvailableSoftware.html

VOTable の例 <?xml version="1.0"?> <VOTABLE version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://vizier.u-strasbg.fr/xml/VOTable-1.1.xsd"> <DEFINITIONS> <COOSYS ID="J2000" equinox="2000." epoch="2000." system="eq_FK5"/> </DEFINITIONS> <RESOURCE name="myFavouriteGalaxies"> <TABLE name="results"> <DESCRIPTION>Velocities and Distance estimations</DESCRIPTION> <PARAM name="Telescope" datatype="float" ucd="TEL_SIZE" unit="m" value="3.6"/> <FIELD name="RA" ID="col1" ucd="POS_EQ_RA_MAIN" ref="J2000" datatype="float" width="6" precision="2" unit="deg"/> <FIELD name="Dec" ID="col2" "POS_EQ_DEC_MAIN" ref="J2000" datatype="float" <FIELD name="Name" ID="col3" ucd="ID_MAIN" datatype="char" arraysize="8*"/> <FIELD name="RVel" ID="col4" ucd="VELOC_HC" datatype="int" width="5" unit="km/s"/> <FIELD name="e_RVel" ID="col5" ucd="ERROR" datatype="int" width="3" unit="km/s"/> <FIELD name="R" ID="col6" ucd="PHYS_DISTANCE_TRUE" datatype="float" width="4" precision="1" unit="Mpc"> <DESCRIPTION>Distance of Galaxy, assuming H=75km/s/Mpc</DESCRIPTION> </FIELD> <DATA> <TABLEDATA> <TR> <TD>010.68</TD><TD>+41.27</TD><TD>N 224</TD><TD>-297</TD><TD>5</TD><TD>0.7</TD> </TR> <TD>287.43</TD><TD>-63.85</TD><TD>N 6744</TD><TD>839</TD><TD>6</TD><TD>10.4</TD> <TD>023.48</TD><TD>+30.66</TD><TD>N 598</TD><TD>-182</TD><TD>3</TD><TD>0.7</TD> </TABLEDATA> </DATA> </TABLE> </RESOURCE> </VOTABLE>

VOTable (Data Structure) ID, name, ref DESCRIPTION DESCRIPTION DEFINITIONS FIELD... COOSYS… PARAM... PARAM…  GROUP... LINK... INFO…  DATA RESOURCE… FIELD DESCRIPTION ID, unit, datatype, precision width, ref, name, ucd, utype, arraysize INFO... DESCRIPTION COOSYS... VALUE PARAM... LINK LINK... TABLE... DATA TABLEDATA | BINARY | FITS RESOURCE...

属性 ID と name 大部分の要素は属性として name と ID を指定できる。 name 属性は presentation purpose として使う。 VOTable 内で重複しても構わない。 ID 属性は参照するために使う。 VOTable 内で重複してはならない。 使える文字種に制限。(XML の ID に関する規約)

<COOSYS> 用法 DEFINITION 要素内で使われる座標系を定義する。 複数の座標系が使われる場合複数定義する。     複数の座標系が使われる場合複数定義する。     ID 属性値で参照する。 属性 equinox, epoch, system 要素値 ICRS, eq_FK5, eq_FK4, ecl_FK4, ecl_FK5, galactic, supergalactic, barycentric, geo_app, xy 例 <COOSYS ID=“J2000” equinox=“2000.” epoch=“2000.”  system=“eq_FK5”/> <COOSYS ID=“J2000”> eq_FK5 </COOSYS>

<PARAM> 用法 カラム, テーブル, VOTable 内で共通の値をもつパラメータの定義を行う。 属性・要素のデータ型 <FIELD> とほぼ同じ。唯一の違いは “value” 属性を持つこと。 例 <TABLE name=“results”>    <DESCRIPTION>Velocities and Distance  estimations</DESCRIPTION>    <PARAM name=“TelescopeSize” datatype=“float” ucd=“TEL_SIZE” unit=“m” value=“3.6”/> ... </TABLE>

<FIELD>

FIELD 要素の例 <FIELD name="RA" ucd="POS_EQ_RA_MAIN" ref="J2000" datatype="float" width="6" precision="2" unit="deg"/> <FIELD name="Dec" "POS_EQ_DEC_MAIN" ref="J2000" datatype="float" width="6" precision="2" unit="deg"/> <FIELD name="Name" ucd="ID_MAIN" datatype="char" arraysize="8*"/> <FIELD name="RVel" ucd="VELOC_HC" datatype="float" width="5" unit="km/s"/> <FIELD name="R" ucd="PHYS_DISTANCE_TRUE" datatype="float" width="4" precision="1" unit="Mpc"> <DESCRIPTION>Distance of Galaxy, assuming H=75km/s/Mpc</DESCRIPTION> </FIELD> <FIELD name="references" ucd="REFER_BIBCODE" datatype="char" arraysize="20x*"/>

<GROUP> FIELD 要素をグループ化するのに利用 例:値と誤差でグループ化する。カラムのパラメータ値を定義する。 <GROUPE name=“Flux” ucd=“PHOT_FLUX_RADIO_400M”> <DESCRIPTION>Flux measured at 352MHz</DESCRIPTION> <FIELD name=“Flux” ucd=“PHOT_FLUX_RADIO_400M” datatype=“float” unit=“mJy”/> <PARAM name=“Freq” ucd=“OBS_FREQUENCY” unit=”MHz” datatype=“float” value=“352”/> <FIELD name=“e_Flux” ucd=“ERROR” datatype=“float” width=“4” unit=“mJy”/> </GROUPE>

<TABLEDATA> aString Floats varComplex Apple 1.62 4.56 3.44 <FIELD ID=“aString" datatype="char" arraysize="10"/> <FIELD ID="Floats" datatype="float" arraysize="3"/> <FIELD ID="varComplex" datatype="floatComplex" arraysize="*"/> <DATA><TABLEDATA> <TR> <TD>Apple</TD><TD>1.62 4.56 3.44</TD> <TD>67 1.57 4 3.14 77 -1.57</TD> </TR><TR> <TD>Orange</TD><TD>2.33 4.66 9.53</TD> <TD>39 0 46 3.14</TD> </TR> </TABLEDATA></DATA> </TABLE> aString Floats varComplex Apple 1.62 4.56 3.44 67+1.57i 4+3.14i 77–1.57i Orange 2.33 4.66 9.53 39+0i 46+3.14i

XML パーサの種類 DOM : メモリロード型 SAX : シーケンシャル読み込み XML Pull : シーケンシャル読み込み

VOTable の読み書きソフト Java Parsers http://www.ivoa.net/internal/IVOA/IvoaVOTable/VOTableAvailableSoftware.html Sr. Num. Name of parser Description コメント 1 JAVOT (NVO) Supports reading, writing メモリロード型。 2002年以降更新されていない。 2 SAVOT (European VO) Support reading, writing and editing. メモリロード型とシーケンシャル読み込み型。 書き込みをメモリロードが必要。 3 VOTable Java Streaming Writer (VO-India) Supports writing. シーケンシャル書き込み型。 大規模データの書き出しに有効。 4 VOTable Java Parser based on XML Schema (NVO) Supports reading and writing. JAVOTの後継版? 5 Starlink Tables Infrastructure Library (Starlink) 多機能。

SAVOT cds.savot.model.jar VOTable の Class SavotVOTable Class SavotField Class SavotTableData cds.savot.pull.jar Class SavotPullEngine Class SavotPullParser cds.savot.writer.jar Class WriteDocument kXML2

SAVOT 例 // 一度にメモリに読みこむ場合 SavotPullParser sb = new SavotPullParser(file, SavotPullEngine.FULL ); // シーケンシャルに読む場合 SavotPullParser sb = new SavotPullParser(source, SavotPullEngine.SEQUENTIAL); // VOTable の最初のリソースを取り出す。 SavotResource currentResource = sb.getNextResource(); while (currentResource != null) { // このリソースに含まれるテーブルを読む    for (int i = 0; i < currentResource.getTableCount(); i++) {      tr = currentResource.getTRSet(i);       if (tr != null) {          for (int j = 0; j < tr.getItemCount(); j++) {             TDSet theTDs = tr.getTDSet(j);             String currentLine = new String();             for (int k = 0; k < theTDs.getItemCount(); k++) {                currentLine = currentLine + theTDs.getContent(k);             }          }       }    } }