diff options
author | Arun Isaac | 2022-10-30 20:47:37 +0530 |
---|---|---|
committer | Arun Isaac | 2022-10-30 23:58:36 +0530 |
commit | 25f9279b0078ef0cc93507776c9c8413a0a73a00 (patch) | |
tree | 17db69ff002a6f28debd998d281665d4756bd962 /dump | |
parent | a1f21d10c1b21ce054b5750e6d0748ae9ad7557f (diff) | |
download | gn-transform-databases-25f9279b0078ef0cc93507776c9c8413a0a73a00.tar.gz |
Move triple utilities to new module.
* dump.scm (string->identifier, string-blank?, triple, prefix): Move
to ...
* dump/triples.scm: ... new file.
* dump.scm: Import (dump triples).
Diffstat (limited to 'dump')
-rw-r--r-- | dump/triples.scm | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/dump/triples.scm b/dump/triples.scm new file mode 100644 index 0000000..bb2acdc --- /dev/null +++ b/dump/triples.scm @@ -0,0 +1,48 @@ +(define-module (dump triples) + #:use-module (ice-9 match) + #:use-module (dump utils) + #:export (string->identifier + prefix + triple + scm->triples)) + +(define (string->identifier prefix str) + "Convert STR to a turtle identifier after replacing illegal +characters with an underscore and prefixing with gn:PREFIX." + (string->symbol + (string-append "gn:" prefix "_" + (string-map (lambda (c) + (case c + ((#\/ #\< #\> #\+ #\( #\) #\space #\@) #\_) + (else c))) + (string-downcase + (string-trim-right str #\.)))))) + +(define (prefix prefix iri) + (format #t "@prefix ~a ~a .~%" prefix iri)) + +(define (triple subject predicate object) + (unless (or (string? subject) + (symbol? subject)) + (error "Triple subject not a string or symbol:" + (list subject predicate object))) + (unless (or (string? predicate) + (symbol? predicate)) + (error "Triple predicate not a string or symbol:" + (list subject predicate object))) + (unless (or (string? object) + (symbol? object) + (number? object)) + (error "Triple object not a string, symbol or number:" + (list subject predicate object))) + (format #t "~a ~a ~s .~%" subject predicate object)) + +(define (scm->triples alist id) + (for-each (match-lambda + ((predicate . object) + (when (cond + ((string? object) + (not (string-blank? object))) + (else object)) + (triple id predicate object)))) + alist)) |