Revision def723889bb8eae5d7bde6a3119994b362181b35 authored by Pasquale Lisena on 10 March 2021, 13:57:43 UTC, committed by Pasquale Lisena on 10 March 2021, 13:57:43 UTC
1 parent 707d636
Raw File
rameau-genres-script.js
const fs = require('fs'),
  csv = require('csv-parser'),
  request = require('request'),
  async = require('async'),
  rdfTranslator = require('rdf-translator'),
  $rdf = require('rdflib');

const RDF = $rdf.Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
const SKOS = $rdf.Namespace("http://www.w3.org/2004/02/skos/core#");

var file = __dirname + '/../vocabularies/raw-data/rameau.genres.txt';
var output = __dirname + '/../vocabularies/genre-rameau.ttl';
var baseUrl = "http://data.doremus.org/vocabulary/rameau/genre/";
var array = [];
var store = $rdf.graph();


fs.createReadStream(file)
  .pipe(csv({
    separator: '\t', // specify optional cell separator
    newline: '\n', // specify a newline character
    headers: ['code', 'label'] // Specifing the headers
  }))
  .on('data', data => array.push(toSPARQL(data.code)))
  .on('end', () => {
    async.eachSeries(array, function iteratee(query, callback) {
      request.post({
        url: 'http://data.bnf.fr/sparql',
        qs: {
          query: query,
          format: 'application/n3',
        },
      }, (err, response, body) => {
        var contentType = 'text/n3';
        $rdf.parse(body, store, baseUrl, contentType);
        callback();
      });
    }, function done() {
      $rdf.serialize(undefined, store, 'http://example.org', 'application/rdf+xml', function(err, str) {
        if (err) return console.error(err);
        console.log('formatting rdf');
        rdfTranslator(str, 'xml', 'n3', function(err, data) {
          if (err) return console.error(err, data);

          data = data.replace(/=/g, "owl:sameAs");
          writeTtl(data);
        });
      });
    });
  });

function toSPARQL(code) {
  return `CONSTRUCT {?idArk ?p ?o}
            WHERE {
                ?idArk bnf-onto:FRBNF "${code.trim()}"^^xsd:integer;
                ?p ?o
            }`;
}

function writeTtl(str) {
  fs.writeFile(output, str, 'utf8', function(err) {
    if (err) return console.error(err);

    console.log("The file was saved!");
  });
}
back to top