糖鎖情報のRDF連携について

提供:TogoWiki

(版間での差分)
移動: 案内, 検索
(Federated query (5/15追記))
(糖鎖関連遺伝子のデータベース)
 
(間の25版分が非表示)
5行: 5行:
** UniProt のTaxonomy URI が使われている。ex. http://purl.uniprot.org/taxonomy/9606
** UniProt のTaxonomy URI が使われている。ex. http://purl.uniprot.org/taxonomy/9606
* UniProt で利用されているアクセッション番号を含んだ URI は含まれていなかった。
* UniProt で利用されているアクセッション番号を含んだ URI は含まれていなかった。
-
 
+
===GGDBのエンドポイントについて===
 +
GGDBのエンドポイントは、2017/5/16現在公開されていない。
== UniProtとの連携を探る ==
== UniProtとの連携を探る ==
 +
===RefSeqのIDから行けるか?===
例として、[http://acgg.asia/ggdb2/gg048 ST3GAL1]を例として UniProt のRDFを見てみる。
例として、[http://acgg.asia/ggdb2/gg048 ST3GAL1]を例として UniProt のRDFを見てみる。
* UniProtの検索フォームに、「ST3GAL1」のみを突っ込んだら、当たり前だが、3桁の結果が出てきたので、「NP_003024」をクエリとして投げた。
* UniProtの検索フォームに、「ST3GAL1」のみを突っ込んだら、当たり前だが、3桁の結果が出てきたので、「NP_003024」をクエリとして投げた。
15行: 17行:
* http://identifiers.org/refseq/NP_003024 の記述は、UniProt のRDFでは見つからなかった。
* http://identifiers.org/refseq/NP_003024 の記述は、UniProt のRDFでは見つからなかった。
** NP_003024.1というバージョンが入っているものが URIとして利用されていた。
** NP_003024.1というバージョンが入っているものが URIとして利用されていた。
-
* 最新のバージョンを togows.org を使って取りに行く
+
** バージョン情報を含んだURIであれば、連携ができる。
-
** http://togows.org/entry/protein/NP_003024/version
+
 
 +
最新のバージョンは、 togows.org を使って取ることができる。
 +
*  http://togows.org/entry/protein/NP_003024/version
== Gene symbol を UniProt Accession にコンバートしてみる ==
== Gene symbol を UniProt Accession にコンバートしてみる ==
69行: 73行:
* キュレーションとしての使用はできない
* キュレーションとしての使用はできない
-
==Federated query (5/15追記)==
+
==Gene symbolで連携==
-
docker-virtuosoを使ってローカルで、federated queryを行った。
+
2017/5/15-16記述
 +
===Federated query===
 +
 
 +
 
 +
[https://github.com/aokinobu/docker-virtuoso docker-virtuoso]を使ってローカルで、federated queryを行った。
VirtuosoのConductorにある、ISQLフォームに以下を実行。
VirtuosoのConductorにある、ISQLフォームに以下を実行。
105行: 113行:
</pre>
</pre>
-
==cURLを使って、RDFをアップロード==
+
===GGDBのRDFをアップロード===
 +
 
 +
GGDB(FUT9)のRDFをcURLを使って、ローカルのVirtuosoにアップロードする。
 +
*  [http://acgg.asia/ggdb2/gg008 FUT9] : Alpha-(1,3)-fucosyltransferase 9
 +
 
 +
まずは、GGDB(FUT9)のRDFをダウンロード
 +
<pre>
 +
$ wget http://acgg.asia/ggdb2/gg008.ttl
 +
</pre>
 +
 
 +
 
 +
TTLをcURLで、ローカルのVirtuosoへアップロード (PUT) 
 +
 
 +
参考:https://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtGraphProtocolCURLExamples
 +
<pre>
 +
$ curl --digest --user dba:dba --verbose --url "http://localhost:8890/sparql-graph-crud-auth?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9" -T gg008.ttl
 +
</pre>
 +
 
 +
RDFが入った模様
 +
<pre>
 +
$ curl --verbose --url "http://localhost:8890/sparql-graph-crud?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9"
 +
*  Trying ::1...
 +
* TCP_NODELAY set
 +
* Connected to localhost (::1) port 8890 (#0)
 +
> GET /sparql-graph-crud?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9 HTTP/1.1
 +
> Host: localhost:8890
 +
> User-Agent: curl/7.51.0
 +
> Accept: */*
 +
>
 +
< HTTP/1.1 200 OK
 +
< Server: Virtuoso/07.20.3217 (Linux) x86_64-unknown-linux-gnu 
 +
< Connection: Keep-Alive
 +
< Date: Mon, 15 May 2017 08:08:48 GMT
 +
< Accept-Ranges: bytes
 +
< Content-Type: text/turtle; charset=UTF-8
 +
< Content-Length: 36092
 +
<
 +
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 +
@prefix up: <http://purl.uniprot.org/core/> .
 +
<http://purl.uniprot.org/taxonomy/9606> rdf:type up:Taxon .
 +
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
 +
<http://purl.uniprot.org/taxonomy/9606> rdfs:label "Homo sapiens" ;
 +
rdfs:seeAlso <http://identifiers.org/taxonomy/9606> .
 +
<http://acgg.asia/ggdb2/img/structure/175_JCGG-STR029404.png> rdfs:label "175_JCGG-STR029404.png" .
 +
...
 +
</pre>
 +
 
 +
===GGDB RDF から rdfs:labelの"FUT9"を取り出す===
 +
2017/5/15記述
 +
 
 +
GGDBのRDF (FUT9) に記述されている "rdfs:label" から、"FUT9" をSPARQLで取り出せることを確認する。
 +
 
 +
以下のクエリで"FUT9"を取得。
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
select distinct *
 +
from <http://rdf.glycoinfo.org/ggdb/fut9>
 +
where{
 +
?glycogene a ggdb:Glycogene;
 +
ggdb:has_gene ?gene.
 +
?gene sio:SIO_000008 ?gene_name.
 +
?gene_name a edam:data_2299.
 +
?gene_name rdfs:label ?gene_name_label.
 +
}
 +
</pre>
 +
 
 +
以下が、結果。
 +
<pre>
 +
glycogene  gene gene_name gene_name_label
 +
http://acgg.asia/ggdb2/gg008  http://acgg.asia/ggdb2/gg008#gene  http://acgg.asia/ggdb2/gg008#genename  "FUT9"
 +
</pre>
 +
 
 +
===UniProtのエンドポイントから、"FUT9"を見つける===
 +
2017/5/16記述
 +
 
 +
UniProtのエンドポイントから、"FUT9"のラベルを取り出すクエリを作り、結果を確認する。
 +
<pre>
 +
SELECT *
 +
WHERE {
 +
  SERVICE <http://sparql.uniprot.org/sparql> {
 +
    <http://purl.uniprot.org/uniprot/Q9Y231> up:encodedBy ?gene .
 +
    ?gene a up:Gene.
 +
    ?gene skos:prefLabel ?gene_label.
 +
  }
 +
}
 +
</pre>
 +
 
 +
 
 +
以下が、結果。"FUT9"が取れた。
 +
<pre>
 +
gene gene_label
 +
http://purl.uniprot.org/uniprot/Q9Y231#gene-MD57B4A70848C9654350A86951FBD37C6CC "FUT9"
 +
</pre>
 +
 
 +
 
 +
===Federated query その2===
 +
 
 +
GGDB (FUT9) のRDFに記述されている "FUT9" のラベルから、UniProtのエンドポイント内で紐づいてる情報を取得する。
 +
*  最初は、FROM句でグラフ名を指定していて、うまく行かなかったが、GRAPH句に変えることで解決できた。 
 +
*  参考:[[SPARQLthon20/FederatedQueryTips|SPARQLthon20/FederatedQueryTips]]
 +
 
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
select distinct ?gene_name_label ?p ?up_gene
 +
where{
 +
GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
 +
?glycogene a ggdb:Glycogene.
 +
?glycogene ggdb:has_gene ?gene.
 +
?gene sio:SIO_000008 ?gene_name.
 +
?gene_name a edam:data_2299.
 +
?gene_name rdfs:label ?gene_name_label.
 +
}
 +
 
 +
SERVICE <http://sparql.uniprot.org/sparql> {
 +
?up_gene ?p ?gene_name_label.
 +
}
 +
}
 +
</pre>
 +
 
 +
 
 +
以下が、Federated queryの実行結果。"FUT9"のラベルから、UniProtのエンドポイント内で紐づく情報を取得できた。
 +
<pre>
 +
gene_name_label p up_gene
 +
"FUT9" http://www.w3.org/2000/01/rdf-schema#comment http://purl.uniprot.org/hgnc/4020
 +
"FUT9" http://www.w3.org/2000/01/rdf-schema#label http://purl.uniprot.org/uniparc/UPI00072CFB73
 +
"FUT9" http://www.w3.org/2000/01/rdf-schema#label http://purl.uniprot.org/uniprot/A0A0S7I5K1
 +
"FUT9" http://www.w3.org/2004/02/skos/core#altLabel http://purl.uniprot.org/uniprot/Q8UWC1#gene-MD5C374E2557F7C5C0DAB401B7CCA409039
 +
"FUT9" http://www.w3.org/2004/02/skos/core#prefLabel http://purl.uniprot.org/RefSeq/XP_007052844.1#gene-FUT9
 +
.... (prefLabel を使った記述が続く・・)
 +
"FUT9" http://www.w3.org/1999/02/22-rdf-syntax-ns#object http://purl.uniprot.org/uniprot/#_13E673249AF8AF8F_FFA56BCD0169E5A3_FUT9
 +
.... (object を使った記述が続く・・)
 +
"FUT9" http://purl.uniprot.org/core/fullName http://purl.uniprot.org/uniprot/A0A0S7I5K1#SIPE22BE32823D800F3
 +
"FUT9" http://purl.uniprot.org/core/structuredNameType http://purl.uniprot.org/EMBL_TSA/JAO48485.1#name-FUT9
 +
"FUT9" http://purl.uniprot.org/core/structuredNameType http://purl.uniprot.org/embl-cds/AIC55837.1#name-FUT9
 +
</pre>
 +
 
 +
===Federated query その3===
 +
UniProtの "up:Protein" クラスを指定した場合、このクラスのインスタンスはどうなっているのか?
 +
 
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
SELECT DISTINCT ?gene_name_label ?up_gene ?up_protein ?class
 +
WHERE{
 +
GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
 +
?glycogene a ggdb:Glycogene.
 +
?glycogene ggdb:has_gene ?gene.
 +
?gene sio:SIO_000008 ?gene_name.
 +
?gene_name a edam:data_2299.
 +
?gene_name rdfs:label ?gene_name_label.
 +
}
 +
 
 +
SERVICE <http://sparql.uniprot.org/sparql> {
 +
?up_gene skos:prefLabel ?gene_name_label.
 +
?up_gene a up:Gene.
 +
?up_protein up:encodedBy ?up_gene.
 +
VALUES ?class { up:Protein }
 +
?up_protein a ?class.
 +
}
 +
}
 +
</pre>
 +
 
 +
実行結果。
 +
<pre>
 +
gene_name_label   up_gene up_protein class
 +
"FUT9" http://purl.uniprot.org/uniprot/B4DEW1#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/B4DEW1 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q5Q0U2#gene-MD5FF41112C1D33A0108C98297E620AC836 http://purl.uniprot.org/uniprot/Q5Q0U2 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q9XI77#gene-MD55E3FCA3F8163BAE07C399E9B0898E109 http://purl.uniprot.org/uniprot/Q9XI77 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q9Y231#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/Q9Y231 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/A0A0M3LHU2#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/A0A0M3LHU2 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/A0A0M3LIL7#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/A0A0M3LIL7 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/A0A0S7I5K1#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/A0A0S7I5K1 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/A0A0M3LI81#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/A0A0M3LI81 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/A0A0M3LJH3#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/A0A0M3LJH3 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q659L0#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/Q659L0 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q659L1#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/Q659L1 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q8HZR2#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/Q8HZR2 http://purl.uniprot.org/core/Protein
 +
"FUT9" http://purl.uniprot.org/uniprot/Q9JIG1#gene-MD57B4A70848C9654350A86951FBD37C6CC http://purl.uniprot.org/uniprot/Q9JIG1 http://purl.uniprot.org/core/Protein
 +
.....
 +
</pre>
 +
 
 +
*  絞り込みする必要があるが、何で絞り込むか?
 +
 
 +
==Gene IDで連携==
 +
2017/5/16記述
 +
===GGDBでGene IDを取得するクエリ===
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
SELECT DISTINCT *
 +
WHERE{
 +
GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
 +
?gene_id a edam:data_2295.
 +
?gene_id dcterms:identifier ?id.
 +
?gene_id rdfs:seeAlso ?ncbi_gene.
 +
}
 +
}
 +
</pre>
 +
 
 +
===UniProtのエンドポイントで、Gene ID (10690) を取得するクエリ===
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
SELECT DISTINCT *
 +
WHERE{
 +
SERVICE <http://sparql.uniprot.org/sparql> {
 +
<http://purl.uniprot.org/uniprot/Q9Y231> rdfs:seeAlso ?ncbi_gene.
 +
}
 +
}
 +
</pre>
 +
 
 +
===Gene IDで結合するクエリ===
 +
<pre>
 +
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
 +
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
 +
PREFIX up: <http://purl.uniprot.org/core/>
 +
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#>
 +
PREFIX edam:  <http://edamontology.org/>
 +
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#>
 +
PREFIX sio: <http://semanticscience.org/resource/>
 +
 
 +
SELECT DISTINCT *
 +
WHERE{
 +
GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
 +
?gene_id a edam:data_2295.
 +
?gene_id dcterms:identifier ?id.
 +
?gene_id rdfs:seeAlso ?ncbi_gene.
 +
}
 +
SERVICE <http://sparql.uniprot.org/sparql> {
 +
?up_protein rdfs:seeAlso ?ncbi_gene.
 +
}
 +
}
 +
</pre>
 +
 
 +
結果
 +
<pre>
 +
gene_id id ncbi_gene up_protein
 +
http://acgg.asia/ggdb2/gg008#gene_id  "10690"^^<http://www.w3.org/2001/XMLSchema#int>  http://identifiers.org/ncbigene/10690 http://purl.uniprot.org/uniprot/Q9Y231
 +
</pre>
 +
 
 +
*  [http://purl.uniprot.org/uniprot/Q9Y231 Q9Y231]

2017年5月16日 (火) 09:13時点における最新版

目次

糖鎖関連遺伝子のデータベース

GGDBのエンドポイントについて

GGDBのエンドポイントは、2017/5/16現在公開されていない。

UniProtとの連携を探る

RefSeqのIDから行けるか?

例として、ST3GAL1を例として UniProt のRDFを見てみる。


最新のバージョンは、 togows.org を使って取ることができる。

Gene symbol を UniProt Accession にコンバートしてみる

  • IDをコンバートできるサイト
    • http://biodb.jp/
    • ID Converterで、HUGO gene symbol —> UniProt Accession ができる
  • GGDB の HUGO gene symbol から UniProt Accession へ変換してみる
    • ST3GAL1
      • --> Q11201 (homo sapiense)
  • 他の gene symbolからでも、変換してみる
    • FUT9
      • --> B4DEW1 (homo sapiense)
      • --> Q5Q0U2 (homo sapiense)
      • --> Q9BUV6 (homo sapiense)
      • --> Q9Y231 (homo sapiense)
  • gene symbolで、対応を取るだけなら、コンバーター使わなくても、SPARQLの文字列マッチでできるはず。


SPARQL クエリ

対応を取るための、sparql クエリをつくる。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 

CONSTRUCT{
	?glycogene a ggdb:Glycogene.
	?glycogene ggdb:has_gene ?up_gene.	
	?up_gene a up:Gene.
}
WHERE{
	?glycogene a ggdb:Glycogene;
		ggdb:has_gene ?gene.

	?gene a edam:data2299;
		rdfs:label ?gene_name.

	SERVICE SILENT <http://sparql.uniprot.org> {
		?up_gene a up:Gene; 
			skos:prefLabel ?gene_name.
	}
}

クエリが正しいかどうか、未確認。。。

  • スクリーニングには、いいかもしれない
  • キュレーションとしての使用はできない

Gene symbolで連携

2017/5/15-16記述

Federated query

docker-virtuosoを使ってローカルで、federated queryを行った。

VirtuosoのConductorにある、ISQLフォームに以下を実行。

grant select on "DB.DBA.SPARQL_SINV_2" to "SPARQL";
grant execute on "DB.DBA.SPARQL_SINV_IMP" to "SPARQL";


UniProtのエンドポイントで使えるクエリを拾ってきたので、以下のクエリを実行。

SELECT *
WHERE {
  SERVICE <http://sparql.uniprot.org/sparql> {
    <http://purl.uniprot.org/uniprot/P38398> ?p ?o .
  }
}


結果、エンドポイントからの検索結果が表示された。

p	o
http://www.w3.org/1999/02/22-rdf-syntax-ns#type	http://purl.uniprot.org/core/Protein
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/mim/114480
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/mim/167000
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/mim/604370
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/mim/614320
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/intact/P38398
http://www.w3.org/2000/01/rdf-schema#seeAlso	http://purl.uniprot.org/iptmnet/P38398 
...

GGDBのRDFをアップロード

GGDB(FUT9)のRDFをcURLを使って、ローカルのVirtuosoにアップロードする。

  • FUT9 : Alpha-(1,3)-fucosyltransferase 9

まずは、GGDB(FUT9)のRDFをダウンロード

$ wget http://acgg.asia/ggdb2/gg008.ttl


TTLをcURLで、ローカルのVirtuosoへアップロード (PUT)

参考:https://virtuoso.openlinksw.com/dataspace/doc/dav/wiki/Main/VirtGraphProtocolCURLExamples

$ curl --digest --user dba:dba --verbose --url "http://localhost:8890/sparql-graph-crud-auth?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9" -T gg008.ttl 

RDFが入った模様

$ curl --verbose --url "http://localhost:8890/sparql-graph-crud?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9"
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8890 (#0)
> GET /sparql-graph-crud?graph-uri=http://rdf.glycoinfo.org/ggdb/fut9 HTTP/1.1
> Host: localhost:8890
> User-Agent: curl/7.51.0
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: Virtuoso/07.20.3217 (Linux) x86_64-unknown-linux-gnu  
< Connection: Keep-Alive
< Date: Mon, 15 May 2017 08:08:48 GMT
< Accept-Ranges: bytes
< Content-Type: text/turtle; charset=UTF-8
< Content-Length: 36092
< 
@prefix rdf:	<http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix up:	<http://purl.uniprot.org/core/> .
<http://purl.uniprot.org/taxonomy/9606>	rdf:type	up:Taxon .
@prefix rdfs:	<http://www.w3.org/2000/01/rdf-schema#> .
<http://purl.uniprot.org/taxonomy/9606>	rdfs:label	"Homo sapiens" ;
	rdfs:seeAlso	<http://identifiers.org/taxonomy/9606> .
<http://acgg.asia/ggdb2/img/structure/175_JCGG-STR029404.png>	rdfs:label	"175_JCGG-STR029404.png" .
...

GGDB RDF から rdfs:labelの"FUT9"を取り出す

2017/5/15記述

GGDBのRDF (FUT9) に記述されている "rdfs:label" から、"FUT9" をSPARQLで取り出せることを確認する。

以下のクエリで"FUT9"を取得。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

select distinct *
from <http://rdf.glycoinfo.org/ggdb/fut9>
where{
	?glycogene a ggdb:Glycogene;
		ggdb:has_gene ?gene.
	?gene sio:SIO_000008 ?gene_name.
	?gene_name a edam:data_2299.
	?gene_name rdfs:label ?gene_name_label.
}

以下が、結果。

 glycogene  gene	gene_name	gene_name_label 
 http://acgg.asia/ggdb2/gg008  http://acgg.asia/ggdb2/gg008#gene  http://acgg.asia/ggdb2/gg008#genename  "FUT9" 

UniProtのエンドポイントから、"FUT9"を見つける

2017/5/16記述

UniProtのエンドポイントから、"FUT9"のラベルを取り出すクエリを作り、結果を確認する。

SELECT *
WHERE {
  SERVICE <http://sparql.uniprot.org/sparql> {
    <http://purl.uniprot.org/uniprot/Q9Y231> up:encodedBy ?gene .
    ?gene a up:Gene.
    ?gene skos:prefLabel ?gene_label.
  }
}


以下が、結果。"FUT9"が取れた。

gene	gene_label
http://purl.uniprot.org/uniprot/Q9Y231#gene-MD57B4A70848C9654350A86951FBD37C6CC	 "FUT9"


Federated query その2

GGDB (FUT9) のRDFに記述されている "FUT9" のラベルから、UniProtのエンドポイント内で紐づいてる情報を取得する。

  • 最初は、FROM句でグラフ名を指定していて、うまく行かなかったが、GRAPH句に変えることで解決できた。
  • 参考:SPARQLthon20/FederatedQueryTips
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

select distinct ?gene_name_label ?p ?up_gene
where{
	GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
		?glycogene a ggdb:Glycogene.
		?glycogene ggdb:has_gene ?gene.
		?gene sio:SIO_000008 ?gene_name.
		?gene_name a edam:data_2299.
		?gene_name rdfs:label ?gene_name_label.
	}

	SERVICE <http://sparql.uniprot.org/sparql> {
		?up_gene ?p ?gene_name_label.
	}
}


以下が、Federated queryの実行結果。"FUT9"のラベルから、UniProtのエンドポイント内で紐づく情報を取得できた。

gene_name_label	p	up_gene
"FUT9"	http://www.w3.org/2000/01/rdf-schema#comment	http://purl.uniprot.org/hgnc/4020
"FUT9"	http://www.w3.org/2000/01/rdf-schema#label	http://purl.uniprot.org/uniparc/UPI00072CFB73
"FUT9"	http://www.w3.org/2000/01/rdf-schema#label	http://purl.uniprot.org/uniprot/A0A0S7I5K1
"FUT9"	http://www.w3.org/2004/02/skos/core#altLabel	http://purl.uniprot.org/uniprot/Q8UWC1#gene-MD5C374E2557F7C5C0DAB401B7CCA409039
"FUT9"	http://www.w3.org/2004/02/skos/core#prefLabel	http://purl.uniprot.org/RefSeq/XP_007052844.1#gene-FUT9
.... (prefLabel を使った記述が続く・・)	
"FUT9"	http://www.w3.org/1999/02/22-rdf-syntax-ns#object	http://purl.uniprot.org/uniprot/#_13E673249AF8AF8F_FFA56BCD0169E5A3_FUT9
.... (object を使った記述が続く・・)	
"FUT9"	http://purl.uniprot.org/core/fullName	http://purl.uniprot.org/uniprot/A0A0S7I5K1#SIPE22BE32823D800F3
"FUT9"	http://purl.uniprot.org/core/structuredNameType	http://purl.uniprot.org/EMBL_TSA/JAO48485.1#name-FUT9
"FUT9"	http://purl.uniprot.org/core/structuredNameType	http://purl.uniprot.org/embl-cds/AIC55837.1#name-FUT9

Federated query その3

UniProtの "up:Protein" クラスを指定した場合、このクラスのインスタンスはどうなっているのか?

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

SELECT DISTINCT ?gene_name_label ?up_gene ?up_protein ?class
WHERE{
	GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
		?glycogene a ggdb:Glycogene.
		?glycogene ggdb:has_gene ?gene.
		?gene sio:SIO_000008 ?gene_name.
		?gene_name a edam:data_2299.
		?gene_name rdfs:label ?gene_name_label.
	}

	SERVICE <http://sparql.uniprot.org/sparql> {
		?up_gene skos:prefLabel ?gene_name_label.
		?up_gene a up:Gene.
		?up_protein up:encodedBy ?up_gene.
		VALUES ?class { up:Protein }
		?up_protein a ?class.
	}
}

実行結果。

gene_name_label	   up_gene	up_protein	class
"FUT9"	http://purl.uniprot.org/uniprot/B4DEW1#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/B4DEW1	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q5Q0U2#gene-MD5FF41112C1D33A0108C98297E620AC836	http://purl.uniprot.org/uniprot/Q5Q0U2	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q9XI77#gene-MD55E3FCA3F8163BAE07C399E9B0898E109	http://purl.uniprot.org/uniprot/Q9XI77	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q9Y231#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/Q9Y231	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/A0A0M3LHU2#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/A0A0M3LHU2	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/A0A0M3LIL7#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/A0A0M3LIL7	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/A0A0S7I5K1#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/A0A0S7I5K1	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/A0A0M3LI81#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/A0A0M3LI81	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/A0A0M3LJH3#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/A0A0M3LJH3	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q659L0#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/Q659L0	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q659L1#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/Q659L1	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q8HZR2#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/Q8HZR2	http://purl.uniprot.org/core/Protein
"FUT9"	http://purl.uniprot.org/uniprot/Q9JIG1#gene-MD57B4A70848C9654350A86951FBD37C6CC	http://purl.uniprot.org/uniprot/Q9JIG1	http://purl.uniprot.org/core/Protein
.....
  • 絞り込みする必要があるが、何で絞り込むか?

Gene IDで連携

2017/5/16記述

GGDBでGene IDを取得するクエリ

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

SELECT DISTINCT *
WHERE{
	GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
		?gene_id a edam:data_2295.
		?gene_id dcterms:identifier ?id.
		?gene_id rdfs:seeAlso ?ncbi_gene.
	}
}

UniProtのエンドポイントで、Gene ID (10690) を取得するクエリ

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

SELECT DISTINCT *
WHERE{
	SERVICE <http://sparql.uniprot.org/sparql> {
		<http://purl.uniprot.org/uniprot/Q9Y231> rdfs:seeAlso ?ncbi_gene.
	}
}

Gene IDで結合するクエリ

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX up: <http://purl.uniprot.org/core/> 
PREFIX ggdb:  <http://purl.jp/bio/12/ggdb/2015/6/owl#> 
PREFIX edam:  <http://edamontology.org/> 
PREFIX skos:  <http://www.w3.org/2004/02/skos/core#> 
PREFIX sio: <http://semanticscience.org/resource/>

SELECT DISTINCT *
WHERE{
	GRAPH <http://rdf.glycoinfo.org/ggdb/fut9>{
		?gene_id a edam:data_2295.
		?gene_id dcterms:identifier ?id.
		?gene_id rdfs:seeAlso ?ncbi_gene.
	}
	SERVICE <http://sparql.uniprot.org/sparql> {
		?up_protein rdfs:seeAlso ?ncbi_gene.
	}
}

結果

gene_id	 id	 ncbi_gene	up_protein
http://acgg.asia/ggdb2/gg008#gene_id   "10690"^^<http://www.w3.org/2001/XMLSchema#int>   http://identifiers.org/ncbigene/10690	http://purl.uniprot.org/uniprot/Q9Y231
個人用ツール