spoke-genelab

SPOKE GeneLab

The spoke-genelab KG complements the spokeokn (SPOKE Open Knowledge Network) KG and is designed to integrate omics data from NASA’s Open Science Data Repository (OSDR/GeneLab), which hosts results from spaceflight experiments.

552.0M triples
10 classes
59 properties
50.4M subjects

The spoke-genelab KG complements the spoke-okn (SPOKE Open Knowledge Network) KG and is designed to integrate omics data from NASA’s Open Science Data Repository (OSDR/GeneLab), which hosts results from spaceflight experiments.

The current release includes transcriptional profiling (RNA-Seq, DNA microarray) and epigenomic profiling (DNA methylation) data from model organisms flown in space or maintained as ground controls. Differential expression and methylation signatures are pre-computed to facilitate comparisons between spaceflight and control conditions. Genes from model organisms are systematically mapped to their human orthologs, which allows integration with SPOKE’s rich network of human biology, including pathways, phenotypes, and therapeutic targets. Cell and tissue types are mapped to the Cell (CL) and Uber Anatomy Ontology (UBERON) ontology, respectively.

Within NASA study OSD-48 (Rodent Research 1), find mouse genes (and their human orthologs) that show BOTH a transcriptomic and an epigenomic response to spaceflight: down-regulated in expression (log2 fold change < −1 and FDR-adjusted p-value < 0.05) AND linked to a differentially methylated genomic region (methylation q-value < 0.05). Draw the two signals from two distinct assays, one differential-expression assay and one differential-methylation assay, that each compare the Space Flight condition against the Ground Control condition. Enforce experimental-condition consistency on the other (non-spaceflight) factors, not just on spaceflight status and biological material: within each assay, the two compared groups must have identical non-spaceflight experimental factors, so the groups differ only in spaceflight status and across the two assays, the differential-expression assay and the differential-methylation assay must use the same biological material and the same non-spaceflight factor value as each other. Return each human gene's IRI and symbol, the mouse gene symbol, the expression log2 fold change, the expression FDR-adjusted p-value, the methylation difference (percent), and the methylation q-value (and the shared condition factor), ordered by ascending log2 fold change, then ascending expression adjusted p-value, then human gene symbol, then human gene IRI, then mouse gene symbol, then methylation q-value, then ascending methylation difference, then methylation region IRI. [hard]
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX biolink: <https://w3id.org/biolink/vocab/>
PREFIX schema: <https://purl.org/okn/frink/kg/spoke-genelab/schema/>

SELECT ?human_gene_iri ?human_symbol ?mouse_symbol ?log2fc ?expr_adj_p_value
       ?methylation_diff ?meth_q_value ?meth_region_iri ?condition_factor
WHERE {
  GRAPH <https://purl.org/okn/frink/kg/spoke-genelab> {

    # --- Resolve study OSD-48 (Rodent Research 1) by its identifiers, not a hardcoded IRI ---
    ?study a biolink:Study ;
           rdfs:label "OSD-48" ;
           schema:project_title "Rodent Research 1" .
    ?study schema:PERFORMED_SpAS ?exprAssay , ?methAssay .

    # --- Differential EXPRESSION assay: Space Flight vs Ground Control ---
    ?exprAssay schema:measurement "transcription profiling" ;
               schema:factor_space_1 "Space Flight" ;
               schema:factor_space_2 "Ground Control" ;
               schema:material_1 ?material ;
               schema:material_2 ?material ;
               schema:factors_1 ?ecf1 ;
               schema:factors_2 ?ecf2 .
    # within-assay: the non-spaceflight factor is identical in both compared groups
    FILTER(?ecf1 NOT IN ("Space Flight","Ground Control","Basal Control","Vivarium Control"))
    FILTER(?ecf2 NOT IN ("Space Flight","Ground Control","Basal Control","Vivarium Control"))
    FILTER(?ecf1 = ?ecf2)
    BIND(?ecf1 AS ?condition_factor)

    ?exprStmt rdf:subject ?exprAssay ;
              rdf:predicate schema:MEASURED_DIFFERENTIAL_EXPRESSION_ASmMG ;
              rdf:object ?mouseGene ;
              schema:log2fc ?log2fc ;
              schema:adj_p_value ?expr_adj_p_value .
    FILTER(?log2fc < -1.0)
    FILTER(?expr_adj_p_value < 0.05)

    # --- Differential METHYLATION assay: same material AND same condition factor ---
    ?methAssay schema:measurement "DNA methylation profiling" ;
               schema:factor_space_1 "Space Flight" ;
               schema:factor_space_2 "Ground Control" ;
               schema:material_1 ?material ;
               schema:material_2 ?material ;
               schema:factors_1 ?mcf1 ;
               schema:factors_2 ?mcf2 .
    # within-assay consistency
    FILTER(?mcf1 NOT IN ("Space Flight","Ground Control","Basal Control","Vivarium Control"))
    FILTER(?mcf2 NOT IN ("Space Flight","Ground Control","Basal Control","Vivarium Control"))
    FILTER(?mcf1 = ?mcf2)
    # across-assay: expression and methylation share the SAME non-spaceflight condition factor
    FILTER(?mcf1 = ?condition_factor)

    ?methStmt rdf:subject ?methAssay ;
              rdf:predicate schema:MEASURED_DIFFERENTIAL_METHYLATION_ASmMR ;
              rdf:object ?methRegion ;
              schema:methylation_diff ?methylation_diff ;
              schema:q_value ?meth_q_value .
    FILTER(?meth_q_value < 0.05)

    # --- Same mouse gene methylated in that differentially-methylated region ---
    ?mouseGene schema:METHYLATED_IN_MGmMR ?methRegion ;
               schema:symbol ?mouse_symbol .

    # --- Human ortholog ---
    ?mouseGene schema:IS_ORTHOLOG_MGiG ?humanGene .
    ?humanGene schema:symbol ?human_symbol .

    BIND(?humanGene AS ?human_gene_iri)
    BIND(?methRegion AS ?meth_region_iri)
  }
}
ORDER BY ASC(?log2fc) ASC(?expr_adj_p_value) ?human_symbol ?human_gene_iri ?mouse_symbol ?meth_q_value ?methylation_diff ?meth_region_iri
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
  v18("?condition_factor"):::projected 
  v12("?ecf1")
  v13("?ecf2")
  v15("?exprAssay")
  v18("?exprStmt")
  v2("?expr_adj_p_value"):::projected 
  v22("?humanGene")
  v23("?human_gene_iri"):::projected 
  v3("?human_symbol"):::projected 
  v1("?log2fc"):::projected 
  v17("?material")
  v9("?mcf1")
  v11("?mcf2")
  v16("?methAssay")
  v21("?methRegion")
  v20("?methStmt")
  v6("?meth_q_value"):::projected 
  v23("?meth_region_iri"):::projected 
  v7("?methylation_diff"):::projected 
  v19("?mouseGene")
  v5("?mouse_symbol"):::projected 
  v14("?study")
  c3(["Ground Control"]):::literal 
  c8([biolink:Study]):::iri 
  c11(["OSD-48"]):::literal 
  c29(["DNA methylation profiling"]):::literal 
  c30([spoke-genelab:MEASURED_DIFFERENTIAL_METHYLATION_ASmMR]):::iri 
  c16(["transcription profiling"]):::literal 
  c2(["Space Flight"]):::literal 
  c25([spoke-genelab:MEASURED_DIFFERENTIAL_EXPRESSION_ASmMG]):::iri 
  c13(["Rodent Research 1"]):::literal 
  f0[["?meth_q_value < '0.05^^xsd:decimal'"]]
  f0 --> v6
  f1[["?mcf1 = ?condition_factor"]]
  f1 --> v9
  f1 --> v18
  f2[["?mcf1 = ?mcf2"]]
  f2 --> v9
  f2 --> v11
  f3[["?mcf2 != 'Space Flight'?mcf2 != 'Ground Control'?mcf2 != 'Basal Control'?mcf2 != 'Vivarium Control'"]]
  f3 --> v11
  f4[["?mcf1 != 'Space Flight'?mcf1 != 'Ground Control'?mcf1 != 'Basal Control'?mcf1 != 'Vivarium Control'"]]
  f4 --> v9
  f5[["?expr_adj_p_value < '0.05^^xsd:decimal'"]]
  f5 --> v2
  f6[["?log2fc < '-1.0^^xsd:decimal'"]]
  f6 --> v1
  f7[["?ecf1 = ?ecf2"]]
  f7 --> v12
  f7 --> v13
  f8[["?ecf2 != 'Space Flight'?ecf2 != 'Ground Control'?ecf2 != 'Basal Control'?ecf2 != 'Vivarium Control'"]]
  f8 --> v13
  f9[["?ecf1 != 'Space Flight'?ecf1 != 'Ground Control'?ecf1 != 'Basal Control'?ecf1 != 'Vivarium Control'"]]
  f9 --> v12
  v14 --"a"-->  c8
  v14 --"rdfs:label"-->  c11
  v14 --"spoke-genelab:project_title"-->  c13
  v14 --"spoke-genelab:PERFORMED_SpAS"-->  v15
  v14 --"spoke-genelab:PERFORMED_SpAS"-->  v16
  v15 --"spoke-genelab:measurement"-->  c16
  v15 --"spoke-genelab:factor_space_1"-->  c2
  v15 --"spoke-genelab:factor_space_2"-->  c3
  v15 --"spoke-genelab:material_1"-->  v17
  v15 --"spoke-genelab:material_2"-->  v17
  v15 --"spoke-genelab:factors_1"-->  v12
  v15 --"spoke-genelab:factors_2"-->  v13
  bind10[/"?ecf1"/]
  v12 --o bind10
  bind10 --as--o v18
  v18 --"rdf:subject"-->  v15
  v18 --"rdf:predicate"-->  c25
  v18 --"rdf:object"-->  v19
  v18 --"spoke-genelab:log2fc"-->  v1
  v18 --"spoke-genelab:adj_p_value"-->  v2
  v16 --"spoke-genelab:measurement"-->  c29
  v16 --"spoke-genelab:factor_space_1"-->  c2
  v16 --"spoke-genelab:factor_space_2"-->  c3
  v16 --"spoke-genelab:material_1"-->  v17
  v16 --"spoke-genelab:material_2"-->  v17
  v16 --"spoke-genelab:factors_1"-->  v9
  v16 --"spoke-genelab:factors_2"-->  v11
  v20 --"rdf:subject"-->  v16
  v20 --"rdf:predicate"-->  c30
  v20 --"rdf:object"-->  v21
  v20 --"spoke-genelab:methylation_diff"-->  v7
  v20 --"spoke-genelab:q_value"-->  v6
  v19 --"spoke-genelab:METHYLATED_IN_MGmMR"-->  v21
  v19 --"spoke-genelab:symbol"-->  v5
  v19 --"spoke-genelab:IS_ORTHOLOG_MGiG"-->  v22
  v22 --"spoke-genelab:symbol"-->  v3
  bind11[/"?humanGene"/]
  v22 --o bind11
  bind11 --as--o v23
  bind12[/"?methRegion"/]
  v21 --o bind12
  bind12 --as--o v23
Find the human ortholog gene(s) of the model-organism gene with symbol "Adh1". Return each human gene's IRI and symbol, ordered alphabetically by symbol. [easy]
PREFIX schema: <https://purl.org/okn/frink/kg/spoke-genelab/schema/>
SELECT DISTINCT ?human ?humanSymbol {
    ?modelGene schema:symbol ?modelSymbol ;
               schema:IS_ORTHOLOG_MGiG ?human .
    FILTER(LCASE(STR(?modelSymbol)) = "adh1")
    ?human schema:symbol ?humanSymbol ;
           schema:organism "Homo sapiens" .
}
ORDER BY ?humanSymbol
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
  v4("?human"):::projected 
  v1("?humanSymbol"):::projected 
  v3("?modelGene")
  v2("?modelSymbol")
  c5(["Homo sapiens"]):::literal 
  f0[["lower-case(str(?modelSymbol)) = 'adh1'"]]
  f0 --> v2
  v3 --"spoke-genelab:symbol"-->  v2
  v3 --"spoke-genelab:IS_ORTHOLOG_MGiG"-->  v4
  v4 --"spoke-genelab:symbol"-->  v1
  v4 --"spoke-genelab:organism"-->  c5
In study OSD-244, find model-organism genes that are significantly differentially expressed (FDR-adjusted p-value < 0.05) between spaceflight and matched ground control for the 60-day cohort. Consider only assays that directly contrast a Space Flight test group against a Ground Control reference group, oriented so the log2 fold change reflects spaceflight relative to ground control, and exclude reverse-direction duplicates. The two compared groups must be matched on biological material and on every experimental factor except the one distinguishing spaceflight from ground control: each non-spaceflight factor present on one side must also be present on the other, in both directions, so any assay whose groups differ on an additional covariate is rejected. Return each gene's IRI and symbol with the log2 fold change and adjusted p-value, ordered by ascending adjusted p-value and then by gene IRI to break ties, limited to the first 10 results. [medium]
PREFIX rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs:    <http://www.w3.org/2000/01/rdf-schema#>
PREFIX biolink: <https://w3id.org/biolink/vocab/>
PREFIX sch:     <https://purl.org/okn/frink/kg/spoke-genelab/schema/>
SELECT ?gene ?symbol ?log2fc ?adj_p_value WHERE {
  GRAPH <https://purl.org/okn/frink/kg/spoke-genelab> {
    ?study a biolink:Study ; rdfs:label "OSD-244" ; sch:PERFORMED_SpAS ?assay .
    # Space Flight (group 1 = numerator) vs Ground Control (group 2); fixes the log2fc
    # orientation and drops reverse-direction duplicates.
    ?assay sch:factor_space_1 "Space Flight" ;
           sch:factor_space_2 "Ground Control" ;
           sch:material_1 ?mat1 ; sch:material_2 ?mat2 ;
           sch:factors_1 "~60 day" .                 # 60-day cohort
    FILTER(?mat1 = ?mat2)                            # matched biological material
    # Both arms carry the same number of experimental factors (neither side adds a covariate).
    { SELECT ?assay (COUNT(DISTINCT ?a) AS ?n1) WHERE { ?assay sch:factors_1 ?a } GROUP BY ?assay }
    { SELECT ?assay (COUNT(DISTINCT ?b) AS ?n2) WHERE { ?assay sch:factors_2 ?b } GROUP BY ?assay }
    FILTER(?n1 = ?n2)
    # Factor-consistency: reject the assay if any factor on the Space-Flight arm that is
    # absent from its own Ground-Control arm nonetheless appears on some other Ground-Control
    # arm in the study -- i.e. it is a shared covariate the two arms disagree on, not a
    # spaceflight-specific factor. (Flight-specific tokens never occur on any ground arm.)
    MINUS {
      ?study sch:PERFORMED_SpAS ?assay .
      ?assay sch:factors_1 ?f1 .
      ?study sch:PERFORMED_SpAS ?gx .
      ?gx sch:factor_space_2 "Ground Control" ; sch:factors_2 ?f1 .
      FILTER NOT EXISTS { ?assay sch:factors_2 ?f1 }
    }
    # Differential-expression edge for a model-organism gene
    ?stmt rdf:type rdf:Statement ;
          rdf:subject ?assay ;
          rdf:predicate sch:MEASURED_DIFFERENTIAL_EXPRESSION_ASmMG ;
          rdf:object ?gene ;
          sch:log2fc ?log2fc ; sch:adj_p_value ?adj_p_value .
    FILTER(?adj_p_value < 0.05)
    ?gene a biolink:Gene ; sch:symbol ?symbol .
  }
}
ORDER BY ASC(?adj_p_value) ASC(?gene)
LIMIT 10
graph TD
classDef projected fill:lightgreen;
classDef literal fill:orange;
classDef iri fill:yellow;
  v9("?a")
  v1("?adj_p_value"):::projected 
  v8("?assay")
  v10("?b")
  v11("?f1")
  v2("?gene"):::projected 
  v12("?gx")
  v14("?log2fc"):::projected 
  v5("?mat1")
  v6("?mat2")
  v10("?n1")
  v11("?n2")
  v13("?stmt")
  v7("?study")
  v15("?symbol"):::projected 
  c24([biolink:Gene]):::iri 
  c11(["Ground Control"]):::literal 
  c6(["OSD-244"]):::literal 
  c17([rdf:Statement]):::iri 
  c3([biolink:Study]):::iri 
  c15(["~60 day"]):::literal 
  c9(["Space Flight"]):::literal 
  c20([spoke-genelab:MEASURED_DIFFERENTIAL_EXPRESSION_ASmMG]):::iri 
  f0[["?adj_p_value < '0.05^^xsd:decimal'"]]
  f0 --> v1
  f1[["?n1 = ?n2"]]
  f1 --> v10
  f1 --> v11
  f2[["?mat1 = ?mat2"]]
  f2 --> v5
  f2 --> v6
  v7 --"a"-->  c3
  v7 --"rdfs:label"-->  c6
  v7 --"spoke-genelab:PERFORMED_SpAS"-->  v8
  v8 --"spoke-genelab:factor_space_1"-->  c9
  v8 --"spoke-genelab:factor_space_2"-->  c11
  v8 --"spoke-genelab:material_1"-->  v5
  v8 --"spoke-genelab:material_2"-->  v6
  v8 --"spoke-genelab:factors_1"-->  c15
  v8 --"spoke-genelab:factors_1"-->  v9
  bind4[/"count(?a)"/]
  v9 --o bind4
  bind4 --as--o v10
  v8 --"spoke-genelab:factors_2"-->  v10
  bind6[/"count(?b)"/]
  v10 --o bind6
  bind6 --as--o v11
  subgraph minus7["MINUS"]
    style minus7 stroke-width:6px,fill:pink,stroke:red;
    f8[["not  "]]
    subgraph f8e0["Exists Clause"]
      e0v1 --"spoke-genelab:factors_2"-->  e0v2
      e0v1("?assay"):::projected 
      e0v2("?f1"):::projected 
    end
    f8--"EXISTS"--> f8e0
    f8 --> v8
    f8 --> c16
    f8 --> v11
    f8 --> c4
    v8 --"spoke-genelab:factors_2"-->  v11
    v7 --"spoke-genelab:PERFORMED_SpAS"-->  v8
    v8 --"spoke-genelab:factors_1"-->  v11
    v7 --"spoke-genelab:PERFORMED_SpAS"-->  v12
    v12 --"spoke-genelab:factor_space_2"-->  c11
    v12 --"spoke-genelab:factors_2"-->  v11
  end
  v13 --"a"-->  c17
  v13 --"rdf:subject"-->  v8
  v13 --"rdf:predicate"-->  c20
  v13 --"rdf:object"-->  v2
  v13 --"spoke-genelab:log2fc"-->  v14
  v13 --"spoke-genelab:adj_p_value"-->  v1
  v2 --"a"-->  c24
  v2 --"spoke-genelab:symbol"-->  v15
SPARQL Endpoint https://apps.okn.us/spoke-genelab/sparql
Triple Pattern Fragments https://apps.okn.us/ldf/spoke-genelab
ClassEntities
PropertyTriples