rdfstore-js создать / загрузить локальный файл
Я создаю небольшое приложение Node, которое запрашивает локальный тройной файл n3, и использую rdfstore-js. У меня все работает нормально с примером, который использует документация, но это удаленное тройное хранилище. Документация вводит в заблуждение относительно того, какие параметры передавать в rdfstore.create() для локального файла. Возможно, что-то подобное?
rdfstore.create(function(store) {
store.execute('LOAD /Users/Ben/Desktop/MET/triple_SPARQL/triples.n3 text/n3 ', function() {
});
})
Кто-нибудь использовал rdfstore-js и загрузил в локальные файлы?
Спасибо!
2 ответа
Судя по исходному коду, rdfstore-js не поддерживает загрузку локальных файлов, на которые есть ссылки в обновлениях SPARQL (например: LOAD <file:///myfile.ttl>
). Однако вы можете прочитать файл самостоятельно и передать данные напрямую:
var rdfstore = require('rdfstore')
, fs = require('fs');
rdfstore.create(function(store){
var rdf = fs.readFileSync('/var/foo/bar.ttl').toString();
store.load('text/turtle', rdf, function(s,d){
console.log(s,d);
store.execute("SELECT * WHERE { ?s ?p ?o } LIMIT 10", function(success, results){
console.log(success, results);
});
});
});
Вот мой пример кода, который позволяет вам загрузить файл в Node.js, используя путь к файлу (здесь options.path может быть /uploads/123.owl)
rdfstore.create(function(err, store) {
if (err)
console.log("There was an error creating the store", err);
else
{
//replace / with \
var syncPath = __dirname + options.path; //local but not enough
var re = new RegExp('/', 'g');
syncPath = syncPath.replace(re, '\\'); //update path
//set full path from filesystem of the ontology
var ontology = fs.readFileSync(__dirname + options.path).toString();
//LOCAL
store.load("application/ld+json" , ontology, "graph", function(err, results) {
if (err)
console.log("There was an error loading the store", err);
else
{
store.graph("graph", function(err, graph) {
if (err)
{
console.log("There was an error creating the graph", err);
}
else
{
var triples = graph.toArray();
console.log("Constructing triples sync... ");
console.log("There are ", triples.length, "triples");
if (triples.length !== 0)
{
cb(triples); }
}
}); //graph
}
});
store.close(); //done
}//err