• 検索結果がありません。

ウェブサービスとは WWWを介してデータの取得 解析などをサー バ側で行うサービス 人が直接使うことは意図されていない プログラム等を使って大量に処理できる(単純) 作業を意図している SOAP, REST

N/A
N/A
Protected

Academic year: 2021

シェア "ウェブサービスとは WWWを介してデータの取得 解析などをサー バ側で行うサービス 人が直接使うことは意図されていない プログラム等を使って大量に処理できる(単純) 作業を意図している SOAP, REST"

Copied!
27
0
0

読み込み中.... (全文を見る)

全文

(1)

PDBj

のウェブサービス

金城 玲

大阪大学蛋白質研究所

(2)

ウェブサービスとは?

WWW

を介してデータの取得・解析などをサー

バ側で行うサービス。

人が直接使うことは意図されていない。

プログラム等を使って大量に処理できる(単純)

作業を意図している。

SOAP, REST

(3)

PDBj

の提供するウェブサービス

大きく分けて2種類

PDB

データの取得、検索用のRESTfulウェブサービ

PDB

データを項目ごとに取得する “Xpath” サービス

PDBj

の関係データベースをSQLを使って検索する “SQL”

サービス

PDB

データをRDF形式に変換したものをURLを指定

して取得するサービス。

PDB

のエントリ

化合物(chem_comp)のエントリ

(4)
(5)
(6)

使い方: Xpath REST API

http://service.pdbj.org/mine/xpath

にアクセスすると簡単な説明が表示されます。

凡例:HTTP GETで

http://service.pdbj.org/mine/xpath/{

PDBID

}/{

Xpath

}

実例:

http://service.pdbj.org/mine/xpath/1GOF//entity[@id='1

']

結果:

<PDBx:entity id="1"> <PDBx:formula_weight>68579.250</PDBx:formula_weight> <PDBx:pdbx_description>GALACTOSE OXIDASE</PDBx:pdbx_description> <PDBx:pdbx_ec>1.1.3.9</PDBx:pdbx_ec> <PDBx:pdbx_number_of_molecules>1</PDBx:pdbx_number_of_molecules> <PDBx:src_method>man</PDBx:src_method> <PDBx:type>polymer</PDBx:type> </PDBx:entity>

(7)
(8)

使い方:SQL REST API

http://service.pdbj.org/mine/sql

にアクセスすると簡単な説明が表示されます。

パラメータ

q: SQL

format: xml | tsv | csv | plain

詳しくは “PDBj mine REST API” でウェブを検

(9)

SQL REST API

の使用例(Perl)

#!/usr/bin/env perl use LWP::UserAgent;

use HTTP::Request::Common; $ua = new LWP::UserAgent; # set proxy server

#$ua->proxy('http', '<proxy_server>:<proxy_port>'); my $url = 'http://service.pdbj.org/mine/sql';

my $q = <<EOF

SELECT s.pdbid , p.entity_id , p.pdbx_seq_one_letter_code_can FROM brief_summary s

JOIN entity_poly p ON p.docid = s.docid WHERE s.pdbid like '1m%'

EOF ; # make request my $req = POST($url, Content_Type => 'form-data', Content => [ 'format' => 'csv', 'q' => "$q"]); # post request my $res = $ua->request($req); # show response. if ($res->is_success) {

printf "success!\n"; print $res->content; } else {

print "failed!\n"; }

SQL

(10)

汎用スクリプト(Python)

#!/usr/bin/env python

# Save this program in the file named "mine_sql.py" (or whatever). # Use it like

# ./mine_sql.py tsv test.sql

# where "test.sql" is an SQL script. # import modules

import sys import urllib

# set proxy if you need

#proxy_dict = {'http': 'http://proxy.example.com:3128'} proxy_dict = None

# You don't need to edit below. # set parameters

base_url = 'http://service.pdbj.org/mine/sql'

output_format = sys.argv[1]

sql_query = open(sys.argv[2], 'r')

post_parameter = urllib.urlencode({'format':output_format, 'q':sql_query.read()}) # generate access query

result = urllib.urlopen(base_url, post_parameter, proxies=proxy_dict) # show result

(11)

従来のウェブサービスの問題点

各サービスに固有のAPI

パラメータ、入力データ……

各サービスに固有のフォーマット

→サービスごとに呼び出し関数やパーサを書き直す

必要がある。

→いろいろなサイトのサービスを組み合わせて使う

のはとても不便

(12)

セマンティックウェブサービス

Linked Data or Web of Data

賢いアプリではなく

賢いデータ

を作る

HTTP GET

でデータを取得

→リンクをたどってデータを探索

フォーマットはすべてRDF形式

RDF=Resource Description Format

(W3C

で定められた標準フォーマット)

全てのデータは「主語–述語–目的語」の三つ組とし

(13)

セマンティックウェブの構成要素

RDF

で記述されたデータ

OWL

で記述されたオントロジー

実際にデータが取得可能なURL

(SPARQL endpoint...

可能なら)

(14)

RDF

入門

http://pdbj.org/rdf/1GOF

“1GOF-noatom”

PDBo:datablockName

http://pdbj.org/rdf/1GOF/entityCategory

PDBo:has_entityCategory

http://pdbj.org/rdf/1GOF/entity/1

PDBo:has_entity

“GALACTOSE OXIDASE”

PDBo:entity.pdbx_description

http://purl.uniprot.org/enzyme/1.1.3.9

PDBo:link_to_enzyme

PDBo: = http://pdbj.org/schema/pdbx-v40.owl#

PDBo:of_datablock

(15)

PDB/RDF

http://pdbj.org/rdf/1GOF

指定したURLを主語とする三つ組み

のリストが表示される。

主語(Subject)

述語(Predicate)

目的語(Object)

(16)

PDB/RDF

を眺めてみる

(17)
(18)
(19)
(20)

PDB/RDF

ページのソースは

RDF/XML

(21)

PDB

エントリのリンク構造

(22)
(23)

PDBML

内のリンクを辿る

entity_poly

http://pdbj.org/rdf/1GOF/entity/1

(24)

PDB/RDF

のOWLオントロジー

リソース(主語または目的語)

OWL

クラス

http://pdbj.org/rdf/{PDBID}

PDBo:datablock

http://pdbj.org/rdf/{PDBID}/entityCategory

PDBo:entityCategory

http://pdbj.org/rdf/{PDBID}/entity

PDBo:entity

OWL

プロパティ(述語)

主語のクラス: 定義域

目的語のクラス: 値域

PDBo:datablockName

PDBo:datablock

(

文字列)

PDBo:has_entityCategory

PDBo:datablock

PDBo:entityCategory

PDBo:has_entity

PDBo:entityCategory

PDBo:entity

PDBo:entity.pdbx_description

PDBo:entity

(

文字列)

PDBo:link_to_enzyme

PDBo:categoryElement

(

リソース)

(25)

ユースケース

特定のPDBエントリの特定のペプチド鎖の

UniProt

キーワードを取得する

Get

http://pdbj.org/rdf/1GOF/struct_refCategory

http://pdbj.org/rdf/1GOF/struct_ref/1

http://purl.uniprot.org/uniprot/Q01745

http://purl.uniprot.org/keywords/2

, etc.

http://pdbj.org/rdf/1GOF/entity/1

http://pdbj.org/rdf/1GOF/struct_asym/A

リンク構造をある程度把握した上で、述語を介

して必要な情報をフィルターする

(26)

現状での制約

参照可能なURLでRDFデータを提供しているサ

イトが限られている。

UniProt

PDBj

KEGG in progress (?)

トリプルの数が膨大(〜数億)なの

で、SPARQLクエリ(RDBに対するSQLみたい

なもの)が(まだ)まともに使えない。

推論を含む複雑な検索はまだ現実的ではない(?)

(27)

まとめ

RESTful

ウェブサービス

Xpath

と SQL

独自API/フォーマット

セマンティックウェブ

Linked Data

あるいは Web of Data の側面のみサ

ポート

RDF/XML

で提供されたPDBMLデータ

データそのものがリンク・参照可能

参照

関連したドキュメント

睡眠を十分とらないと身体にこたえる 社会的な人とのつき合いは大切にしている

自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま

つまり、p 型の語が p 型の語を修飾するという関係になっている。しかし、p 型の語同士の Merge

あれば、その逸脱に対しては N400 が惹起され、 ELAN や P600 は惹起しないと 考えられる。もし、シカの認可処理に統語的処理と意味的処理の両方が関わっ

「欲求とはけっしてある特定のモノへの欲求で はなくて、差異への欲求(社会的な意味への 欲望)であることを認めるなら、完全な満足な どというものは存在しない

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から

従って、こ こでは「嬉 しい」と「 楽しい」の 間にも差が あると考え られる。こ のような差 は語を区別 するために 決しておざ