valueflows

valueflows docs
git clone https://s.sonu.ch/~srfsh/valueflows.git
Log | Files | Refs | README

convert.js (1901B)


      1 const meow = require('meow')
      2 const ParserN3 = require('@rdfjs/parser-n3')
      3 const SerializerJsonld = require('@rdfjs/serializer-jsonld')
      4 const SerializerNtriples = require('@rdfjs/serializer-ntriples')
      5 const Readable = require('stream').Readable
      6 const fs = require('fs')
      7 const RdfStore = require('quadstore').RdfStore
      8 const memdown = require('memdown')
      9 const finished = require('stream').finished
     10 const promisify = require('util').promisify
     11 const done = promisify(finished)
     12 
     13 const cli = meow('', {
     14   flags: {
     15     source: {
     16       type: 'string'
     17     },
     18     outDir: {
     19       type: 'string'
     20     }
     21   }
     22 })
     23 
     24 const vfTurtle = fs.readFileSync(cli.flags.source, 'utf8')
     25 const store = new RdfStore(memdown())
     26 
     27 const parserN3 = new ParserN3()
     28 const inputTurtle = new Readable({
     29   read: () => {
     30     inputTurtle.push(vfTurtle)
     31     inputTurtle.push(null)
     32   }
     33 })
     34 const outputTurtle = parserN3.import(inputTurtle)
     35 
     36 const serializerJsonld = new SerializerJsonld()
     37 const serializerNtriples = new SerializerNtriples()
     38 
     39 ;(async () => {
     40   await done(store.import(outputTurtle))
     41   console.log('vocab imported to store')
     42 
     43   // write Turtle
     44   fs.writeFileSync(cli.flags.outDir + '/vf.ttl', vfTurtle)
     45 
     46   // write Trig
     47   fs.writeFileSync(cli.flags.outDir + '/vf.trig', vfTurtle)
     48 
     49   // write JSON-LD
     50   let vf = store.match(null, null, null, null)
     51   const outputJsonld = serializerJsonld.import(vf)
     52   let vfJsonld
     53   await done(outputJsonld.on('data', jsonld => vfJsonld = jsonld))
     54   fs.writeFileSync(cli.flags.outDir + '/vf.jsonld', JSON.stringify(vfJsonld))
     55 
     56   // write N-Triples
     57   vf = store.match(null, null, null, null)
     58   const outputNtriples = serializerNtriples.import(vf)
     59   let vfNtriples = ''
     60   await done(outputNtriples.on('data', ntriples => vfNtriples += ntriples.toString()))
     61   fs.writeFileSync(cli.flags.outDir + '/vf.nt', vfNtriples)
     62 
     63   // write N-Quads
     64   fs.writeFileSync(cli.flags.outDir + '/vf.nq', vfNtriples)
     65 })()