var uriTemplates = require('uri-templates'); var JSONLDMacro = {}; JSONLDMacro.VERSION = "0.0.6"; JSONLDMacro.NS = "http://jsonld-macros.org/vocab#"; var jldmcontext = { "jldm": JSONLDMacro.NS }; var jldm = function(path) { return "jldm:"+path; }; // Default behaviour JSONLDMacro.behaviour = "loose"; // Map of registered functions JSONLDMacro.registeredFunctions = {}; // Registered functions namespaces JSONLDMacro.registeredFunctionsNS = {}; JSONLDMacro.evalApplyFn = function(fnText, argument, input, context) { var f; eval("f = "+fnText); return f(argument, input, context); }; /** * @doc * Transforms a document obtained from a URL using * the registered API transformations */ JSONLDMacro.resolve = function(url, document) { url = url.split("?")[0]; var urlExp, transformation; for(var i=0; i "+e); id = null; } else { throw(e); } } obj[p] = id; return obj; }; })(p, operations); } } return function(obj) { var tmp = obj; for(var p in specifications) { tmp = specifications[p](tmp); } return tmp; }; }; /** * @doc * Builds a transformation that add namespaces to a JSON object */ JSONLDMacro._buildGenNsTransformation = function(keys) { var defaultNs = keys['ns:default'] || ""; var omit = keys['ns:omit'] || []; delete keys['ns:omit']; var toOmit = {}; for(var i=0; i\n\ SELECT * { \n\ ?macro a jldm:JsonLDMacro . \n\ OPTIONAL { ?macro jldm:uriTemplate ?uriTemplate } .\n\ ?macro jldm:specification ?specification .\n\ ?specification jldm:transformation ?transformation .\n\ ?specification jldm:pathSelector ?pathSelector .\n\ ?transformation jldm:ruleName ?ruleName .\n\ ?transformation jldm:ruleBody ?ruleBody .\n\ }"; rdfstore.create(function(err, store){ if(err) { cb(err); } else { store.load("application/ld+json", jsonld, function(err,_){ if(err){ cb(err); } else { store.execute(query, function(err, results){ if(err){ cb(err); } else { cb(null, _fromJSONLDResults(results)); } }); } }); } }); }; if(typeof(window) !== 'undefined') { window.JSONLDMacro = JSONLDMacro; } module.exports.JSONLDMacro = JSONLDMacro;