11import path from "path"
22import { fileURLToPath } from "url"
3- import { promises as fsPromise , writeFileSync } from "fs"
3+ import { promises , writeFileSync } from "fs"
44import { newStore , addTurtleToStore , storeToTurtle , sparqlInsertDelete } from "@foerderfunke/sem-ops-utils"
55
6+ const ROOT = path . join ( path . dirname ( fileURLToPath ( import . meta. url ) ) )
7+ await promises . mkdir ( `${ ROOT } /build` , { recursive : true } )
8+
9+ // ----------- def.built.ttl -----------
10+
611let header = [ "# This file is a generated enriched merge of the following source files:" ]
7- const dir = path . join ( path . dirname ( fileURLToPath ( import . meta. url ) ) )
8- const dfDir = path . join ( dir , "datafields" )
12+ const dfDir = path . join ( ROOT , "datafields" )
913
10- const turtleFiles = [
11- `${ dir } /definitions.ttl` ,
12- `${ dir } /materialization.ttl` ,
13- ...( await fsPromise . readdir ( dfDir ) ) . filter ( f => f . endsWith ( ".ttl" ) ) . map ( f => path . join ( dfDir , f ) )
14+ const defTurtleFiles = [
15+ `${ ROOT } /definitions.ttl` ,
16+ `${ ROOT } /materialization.ttl` ,
17+ ...( await promises . readdir ( dfDir ) ) . filter ( f => f . endsWith ( ".ttl" ) ) . map ( f => path . join ( dfDir , f ) )
1418]
1519
1620let defStore = newStore ( )
17- for ( let file of turtleFiles ) {
18- header . push ( "# - " + file . substring ( dir . length + 1 ) )
19- addTurtleToStore ( defStore , await fsPromise . readFile ( file , "utf8" ) )
21+ for ( let file of defTurtleFiles ) {
22+ header . push ( "# - " + file . substring ( ROOT . length + 1 ) )
23+ addTurtleToStore ( defStore , await promises . readFile ( file , "utf8" ) )
2024}
2125
2226// ensure language tag @de -x-es: if not present, copy from @de
@@ -39,7 +43,30 @@ const query = `
3943await sparqlInsertDelete ( query , defStore )
4044
4145let turtle = header . join ( "\n" ) + "\n\n" + await storeToTurtle ( defStore )
42- await fsPromise . mkdir ( `${ dir } /build` , { recursive : true } )
43- let target = `${ dir } /build/def.built.ttl`
46+ let target = `${ ROOT } /build/def.built.ttl`
47+ writeFileSync ( target , turtle , "utf8" )
48+ console . log ( `Wrote to ${ target } ` )
49+
50+ // ----------- rps.built.ttl -----------
51+
52+ header = [ "# This file is a generated merge of the following source files:" ]
53+ const shaclDirs = [
54+ `${ ROOT } /shacl` ,
55+ `${ ROOT } /shacl/beta` ,
56+ `${ ROOT } /shacl/bielefeld`
57+ ]
58+ let shaclFiles = [ ]
59+ for ( let shaclDir of shaclDirs ) {
60+ shaclFiles = shaclFiles . concat ( ( await promises . readdir ( shaclDir ) ) . map ( file => `${ shaclDir } /${ file } ` ) . filter ( file => file . endsWith ( ".ttl" ) ) )
61+ }
62+
63+ let rpsStore = newStore ( )
64+ for ( let file of shaclFiles ) {
65+ header . push ( "# - " + file . substring ( ROOT . length + 1 ) )
66+ addTurtleToStore ( rpsStore , await promises . readFile ( file , "utf8" ) )
67+ }
68+
69+ turtle = header . join ( "\n" ) + "\n\n" + await storeToTurtle ( rpsStore )
70+ target = `${ ROOT } /build/rps.built.ttl`
4471writeFileSync ( target , turtle , "utf8" )
4572console . log ( `Wrote to ${ target } ` )
0 commit comments