-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
367 additions
and
361 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,46 +1,48 @@ | |||
var rdf2json = require("../lib/rdf2json"); | var rdf2json = require("../lib/rdf2json"); | ||
var sys = require("sys"); | var sys = require("sys"); | ||
rdf2json.convertFileIntoRDFJSON("./test/wine.rdf", "flat", function(err, rdfjson){ | rdf2json.convertFileIntoRDFJSON("./test/wine.rdf", "flat", function(err, rdfjson){ | ||
var obj = eval("("+ rdfjson +")"); | if(err) sys.puts("Something wrong here ..."); | ||
sys.puts(JSON.stringify(obj)); | var obj = eval("("+ rdfjson +")"); | ||
}); | sys.puts(JSON.stringify(obj)); | ||
|
}); | ||
rdf2json.convertURLIntoRDFJSON("http://www.w3.org/TR/owl-guide/wine.rdf", "sparql", function(err, rdfjson){ |
|
||
var obj = eval("("+ rdfjson +")"); | rdf2json.convertURLIntoRDFJSON("http://www.w3.org/TR/owl-guide/wine.rdf", "sparql", function(err, rdfjson){ | ||
sys.puts(JSON.stringify(obj)); | if(err) sys.puts("Something wrong here ..."); | ||
}); | var obj = eval("("+ rdfjson +")"); | ||
|
sys.puts(JSON.stringify(obj)); | ||
rdf2json.convertStringIntoRDFJSON("" + | }); | ||
"<?xml version=\"1.0\"?>" + |
|
||
" <!DOCTYPE rdf:RDF [" + | rdf2json.convertStringIntoRDFJSON("" + | ||
" <!ENTITY vin \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\" >" + | "<?xml version=\"1.0\"?>" + | ||
" <!ENTITY food \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#\" >" + | " <!DOCTYPE rdf:RDF [" + | ||
" <!ENTITY owl \"http://www.w3.org/2002/07/owl#\" >" + | " <!ENTITY vin \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\" >" + | ||
" <!ENTITY xsd \"http://www.w3.org/2001/XMLSchema#\" >" + | " <!ENTITY food \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#\" >" + | ||
"]>" + | " <!ENTITY owl \"http://www.w3.org/2002/07/owl#\" >" + | ||
"<rdf:RDF" + | " <!ENTITY xsd \"http://www.w3.org/2001/XMLSchema#\" >" + | ||
" xmlns = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | "]>" + | ||
" xmlns:vin = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | "<rdf:RDF" + | ||
" xml:base = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | " xmlns = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | ||
" xmlns:food= \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#\"" + | " xmlns:vin = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | ||
" xmlns:owl = \"http://www.w3.org/2002/07/owl#\"" + | " xml:base = \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine#\"" + | ||
" xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"" + | " xmlns:food= \"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food#\"" + | ||
" xmlns:rdfs= \"http://www.w3.org/2000/01/rdf-schema#\"" + | " xmlns:owl = \"http://www.w3.org/2002/07/owl#\"" + | ||
" xmlns:xsd = \"http://www.w3.org/2001/XMLSchema#\">" + | " xmlns:rdf = \"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"" + | ||
"" + | " xmlns:rdfs= \"http://www.w3.org/2000/01/rdf-schema#\"" + | ||
" <owl:Ontology rdf:about=\"\">" + | " xmlns:xsd = \"http://www.w3.org/2001/XMLSchema#\">" + | ||
" <rdfs:comment>An example OWL ontology</rdfs:comment>" + | "" + | ||
" <owl:priorVersion>" + | " <owl:Ontology rdf:about=\"\">" + | ||
" <owl:Ontology rdf:about=\"http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine\"/>" + | " <rdfs:comment>An example OWL ontology</rdfs:comment>" + | ||
" </owl:priorVersion>" + | " <owl:priorVersion>" + | ||
" <owl:imports rdf:resource=\"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food\"/>" + | " <owl:Ontology rdf:about=\"http://www.w3.org/TR/2003/CR-owl-guide-20030818/wine\"/>" + | ||
" <rdfs:comment>Derived from the DAML Wine ontology at " + | " </owl:priorVersion>" + | ||
" http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml" + | " <owl:imports rdf:resource=\"http://www.w3.org/TR/2003/PR-owl-guide-20031209/food\"/>" + | ||
" Substantially changed, in particular the Region based relations." + | " <rdfs:comment>Derived from the DAML Wine ontology at " + | ||
" </rdfs:comment>" + | " http://ontolingua.stanford.edu/doc/chimaera/ontologies/wines.daml" + | ||
" <rdfs:label>Wine Ontology</rdfs:label>" + | " Substantially changed, in particular the Region based relations." + | ||
" </owl:Ontology>" + | " </rdfs:comment>" + | ||
"</rdf:RDF>", "talis", function(err, rdfjson){ | " <rdfs:label>Wine Ontology</rdfs:label>" + | ||
var obj = eval("("+ rdfjson +")"); | " </owl:Ontology>" + | ||
sys.puts(JSON.stringify(obj)); | "</rdf:RDF>", "talis", function(err, rdfjson){ | ||
var obj = eval("("+ rdfjson +")"); | |||
sys.puts(JSON.stringify(obj)); | |||
}); | }); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,2 +1,2 @@ | |||
var rdf2json = require("./node-rdf2json"); | var rdf2json = require("./node-rdf2json"); | ||
module.exports = rdf2json; | module.exports = rdf2json; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Original file line | Diff line number | Diff line change |
---|---|---|---|
@@ -1,150 +1,149 @@ | |||
var http = require("http"); | var sys = require("sys"); | ||
var sys = require("sys"); | var RDF = require("../vendor/rdf-parser/parser").RDF; | ||
var RDF = require("../vendor/rdf-parser/parser").RDF; | var fs = require("fs"); | ||
var fs = require("fs"); |
|
||
|
function generateFlatRDFJSONString(triples) { | ||
function generateFlatRDFJSONString(triples) { | var rdfjson = ""; | ||
var rdfjson = ""; | for ( var i = 0; i < triples.length; i++) { | ||
for ( var i = 0; i < triples.length; i++) { | rdfjson += "{"; | ||
rdfjson += "{"; | var subject = triples[i].subject.toString(); | ||
var subject = triples[i].subject.toString(); | var predicate = triples[i].predicate.toString(); | ||
var predicate = triples[i].predicate.toString(); | var object = triples[i].object == undefined ? undefined | ||
var object = triples[i].object == undefined ? undefined | : triples[i].object.toString(); | ||
: triples[i].object.toString(); | var lang = triples[i].lang ? triples[i].lang.toString() : ""; | ||
var lang = triples[i].lang ? triples[i].lang.toString() : ""; | var datatype = triples[i].datatype ? triples[i].datatype.toString() | ||
var datatype = triples[i].datatype ? triples[i].datatype.toString() | : ""; | ||
: ""; | if (triples[i].type == "resource") { | ||
if (triples[i].type == "resource") { | rdfjson += "\"s\" : { \"type\" : \"uri\", \"uri\" : \"" + subject | ||
rdfjson += "\"s\" : { \"type\" : \"uri\", \"uri\" : \"" + subject | + "\" },"; | ||
+ "\" },"; | rdfjson += "\"p\" : \"" + predicate + "\","; | ||
rdfjson += "\"p\" : \"" + predicate + "\","; | rdfjson += "\"o\" : { \"type\" : \"uri\", \"uri\" : \"" + object | ||
rdfjson += "\"o\" : { \"type\" : \"uri\", \"uri\" : \"" + object | + "\" }"; | ||
+ "\" }"; | } else { | ||
} else { | rdfjson += "\"s\" : { \"type\" : \"uri\", \"uri\" : \"" + subject | ||
rdfjson += "\"s\" : { \"type\" : \"uri\", \"uri\" : \"" + subject | + "\" },"; | ||
+ "\" },"; | rdfjson += "\"p\" : \"" + predicate + "\","; | ||
rdfjson += "\"p\" : \"" + predicate + "\","; | rdfjson += "\"o\" : { \"type\" : \"literal\", \"val\" : \"" | ||
rdfjson += "\"o\" : { \"type\" : \"literal\", \"val\" : \"" | + object + "\" , \"lang\" : \"" + lang | ||
+ object + "\" , \"lang\" : \"" + lang | + "\", \"datatype\" : \"" + datatype + "\"}"; | ||
+ "\", \"datatype\" : \"" + datatype + "\"}"; | } | ||
} | if (i != (triples.length - 1)) { | ||
if (i != (triples.length - 1)) { | rdfjson += "},"; | ||
rdfjson += "},"; | } else { | ||
} else { | rdfjson += "}"; | ||
rdfjson += "}"; | } | ||
} | } | ||
} | return rdfjson; | ||
return rdfjson; | } | ||
} |
|
||
|
function _toRDFJSON(rdf, type, callback) { | ||
function _toRDFJSON(rdf, type, callback) { | var rdfjson = ""; | ||
var rdfjson = ""; | if (type.toLowerCase() == "flat") { | ||
if (type.toLowerCase() == "flat") { | var triples = rdf.Match(null, null, null, null); | ||
var triples = rdf.Match(null, null, null, null); | rdfjson += "{ \"data\" : ["; | ||
rdfjson += "{ \"data\" : ["; | rdfjson += generateFlatRDFJSONString(triples); | ||
rdfjson += generateFlatRDFJSONString(triples); | rdfjson += "]}"; | ||
rdfjson += "]}"; | } else if (type.toLowerCase() == "sparql") { | ||
} else if (type.toLowerCase() == "sparql") { | var triples = rdf.Match(null, null, null, null); | ||
var triples = rdf.Match(null, null, null, null); | rdfjson += "{ \"head\" : { \"vars\" : [\"s\", \"p\", \"o\"]},"; | ||
rdfjson += "{ \"head\" : { \"vars\" : [\"s\", \"p\", \"o\"]},"; | rdfjson += "\"results\" : { \"bindings\" : ["; | ||
rdfjson += "\"results\" : { \"bindings\" : ["; | rdfjson += generateFlatRDFJSONString(triples); | ||
rdfjson += generateFlatRDFJSONString(triples); | rdfjson += "]}}"; | ||
rdfjson += "]}}"; | } else if (type.toLowerCase() == "talis") { | ||
} else if (type.toLowerCase() == "talis") { | var triples = rdf.Match(null, null, null, null); | ||
var triples = rdf.Match(null, null, null, null); | sys.puts(sys.inspect(triples)); | ||
sys.puts(sys.inspect(triples)); | var subjects = new Array(); | ||
var subjects = new Array(); | for ( var i = 0; i < triples.length; i++) { | ||
for ( var i = 0; i < triples.length; i++) { | if (subjects.indexOf(triples[i].subject) != -1) { | ||
if (subjects.indexOf(triples[i].subject) != -1) { | continue; | ||
continue; | } else { | ||
} else { | subjects.push(triples[i].subject); | ||
subjects.push(triples[i].subject); | } | ||
} | } | ||
} | rdfjson += "{"; | ||
rdfjson += "{"; | for ( var i = 0; i < subjects.length; i++) { | ||
for ( var i = 0; i < subjects.length; i++) { | rdfjson += " \"" + subjects[i] + "\" : {"; | ||
rdfjson += " \"" + subjects[i] + "\" : {"; | var groupSubjects = rdf.Match(null, subjects[i], null, null); | ||
var groupSubjects = rdf.Match(null, subjects[i], null, null); | var predicates = new Array(); | ||
var predicates = new Array(); | for ( var j = 0; j < groupSubjects.length; j++) { | ||
for ( var j = 0; j < groupSubjects.length; j++) { | if (predicates.indexOf(groupSubjects[j].predicate) != -1) { | ||
if (predicates.indexOf(groupSubjects[j].predicate) != -1) { | continue; | ||
continue; | } else { | ||
} else { | predicates.push(groupSubjects[j].predicate); | ||
predicates.push(groupSubjects[j].predicate); | } | ||
} | } | ||
} | for ( var j = 0; j < predicates.length; j++) { | ||
for ( var j = 0; j < predicates.length; j++) { | rdfjson += "\"" + predicates[j] + "\" : ["; | ||
rdfjson += "\"" + predicates[j] + "\" : ["; | groupObjects = rdf | ||
groupObjects = rdf | .Match(null, subjects[i], predicates[j], null); | ||
.Match(null, subjects[i], predicates[j], null); | for ( var k = 0; k < groupObjects.length; k++) { | ||
for ( var k = 0; k < groupObjects.length; k++) { | var object = groupObjects[k].object; | ||
var object = groupObjects[k].object; | if (!groupObjects[k].type) | ||
if (!groupObjects[k].type) | continue;// TODO If the parsing result is correct, | ||
continue;// TODO If the parsing result is correct, | // each statement should always have this | ||
// each statement should always have this | // type info. | ||
// type info. | if (groupObjects[k].type.toString() == "literal") { | ||
if (groupObjects[k].type.toString() == "literal") { | rdfjson += "{ \"value\" : \"" + object.toString() | ||
rdfjson += "{ \"value\" : \"" + object.toString() | + "\", \"type\" : \"uri\""; | ||
+ "\", \"type\" : \"uri\""; | if (groupObjects[k].datatype) { | ||
if (groupObjects[k].datatype) { | rdfjson += ", \"datatype\" : \"" | ||
rdfjson += ", \"datatype\" : \"" | + groupObjects[k].datatype.toString() | ||
+ groupObjects[k].datatype.toString() | + "\""; | ||
+ "\""; | } | ||
} | if (groupObjects[k].lang) { | ||
if (groupObjects[k].lang) { | rdfjson += ", \"lang\" : \"" | ||
rdfjson += ", \"lang\" : \"" | + groupObjects[k].lang.toString() + "\""; | ||
+ groupObjects[k].lang.toString() + "\""; | } | ||
} | rdfjson += "}"; | ||
rdfjson += "}"; | } else if (groupObjects[k].type.toString() == "resource") { | ||
} else if (groupObjects[k].type.toString() == "resource") { | if (object.toString().substr(0, 2) == "_:n") { | ||
if (object.toString().substr(0, 2) == "_:n") { | rdfjson += "{ \"value\" : \"" + object.toString() | ||
rdfjson += "{ \"value\" : \"" + object.toString() | + "\", \"type\" : \"bnode\"}"; | ||
+ "\", \"type\" : \"bnode\"}"; | } else { | ||
} else { | rdfjson += "{ \"value\" : \"" + object.toString() | ||
rdfjson += "{ \"value\" : \"" + object.toString() | + "\", \"type\" : \"uri\"}"; | ||
+ "\", \"type\" : \"uri\"}"; | } | ||
} | } | ||
} | if (k < groupObjects.length - 1) { | ||
if (k < groupObjects.length - 1) { | rdfjson += ","; | ||
rdfjson += ","; | } | ||
} | } | ||
} | rdfjson += "]"; | ||
rdfjson += "]"; | if (j < predicates.length - 1) | ||
if (j < predicates.length - 1) | rdfjson += ","; | ||
rdfjson += ","; | } | ||
} | rdfjson += "}"; | ||
rdfjson += "}"; | if (i < subjects.length - 1) | ||
if (i < subjects.length - 1) | rdfjson += ","; | ||
rdfjson += ","; | } | ||
} | rdfjson += "}"; | ||
rdfjson += "}"; | } | ||
} | callback(null, rdfjson); | ||
callback(null, rdfjson); | } | ||
} |
|
||
|
exports.convertStringIntoRDFJSON = function(rdfxml, type, callback) { | ||
exports.convertStringIntoRDFJSON = function(rdfxml, type, callback) { | var rdf = new RDF(); | ||
var rdf = new RDF(); | rdf.loadRDFXML(rdfxml); | ||
rdf.loadRDFXML(rdfxml); | _toRDFJSON(rdf, type, function(err, rdfjson) { | ||
_toRDFJSON(rdf, type, function(err, rdfjson) { | callback(null, rdfjson); | ||
callback(null, rdfjson); | }); | ||
}); | }; | ||
}; |
|
||
|
exports.convertFileIntoRDFJSON = function(filepath, type, callback) { | ||
exports.convertFileIntoRDFJSON = function(filepath, type, callback) { | var self = this; | ||
var self = this; | var rdf = new RDF(); | ||
var rdf = new RDF(); | fs.readFile(filepath, function(err, data) { | ||
fs.readFile(filepath, function(err, data) { | self.convertStringIntoRDFJSON(data, type, function(err, rdfjson) { | ||
self.convertStringIntoRDFJSON(data, type, function(err, rdfjson) { | callback(null, rdfjson); | ||
callback(null, rdfjson); | }); | ||
}); | }); | ||
}); | }; | ||
}; |
|
||
|
exports.convertURLIntoRDFJSON = function(url, type, callback) { | ||
exports.convertURLIntoRDFJSON = function(url, type, callback) { | var rdf = new RDF(); | ||
var rdf = new RDF(); | rdf.getRDFURL(url, function() { | ||
rdf.getRDFURL(url, function() { | _toRDFJSON(rdf, type, function(err, rdfjson) { | ||
_toRDFJSON(rdf, type, function(err, rdfjson) { | callback(null, rdfjson); | ||
callback(null, rdfjson); | }); | ||
}); | }); | ||
}); | |||
}; | }; |
Oops, something went wrong.