Pouvoir restaurer un ou plusieurs backups
Le backup de Fuseki génère des fichiers de quads zippés (.nq.gz), mais il n'y a rien qui permet de les réimporter facilement, en particulier quand il y a plusieurs graphs (ce qui est le cas lorsque les WebACL sont activés).
Il serait bien d'avoir une action de type restoreBackup qui gère ça automatiquement, et peut-être aussi un restoreAllBackups qui lise tous les fichiers dans un dossier.
J'ai fait ça mais je me suis heurté au fait que triplestore.insert attendant des triples et non des quads (il faut utiliser le mot clé GRAPH pour les triples qui ne sont pas dans le graph par défaut)
async restoreBackup(ctx) {
const { dataset, secure, fileName } = ctx.params;
let buffer = await fsPromises.readFile(fileName);
if (path.extname(fileName) === '.gz') {
buffer = await promisify(unzip)(buffer);
}
const quads = buffer.toString();
const exist = await this.actions.datasetExist({ dataset }, { parentCtx: ctx });
if (exist) {
await ctx.call('triplestore.dropAll', { dataset, webId: 'system' });
} else {
await this.actions.createDataset({ dataset, secure }, { parentCtx: ctx });
}
await ctx.call('triplestore.insert', {
resource: quads,
contentType: MIME_TYPES.TRIPLE,
dataset,
webId: 'system'
});
}
Je pense qu'il serait mieux de passer par un POST dans l'API de Fuseki, comme le fait l'interface. L'upload de quads marche bien, il déduit lui-même les graphs à créer.
https://jena.apache.org/documentation/fuseki2/fuseki-server-protocol.html
import a backup for dev test
there are 2 files to import : localData and settings
refactor your nq files to replace base url with http://localhost:3000
go to http://localhost:3030 /!\ notice 3030 for backend web app
then add data
select files and upload
careful select the second settings dataset at the top of the window before uploading the second file
contact me if you want the files
don't delete datasets if you need ACL because you can't create secure dataset from jena backend