aboutsummaryrefslogtreecommitdiff
path: root/dump.scm
diff options
context:
space:
mode:
authorArun Isaac2021-12-23 17:57:42 +0530
committerArun Isaac2021-12-23 17:57:42 +0530
commit4cab24d18cbf218ba1c59223425a3e41ab4fad54 (patch)
treec97f2c78687ba0a47c5d46bcf396ae93a0ff6787 /dump.scm
parent1deb7d533866f7b67e9df112e5ad89dd42ee70cd (diff)
downloadgn-transform-databases-4cab24d18cbf218ba1c59223425a3e41ab4fad54.tar.gz
Automatically create domain triples for predicates.
* dump.scm (define-dump): Automatically create domain triples for predicates.
Diffstat (limited to 'dump.scm')
-rwxr-xr-xdump.scm33
1 files changed, 19 insertions, 14 deletions
diff --git a/dump.scm b/dump.scm
index c92a0cd..a2379f2 100755
--- a/dump.scm
+++ b/dump.scm
@@ -249,20 +249,25 @@ ALIST field-name) forms."
(syntax-case predicate-clause ()
((_ predicate _)
;; Dump metadata about the dump itself.
- #`(scm->triples
- (map-alist '()
- (set rdf:type 'gn:dump)
- (set gn:createsPredicate 'predicate)
- (filter-set gn:forSubjectType #,subject-type)
- (multiset gn:dependsOn
- '#,(map (lambda (field)
- (match (syntax->datum field)
- ((table-name column-name _ ...)
- (datum->syntax
- x (column-id (symbol->string table-name)
- (symbol->string column-name))))))
- (collect-fields predicate-clause))))
- #,(dump-id dump-table (syntax->datum #'predicate))))
+ #`(begin
+ (scm->triples
+ (map-alist '()
+ (set rdf:type 'gn:dump)
+ (set gn:createsPredicate 'predicate)
+ (filter-set gn:forSubjectType #,subject-type)
+ (multiset gn:dependsOn
+ '#,(map (lambda (field)
+ (match (syntax->datum field)
+ ((table-name column-name _ ...)
+ (datum->syntax
+ x (column-id (symbol->string table-name)
+ (symbol->string column-name))))))
+ (collect-fields predicate-clause))))
+ #,(dump-id dump-table (syntax->datum #'predicate)))
+ ;; Automatically create domain
+ ;; triples for predicates.
+ (when #,subject-type
+ (triple 'predicate 'rdfs:domain #,subject-type))))
(_ (error "Invalid predicate clause:" predicate-clause))))
#'(predicate-clauses ...)))
(sql-for-each (lambda (row)