SPARQLthon/SPARQL samples

提供:TogoWiki

移動: 案内, 検索

目次

SPARQL Queries

たまに、SNS等で、具体的なSPARQL問い合わせに関する質問がされて、誰かが答えるような事があります。具体的な例は貴重なので、とりあえず記録として残すために、ページを作りました。

生物種一覧


# by 千葉さんの回答
# MBGD SPARQL エンドポイントにて。 [1]
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX taxid: <http://identifiers.org/taxonomy/>
PREFIX taxont: <http://ddbj.nig.ac.jp/ontologies/taxonomy/>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?wiki_page ?label ?abst
WHERE {
    ?tax_id rdfs:subClassOf* taxid:1117 ;
            taxont:scientificName ?tax_name ;
            taxont:rank taxont:Genus .
    BIND(URI(CONCAT("http://dbpedia.org/resource/", REPLACE(?tax_name, " ", "_"))) AS ?dbpedia)
    
    SERVICE <http://dbpedia.org/sparql> {
        SELECT ?wiki_page ?label ?abst ?dbpedia
        WHERE {
            ?dbpedia rdfs:label ?label ;
                     dbo:abstract ?abst ;
                     <http://xmlns.com/foaf/0.1/isPrimaryTopicOf> ?wiki_page .
            FILTER(lang(?label) = "en" && lang(?abst) = "en")
        }
    }
}
  • run sparql-support
# by OKBPさん
# WikiData query.wikidata.org にて。
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT ?descendant ?label ?tax_id ?wikipage
{
  ?taxon wdt:P685 "1117" .
  ?descendant wdt:P171* ?taxon ;
     rdfs:label ?label .
  ?descendant wdt:P105 ?rank . 
  FILTER(LANG(?label) = "en")
  ?rank rdfs:label "species"@en .
  OPTIONAL { ?descendant wdt:P685 ?tax_id . }
  OPTIONAL {
    ?wikipage schema:about ?descendant ;
      schema:isPartOf <https://en.wikipedia.org/> .
  }
}
  • run wikidata
  • run sparql-support
# by 山本さん
# WikiData query.wikidata.org にて。
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
select * {
  ?s wdt:P171+ wd:Q764 .
  ?w schema:about ?s ;
     schema:isPartOf <https://en.wikipedia.org/> .
}
  • run wikidata
  • run sparql-support
#jgoamakfさん
#DBPedia にて https://dbpedia.org/sparql
SELECT DISTINCT ?url
WHERE {
  ?resource <http://dbpedia.org/ontology/family> <http://dbpedia.org/resource/Canidae> .
  ?resource <http://xmlns.com/foaf/0.1/isPrimaryTopicOf> ?url
} LIMIT 100
  • run sparql-suppor

wwPDB RDF

  • 二次構造でβシート→ループ→βシートを持ち、かつヘアピン構造を形成しているPDBエントリー一覧


PREFIX PDBo: <http://rdf.wwpdb.org/schema/pdbx-v40.owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>

SELECT ?pdb
       ?pdb_id
       ?title
       ?sheet
       ?sheet_range_1
       ?sheet_range_1_beg
       ?sheet_range_1_end
       ?sheet_range_2
       ?sheet_range_2_beg
       ?sheet_range_2_end
       ?dist1 ?dist2
FROM <http://rdf.integbio.jp/dataset/pdbj>
WHERE {
  ?pdb dcterms:identifier ?pdb_id .
  ?pdb dc:title ?title .
  ?pdb PDBo:has_struct_sheetCategory ?sheet_category .
  ?sheet_category a PDBo:struct_sheetCategory .
  ?sheet_category PDBo:has_struct_sheet ?sheet .
  ?sheet a PDBo:struct_sheet .
  ?sheet PDBo:struct_sheet.id ?sheet_id .
  ?sheet PDBo:referenced_by_struct_sheet_order ?sheet_order .
  ?sheet_order a PDBo:struct_sheet_order .
  ?sheet_order PDBo:struct_sheet_order.sense "anti-parallel" .
  ?sheet_order PDBo:struct_sheet_order.range_id_1 ?sheet_range_1_id .
  ?sheet_order PDBo:struct_sheet_order.range_id_2 ?sheet_range_2_id .
  ?sheet PDBo:referenced_by_struct_sheet_range ?sheet_range_1 .
  ?sheet_range_1 PDBo:struct_sheet_range.id ?sheet_range_1_id .
  ?sheet_range_1 PDBo:struct_sheet_range.beg_auth_seq_id ?sheet_range_1_beg .
  ?sheet_range_1 PDBo:struct_sheet_range.end_auth_seq_id ?sheet_range_1_end .
  ?sheet PDBo:referenced_by_struct_sheet_range ?sheet_range_2 .
  ?sheet_range_2 PDBo:struct_sheet_range.id ?sheet_range_2_id .
  ?sheet_range_2 PDBo:struct_sheet_range.beg_auth_seq_id ?sheet_range_2_beg .
  ?sheet_range_2 PDBo:struct_sheet_range.end_auth_seq_id ?sheet_range_2_end .
  BIND((xsd:integer(?sheet_range_2_beg) - xsd:integer(?sheet_range_1_end)) AS ?dist1)
  BIND((xsd:integer(?sheet_range_1_beg) - xsd:integer(?sheet_range_2_end)) AS ?dist2)
  FILTER((?dist1 < 6 && ?dist1 > 1) || (?dist2 < 6 && ?dist2 > 1))
} LIMIT 1000

タンパク・リガンド相互作用

  • ChEMBL RDF に対して、UniProt URI - Ligand - 生物種 - 文献 を取得
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bibo: <http://purl.org/ontology/bibo/>
PREFIX cco: <http://rdf.ebi.ac.uk/terms/chembl#>

SELECT DISTINCT ?up ?compound ?taxon ?pmid
WHERE {
  ?doc cco:hasAssay ?assay .
  ?assay cco:hasTarget ?target .
  ?assay cco:hasActivity ?activity .
  ?target cco:hasTargetComponent ?component .
  ?target cco:taxonomy ?taxon .
  ?component cco:targetCmptXref ?up .
  ?doc bibo:pmid ?pmid .
  ?doc cco:hasMolecule ?molecule .
  ?molecule cco:moleculeXref ?compound
  FILTER(STRSTARTS(STR(?compound), "http://pubchem.ncbi.nlm.nih.gov/compound/"))
  FILTER(STRSTARTS(STR(?up), "http://purl.uniprot.org/"))
  FILTER(STRSTARTS(STR(?taxon), "http://identifiers.org/taxonomy"))
} LIMIT 100
  • run sparql-support
  • wwPDB RDF に対して、UniProt URI - Ligand - 生物種 - 文献 を取得
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX PDBo: <https://rdf.wwpdb.org/schema/pdbx-v50.owl#>
PREFIX dcterms: <http://purl.org/dc/terms/>

SELECT DISTINCT ?up ?compound ?taxon ?pubmed
FROM <http://rdf.integbio.jp/dataset/pdbj>
WHERE {
  ?pdb a PDBo:datablock .
  ?pdb dcterms:identifier ?pdb_id .
  ?pdb PDBo:has_entityCategory ?entity_category .
  ?entity_category PDBo:has_entity ?entity .
  ?entity PDBo:referenced_by_struct_ref ?struct_ref .
  ?struct_ref PDBo:link_to_uniprot ?up .
  ?entity PDBo:referenced_by_entity_src_gen ?entity_src_gen .
  ?entity_src_gen PDBo:entity_src_gen.pdbx_gene_src_ncbi_taxonomy_id ?ncbi_taxon .
  ?entity_src_gen rdfs:seeAlso ?taxon .
  FILTER(REGEX(?taxon, STR(?ncbi_taxon)))
  ?entity_nonpoly PDBo:of_datablock ?pdb .
  ?entity_nonpoly PDBo:pdbx_entity_nonpoly.comp_id ?comp_id .
  BIND(CONCAT("https://rdf.wwpdb.org/pdb/", ?pdb_id) AS ?comp_prefix)
  BIND(CONCAT(?comp_prefix, "/chem_comp/") AS ?comp_prefix_2)
  BIND(CONCAT(?comp_prefix_2, ?comp_id) AS ?compound)
  ?pdb PDBo:has_citationCategory ?citation_category .
  ?citation_category PDBo:has_citation ?citation .
  ?citation dcterms:references ?pubmed .
} LIMIT 100
  • run sparql-support

タンパク・遺伝子相互作用

  • REACTOME RDF に対して、BiochemicalReaction・遺伝子・タンパク(遺伝子に作用するもの)を取得
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX biopax3: <http://www.biopax.org/release/biopax-level3.owl#>

SELECT DISTINCT ?reaction ?ensembl ?uniprot
FROM <http://rdf.ebi.ac.uk/dataset/reactome>
WHERE
{
  ?reaction a biopax3:BiochemicalReaction .
  ?reaction biopax3:left ?gene .
  ?reaction biopax3:right ?protein .
  ?gene a biopax3:Dna .
  ?gene biopax3:entityReference  ?ensembl .
  ?protein a biopax3:Protein .
  ?protein biopax3:entityReference ?uniprot 
}
  • run sparql-support

Ortholog Cluster

オーソログDB (KEGG OC) のクラスタサイズの分布

### endpoint http://keggoc-rdf.dbcls.jp/proxy/sparql
BASE <http://rdf.genome.jp/keggoc/2017-10-10/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX orth: <http://purl.org/net/orth#>
PREFIX void: <http://rdfs.org/ns/void#>

SELECT ?size (COUNT (?size) AS ?num)
WHERE {
  {
    SELECT ?oc (COUNT (?genes) AS ?size)
    WHERE {
      ?oc void:inDataset/rdfs:label "Cellular_organisms" ;
          orth:hasHomologous+ ?genes .
      ?genes a orth:Gene .
    }
  }
}
ORDER BY DESC (?num)
  • run sparql-support

種間共通クラスタ(KEGG OC)の数(ベン図)

### endpoint http://keggoc-rdf.dbcls.jp/proxy/sparql
BASE <http://rdf.genome.jp/keggoc/2017-10-10/>
PREFIX orth: <http://purl.org/net/orth#>
PREFIX tax: <http://identifiers.org/taxonomy/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX void: <http://rdfs.org/ns/void#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?orgs (COUNT (?orgs) AS ?c) ?name
WHERE {
  {
    SELECT ?oc (GROUP_CONCAT(REPLACE(STR(?tax), tax:, "") ;  separator=' ') AS ?orgs) (SAMPLE(?org) AS ?name)
    WHERE {
      {
        SELECT DISTINCT ?oc ?tax ?org
        WHERE {
          VALUES ?tax { tax:9606 tax:9598 tax:10090 tax:10116 }
          ?oc orth:hasHomologous+/obo:RO_0002162 ?tax ;
              void:inDataset/rdfs:label "Cellular_organisms";
              a orth:OrthologsCluster .
          ?tax ^rdfs:seeAlso/skos:altLabel ?org .
        } ORDER BY ?tax
      }
    }
  }
}
  • run sparql-support
個人用ツール