Skip to content

Instantly share code, notes, and snippets.

@botic
Created March 20, 2012 21:08
Show Gist options
  • Select an option

  • Save botic/2141316 to your computer and use it in GitHub Desktop.

Select an option

Save botic/2141316 to your computer and use it in GitHub Desktop.
Jenady – RingoJS and the Jena API
include("ringo/term");
include("ringo/shell");
addToClasspath("./lib/arq-2.8.7-tests.jar");
addToClasspath("./lib/arq-2.8.7.jar");
addToClasspath("./lib/hsqldb-1.8.0.10.jar");
addToClasspath("./lib/icu4j-3.4.4.jar");
addToClasspath("./lib/iri-0.8.jar");
addToClasspath("./lib/jena-2.6.4-tests.jar");
addToClasspath("./lib/jena-2.6.4.jar");
addToClasspath("./lib/junit-4.5.jar");
addToClasspath("./lib/log4j-1.2.13.jar");
addToClasspath("./lib/lucene-core-2.3.1.jar");
addToClasspath("./lib/sdb-1.3.4-tests.jar");
addToClasspath("./lib/sdb-1.3.4.jar");
addToClasspath("./lib/slf4j-api-1.5.8.jar");
addToClasspath("./lib/slf4j-log4j12-1.5.8.jar");
addToClasspath("./lib/stax-api-1.0.1.jar");
addToClasspath("./lib/wstx-asl-3.2.9.jar");
addToClasspath("./lib/xercesImpl-2.7.1.jar");
var storeDescription = new Packages.com.hp.hpl.jena.sdb.StoreDesc(
Packages.com.hp.hpl.jena.sdb.store.LayoutType.LayoutTripleNodesHash,
Packages.com.hp.hpl.jena.sdb.store.DatabaseType.MySQL
);
var sdbConnection = new Packages.com.hp.hpl.jena.sdb.sql.SDBConnection("jdbc:mysql://localhost/jenady", "jenady", "jenady") ;
var store = Packages.com.hp.hpl.jena.sdb.SDBFactory.connectStore(sdbConnection, storeDescription) ;
writeln("Checking store ...");
if (!Packages.com.hp.hpl.jena.sdb.util.StoreUtils.isFormatted(store)) {
writeln("Store not formatted. Starting to format ...");
store.getTableFormatter().create();
writeln("Store formatted ...");
}
writeln("Reading the stores model ...");
var model = Packages.com.hp.hpl.jena.sdb.SDBFactory.connectDefaultModel(store);
if (model) {
writeln("Add new statement:");
var resourceURI = readln(" Resource > ");
var object = readln(" dc:title > ");
var ressourceObj = model.createResource(resourceURI).addProperty(Packages.com.hp.hpl.jena.vocabulary.DC.title, object);
} else {
writeln("Could not create model!");
}
store.close();
writeln("Closed the store.");
include("ringo/term");
include("ringo/shell");
var fs = require("fs");
var http = require("ringo/utils/http");
addToClasspath("./lib/arq-2.8.7-tests.jar");
addToClasspath("./lib/arq-2.8.7.jar");
addToClasspath("./lib/hsqldb-1.8.0.10.jar");
addToClasspath("./lib/icu4j-3.4.4.jar");
addToClasspath("./lib/iri-0.8.jar");
addToClasspath("./lib/jena-2.6.4-tests.jar");
addToClasspath("./lib/jena-2.6.4.jar");
addToClasspath("./lib/junit-4.5.jar");
addToClasspath("./lib/log4j-1.2.13.jar");
addToClasspath("./lib/lucene-core-2.3.1.jar");
addToClasspath("./lib/sdb-1.3.4-tests.jar");
addToClasspath("./lib/sdb-1.3.4.jar");
addToClasspath("./lib/slf4j-api-1.5.8.jar");
addToClasspath("./lib/slf4j-log4j12-1.5.8.jar");
addToClasspath("./lib/stax-api-1.0.1.jar");
addToClasspath("./lib/wstx-asl-3.2.9.jar");
addToClasspath("./lib/xercesImpl-2.7.1.jar");
var storeDescription = new Packages.com.hp.hpl.jena.sdb.StoreDesc(
Packages.com.hp.hpl.jena.sdb.store.LayoutType.LayoutTripleNodesHash,
Packages.com.hp.hpl.jena.sdb.store.DatabaseType.MySQL
);
var sdbConnection = new Packages.com.hp.hpl.jena.sdb.sql.SDBConnection("jdbc:mysql://localhost/jenady", "jenady", "jenady") ;
var store = Packages.com.hp.hpl.jena.sdb.SDBFactory.connectStore(sdbConnection, storeDescription) ;
writeln("Reading the stores model ...");
var model = Packages.com.hp.hpl.jena.sdb.SDBFactory.connectDefaultModel(store);
var app = function (request) {
var params = http.parseParameters(request.queryString);
if (params.q) {
try {
var query = Packages.com.hp.hpl.jena.query.QueryFactory.create(params.q);
var executor = Packages.com.hp.hpl.jena.query.QueryExecutionFactory.create(query, model);
var resultSet = executor.execSelect();
var variables = resultSet.getResultVars().toArray();
var responseData = {result: []};
while (resultSet.hasNext()) {
var solution = resultSet.nextSolution();
variables.forEach(function(el) {
var rdfNode = solution.get(el);
responseData.result.push({
"var": el,
"rdfNode": rdfNode.toString(),
"rdfLiteral": (rdfNode.isLiteral() ? rdfNode.asLiteral().getString() : ""),
"rdfResource": (rdfNode.isResource() ? rdfNode.asResource().getURI() : "")
})
});
}
executor.close();
return {
status: 200,
headers: {
"Content-Type": "application/json"
},
body: [JSON.stringify(responseData)]
};
} catch (ex) {
// Close the executor
if (executor) {
executor.close();
}
// return error
return { status: 418, headers: {}, body: [ex.toString()] };
}
}
return {status: 500, headers: {}, body: ["oups..."]};
};
if (model) {
if (require.main == module) {
var server = require("ringo/httpserver").Server({
app: app,
port: 8080
});
server.start();
readln("Press key to stop ...");
store.close();
writeln("Closed the store.");
server.stop();
} else {
writeln("Could not start the server.");
store.close();
writeln("Closed the store.");
}
} else {
writeln("Could not create model!");
store.close();
writeln("Closed the store.");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment