// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers // All rights reserved. // Licensed under the Apache License, Version 2.0 // // or the MIT license , // at your option. All files in the project carrying such // notice may not be copied, modified, or distributed except // according to those terms. const WebSocket = require("ws"); // shim to insert WebSocket in global const ng = require("ng-sdk-node"); global.WebSocket = WebSocket; let config = { server_peer_id: "ALyGZgFaDDALXLppJZLS2TrMScG0TQIS68RzRcPv99aN", admin_user_key:"ABI7mSYq1jzulcatewG6ssaFuCjYVVxF_esEmV33oBW4", client_peer_key:"APbhJBuWUUmwZbuYwVm88eJ0b_ZulpSMOlA-9Zwi-S0Q" }; ng.init_headless(config).then( async() => { let session_id; try { let user_id = await ng.admin_create_user(config); console.log("user created: ",user_id); let other_user_id = "AJQ5gCLoXXjalC9diTDCvxxWu5ZQUcYWEE821nhVRMcE"; let session = await ng.session_headless_start(other_user_id); session_id = session.session_id; console.log(session); let sparql_result = await ng.sparql_query(session.session_id, "SELECT * WHERE { ?s ?p ?o }"); console.log(sparql_result); let quads = await ng.sparql_query(session.session_id, "CONSTRUCT { ?s ?p ?o } WHERE { ?s ?p ?o }"); for (const q of quads) { console.log(q.subject.toString(), q.predicate.toString(), q.object.toString(), q.graph.toString()) } let result = await ng.sparql_update(session.session_id, "INSERT DATA { }"); console.log(result); // the 2nd argument `false` means do not `force_close` the dataset. // it stays in memory even when the session is stopped. (not all the dataset is in memory. just some metadata) // if you set this to true, the dataset is closed and removed from memory on the server. // next time you will open a session for this user, the dataset will be loaded again. let res = await ng.session_headless_stop(session.session_id, false); console.log(res); } catch (e) { console.error(e); if (session_id) await ng.session_headless_stop(session_id, true); } }) .catch(err => { console.error(err); });