From 02c0b2604b3161db5152faafe5bb140fbd61de2d Mon Sep 17 00:00:00 2001 From: Munyoki Kilyungi Date: Fri, 30 Jan 2026 00:54:27 +0300 Subject: Add phenotype dataset metadata. Signed-off-by: Munyoki Kilyungi --- examples/phenotype-datasets.scm | 74 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 examples/phenotype-datasets.scm diff --git a/examples/phenotype-datasets.scm b/examples/phenotype-datasets.scm new file mode 100755 index 0000000..9354926 --- /dev/null +++ b/examples/phenotype-datasets.scm @@ -0,0 +1,74 @@ +#! /usr/bin/env guile +!# + +(use-modules (rnrs programs) + (rnrs io ports) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 getopt-long) + (ice-9 match) + (ice-9 regex) + (transform strings) + (transform sql) + (transform triples) + (transform special-forms)) + + +(define-transformer gn:set->gn:dataset + (tables (Datasets + (inner-join InfoFiles "ON InfoFiles.DatasetId = Datasets.DatasetId") + (inner-join InbredSet "ON InbredSet.Id = InfoFiles.InbredSetId") + (inner-join PublishFreeze "ON PublishFreeze.InbredSetId = InbredSet.Id")) + "WHERE PublishFreeze.public > 0 GROUP BY Datasets.DatasetId") + (schema-triples + (gnt:has_phenotype_data rdf:type owl:ObjectProperty) + (gnt:has_phenotype_data rdfs:label "this resources has this phenotype data.") + (gnt:has_phenotype_data rdfs:comment "Associates a resource with its phenotype data.") + (gnt:has_phenotype_data rdfs:domain gnc:set) + (gnt:has_phenotype_data rdfs:range dcat:Dataset) + (gnt:has_phenotype_data rdfs:subPropertyOf dct:relation)) + (triples (string->identifier "set" (field InbredSet Name InbredSetName) #:separator "_") + (set gnt:has_phenotype_data (string->identifier "dataset" (field PublishFreeze Name) #:separator "_")))) + +(define-transformer gn:dataset->gn:set + (tables (Datasets + (inner-join InfoFiles "ON InfoFiles.DatasetId = Datasets.DatasetId") + (inner-join InbredSet "ON InbredSet.Id = InfoFiles.InbredSetId") + (inner-join PublishFreeze "ON PublishFreeze.InbredSetId = InbredSet.Id")) + "WHERE PublishFreeze.public > 0 GROUP BY Datasets.DatasetId") + (triples (string->identifier "dataset" (field PublishFreeze Name) #:separator "_") + (set gnt:has_strain (string->identifier "set" (field InbredSet Name InbredSetName) #:separator "_")))) + + +(let* ((option-spec + '((settings (single-char #\s) (value #t)) + (output (single-char #\o) (value #t)) + (documentation (single-char #\d) (value #t)))) + (options (getopt-long (command-line) option-spec)) + (settings (option-ref options 'settings #f)) + (output (option-ref options 'output #f)) + (documentation (option-ref options 'documentation #f)) + (%connection-settings + (call-with-input-file settings + read))) + (with-documentation + (name "Genotype Datasets") + (connection %connection-settings) + (table-metadata? #f) + (prefixes + '(("dcat:" "") + ("dct:" "") + ("gn:" "") + ("gnc:" "") + ("gnt:" "") + ("rdf:" "") + ("rdfs:" "") + ("owl:" "") + ("skos:" "") + ("xkos:" "") + ("xsd:" ""))) + (inputs + (list gn:set->gn:dataset gn:dataset->gn:set)) + (outputs + `(#:documentation ,documentation + #:rdf ,output)))) -- cgit 1.4.1