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 })()