You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stanbol.apache.org by co...@apache.org on 2011/06/14 13:12:37 UTC
svn commit: r1135486 [9/12] - in /incubator/stanbol/trunk: launchers/kres/
ontologymanager/ontonet/src/main/java/org/apache/stanbol/ontologymanager/ontonet/impl/renderers/
ontologymanager/web/src/main/java/org/apache/stanbol/ontologymanager/web/resourc...
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jquery.rdfquery.core-1.0.js
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/json2.js
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/json2.js?rev=1135486&view=auto
==============================================================================
(empty)
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/json2.js
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jsonToTurtle.js
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jsonToTurtle.js?rev=1135486&view=auto
==============================================================================
--- incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jsonToTurtle.js (added)
+++ incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jsonToTurtle.js Tue Jun 14 11:12:32 2011
@@ -0,0 +1,303 @@
+/**
+ * Constructor: ex) var json = new JsonTurtle;
+ */
+function JsonTurtle(){
+ this.rdfprop = 0;
+ return this;
+}
+
+/**
+ * Get JSON data from a field, convert it to Turtle, and put into another field
+ * @param jfld : id of textarea that stores JSON data
+ * @param tfld : id of textarea to put Turtle serialization
+ */
+JsonTurtle.prototype.j2t = function(jfld, tfld){
+ var j, t;
+ j = "{'safeval':" + document.getElementById(jfld).value + "}";
+ try{
+ eval('var d = ' + j);
+ document.getElementById(tfld).value = this.parsej(d.safeval,"\n",'');
+ }catch(e){
+ alert("Error. Possibly dangerous code:\n" + e);
+ }
+}
+
+/**
+ * Converts a (JSON) object to RDF/Turtle triples.
+ * @param obj : data object
+ * @param sep : triple separator (usually \n)
+ * @param pre : indent string. also indicates nest level.
+ * @param called_by : indicates whether parent 'element' is a Class.
+ * @return RDF/Turtle triples.
+ */
+JsonTurtle.prototype.parsej = function (obj, sep, pre, called_by){
+ var res = ''; //result
+ var arg = {
+ 'pfdcl' : '', // prefix decl
+ 'caller': called_by,
+ 's' : '', // subject of triple
+ 'ctype' : '' // classtype
+ };
+ var s, p, o; // triple s,p,o
+ var key; // JSON object key
+ if(pre == '')
+ this.rdfprop = 0; // capture whether rdf: property is used
+
+ switch(typeof(obj)){
+ case "string":
+ return this.set_object(obj);
+ case "boolean":
+ return '"' + obj + '"';
+ case "number":
+ return obj;
+ case "undefined":
+ return '""';
+ }
+ // without abov switch, {"p":["abc"]} will be
+ // [:p [rdf:_1 "a"; rdf:_2 "b"; rdf:_3 "c"]] .
+ // so, case object:
+ for(key in obj){
+ //-- skip RDF syntax vocab.
+ switch(key){
+ case 'rdf:resource':
+ return '<' + obj[key] + '>';
+ case 'rdf:parseType':
+ continue;
+ case 'rdf:RDF':
+ return this.parsej(obj[key],sep,'',key);
+ case 'rdf:Description':
+ return this.prepare_pfx(arg, sep) + this.parsej(obj[key],sep,'',key);
+ case '#text':
+ return '"' + obj[key] + '"';
+ }
+
+ //-- property name to QName
+ p = this.set_qname(key);
+
+ //-- set appropriate triple according to object type
+ switch(typeof(obj[key])){
+ case "object":
+ res += this.proc_object(obj[key], p, pre, sep, arg);
+ break;
+ case "string":
+ o = this.set_object(obj[key]);
+ res += this.set_po(key, p, o, pre, sep, arg);
+ break;
+ case "number":
+ //case "boolean":
+ res += pre + p + ' ' + obj[key] + ';' + sep;
+ break;
+ default:
+ res += pre + p + ' "' + obj[key] + '";' + sep;
+ }
+ }
+
+ //-- add bNode [] or collection (), or regard as continuing p-o seqence.
+ res = res ? res.slice(0,-2) : (p ? p : ":_undefined") + ' ""';
+ res = (arg.s && pre=='') ? arg.s + res :
+ (arg.ctype == 'Collection' ?
+ '(' + sep + res + sep + pre + ')' :
+ ((arg.caller == 'C' || (pre == '' && arg.ctype)) ? sep + res:
+ '[' + sep + res + sep + pre + ']')
+ );
+ return pre ? res :
+ this.prepare_pfx(arg, sep) + res + ' .';
+}
+
+
+/**
+ * processes value tyep 'object' for JSON data
+ * @param val : JSON proprerty value (obj[key])
+ * @param p : property QName
+ * @param sep : triple separator (usually \n)
+ * @param pre : indent string. also indicates nest level.
+ * @param arg : object of pfdcl, caller, s, ctype, by reference (set val)
+ * @return resulting triple
+ */
+JsonTurtle.prototype.proc_object = function(val, p, pre, sep, arg){
+ var res, reslist = '', triple, s, ep, pp;
+ var o = {'ctype' : ''};
+ if(val == null)
+ res = pre + p + ' "";' + sep;
+
+ // case Array: treat array as repeated property, not a container
+ else if(val instanceof Array){//val.constructor == Array
+ var i;
+ for(i=0; i<val.length; i++){
+ pp = (p == 'rdf:li') ? 'rdf:_' + (i+1) : p;
+ triple = this.proc_obj_cp(val[i], pp, pre, sep, ' ', arg.caller, o);
+ reslist += o.ctype ?
+ pre + '[' + triple + '] ' + sep :
+ triple;
+ }
+ // Loop here in order to have repeated property for array
+ // rather than RDF container model. e.g. for
+ // {p1: [ {p2: "v1"}, {p2: "v2"}]}
+ // not [:p1 [ rdf:_1 [:p2 "v1"]; rdf:_2 [:p2 "v2"]]] . (1)
+ // but [:p1 [:p2 "v1"]; p1 [:p2 "v2"]] . (2)
+ // bellow commented code generates (1)
+ /*triple = this.proc_obj_cp(val, p, pre, sep, ' ', arg.caller, o);
+ reslist = o.ctype ?
+ pre + '[' + triple + '] ' + sep :
+ triple;*/
+
+ // o.ctype is set 'a :Classname' by proc_obj_cp
+ if(o.ctype){// repeated Class -> Collection
+ if(pre == ''){
+ arg.s = '[]';
+ res = sep + ':has_a (' + sep + reslist + '); '
+ }else{
+ o.ctype = 'Collection';
+ //res = '(' + sep + reslist + pre + ') ';
+ res = reslist;
+ }
+ }else
+ res = reslist;
+
+ // case Hash object:
+ }else{
+ if(pre == ''){
+ ep = '.';
+ arg.caller = 'Root';
+ }else
+ ep = ';';
+ res = this.proc_obj_cp(val, p, pre, sep, ep, arg.caller, o);
+ if(pre == '' && o.ctype) arg.caller = 'Root';
+ }
+ arg.ctype = o.ctype;
+ return res;
+}
+
+
+/**
+ * Processes object type data as class or property. If the property name
+ * starts with a capital letter, regard it as a Class
+ * @param obj : a data object
+ * @param p : property whose value is obj
+ * @param pre : indent string. also indicates nest level.
+ * @param sep : triple separator (usually \n)
+ * @param ep : end point of a triple in case a Class (usually '.')
+ * @param caller : indicates whether parent 'element' is a Class.
+ * @param o : object of ctype (to return value)
+ * @return composed Turle
+ */
+JsonTurtle.prototype.proc_obj_cp = function(obj, p, pre, sep, ep, caller, o){
+ var res;
+
+ if((p.split(':')[1]).match(/^[A-Z]/) && caller != 'C'){
+ // if local name starts with a capital, regard as Class
+ // and treat nested object as p/o of the same subject
+ o.ctype = ' a ' + p + ';';
+ res = pre + o.ctype + this.parsej(obj, "\n", ' ' + pre, 'C');
+ if(caller == 'Root')
+ // list of classes called by root will be each independent
+ res = '[' + res + sep + ']' + ep + sep;
+ else
+ res += ep + sep;
+ // (only top level can have '.' for class, i.e. parallel triples)
+ }else{
+ // else treat as bNode with predicateObjectList
+ res = pre + p + ' ' + this.parsej(obj, "\n", ' ' + pre) + ';' + sep;
+ }
+ return res;
+}
+
+
+/**
+ * set appropriate QName for property
+ * @param key : JSON proprerty name (key in obj)
+ * @return QName
+ */
+JsonTurtle.prototype.set_qname = function(key){
+ var p;
+ if(key.indexOf(':') > -1)
+ // if contains ':' regard it as Qname -- maybe need clean up
+ p = key;
+ else if(key.match(/^\d+$/)){
+ // Array has 0,1,2... as key --> RDF container member prop.
+ p = 'rdf:_' + (key*1+1);
+ this.rdfprop++;
+ }else
+ // treat as default namespaced name
+ p = ':' + key;
+
+ // clean up property name
+ p = p.replace(/[^-:\w\d\u00c0-\ueffff]/g,'_'); // pseudo namechar
+ p = p.replace(/:([-\d])/,':_'+RegExp.$1); // local name start char
+
+ return p;
+}
+
+
+/**
+ * set appropriate object for JSON data value
+ * @param val : JSON proprerty value (obj[key])
+ * @return object in Turtle triple
+ */
+JsonTurtle.prototype.set_object = function(val){
+ var o;
+ // if uri ref
+ if(val.match(/^<([-_\w\n\.~\?\&\/\@=;,#%:]+)>$/))
+ o = "<" + RegExp.$1 + ">";
+ //need this ? maybe should not ?
+ else if(val.match(/^http:([-_\w\n\.~\?\&\/\@=;,#%]+)$/))
+ o = "<http:" + RegExp.$1 + ">";
+ // or bNode
+ else if(val == "[]")
+ o = "[]";
+ // or QName
+ else if(val.match(/^\w*:\w+$/))
+ o = val;
+ // or literal
+ else{
+ o = val.replace(/\n/g,"\\n");
+ o = o.replace(/\"/g,"\\\"");
+ o = '"' + o + '"';
+ }
+
+ return o;
+}
+
+
+/**
+ * set property - object, or @prefix or subject, according to object value
+ * @param key : JSON object key (key in obj)
+ * @param p : property QName
+ * @param o : object
+ * @param pre : indent string. also indicates nest level.
+ * @param sep : triple separator (usually \n)
+ * @param arg : object of pfdcl, caller, s, ctype (set value for pfdcl, s)
+ * @return resulting part of triple
+ */
+JsonTurtle.prototype.set_po = function(key, p, o, pre, sep, arg){
+ var res = '', pfx;
+ if(key.match(/^(\@prefix|xmlns)/)){ // ns prefix decl
+ pfx = key.split(':')[1];
+ if(pfx == undefined) pfx = '';
+ arg.pfdcl += "@prefix " + pfx + ": " + o + " ." + sep;
+ }else if(key.match(/^(\@|rdf:)about/)) // subject node
+ arg.s = o + sep;
+ else if(p == ':a') // a (rdf:type)
+ res = pre + 'a ' + o + ";" + sep;
+ else
+ res = pre + p + ' ' + o + ";" + sep;
+
+ return res;
+}
+
+
+/**
+ * Prepares ns prefix declarations. If no @prefix, add an default ns.
+ * If model includes constructs from RDF ns and not ns ready, add one
+ * @param arg : object of pfdcl, caller, s, ctype
+ * @param sep : triple separator (usually \n)
+ * @return prepared @prefix directives
+ */
+JsonTurtle.prototype.prepare_pfx = function(arg, sep){
+ var rdfns = '<http://www.w3.org/1999/02/22-rdf-syntax-ns#>';
+ if(arg.pfdcl == '') /*&& arg.caller != 'Root'*/
+ arg.pfdcl= "@prefix : <http://purl.org/net/ns/jsonrdf/> ." + sep;
+ if(this.rdfprop && arg.pfdcl.indexOf(rdfns) == -1)
+ arg.pfdcl += "@prefix rdf: " + rdfns + " ." + sep;
+ return arg.pfdcl;
+}
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/jsonToTurtle.js
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/kres.js.bck
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/kres.js.bck?rev=1135486&view=auto
==============================================================================
--- incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/kres.js.bck (added)
+++ incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/kres.js.bck Tue Jun 14 11:12:32 2011
@@ -0,0 +1,1879 @@
+function showReengineer(dataSourceType){
+ var dataSourceDiv = document.getElementById("data-source-form");
+ if(dataSourceDiv != null){
+ if(dataSourceType == 1){
+ dataSourceDiv.innerHTML = "<form id=\"kres\" action=\"/kres/reengineer/db/schema\" method=\"POST\" enctype=\"application/x-www-form-urlencoded\" " +
+ "accept=\"application/rdf+xml\"> " +
+ "Base URI for schema<br/><input type=\"text\" class=\"url\" name=\"output-graph\" value=\"\" /><br/> " +
+ "Physical DB Name<br/><input type=\"text\" class=\"url\" name=\"db\" value=\"\" /><br/> " +
+ "JDBC Driver<br/><input type=\"text\" class=\"url\" name=\"jdbc\" value=\"\" /><br/> " +
+ "Protocol<br/><input type=\"text\" class=\"url\" name=\"protocol\" value=\"\" /><br/> " +
+ "Host<br/><input type=\"text\" class=\"url\" name=\"host\" value=\"\" /><br/> " +
+ "Port<br/><input type=\"text\" class=\"url\" name=\"port\" value=\"\" /><br/> " +
+ "Username<br/><input type=\"text\" class=\"url\" name=\"username\" value=\"\" /><br/> " +
+ "Password<br/><input type=\"text\" class=\"url\" name=\"password\" value=\"\" /><br/> " +
+ "<br/><br/> " +
+ "<input type=\"submit\" class=\"submit\" value=\"RDB Reengineering\"/>" +
+ "</form>";
+ }
+ else if(dataSourceType == 2){
+ dataSourceDiv.innerHTML = "<form id=\"kres\" action=\"/kres/reengineer\" method=\"POST\" " +
+ "enctype=\"multipart/form-data\" " +
+ "accept=\"application/rdf+xml\"> " +
+ "Output graph URI<br/><input type=\"text\" class=\"url\" name=\"output-graph\" value=\"\" /><br/> " +
+ "Input type<br/><select name=\"input-type\"><option value=\"xml\">XML</select><br/> " +
+ "Input<br/><input type=\"file\" class=\"url\" name=\"input\" /><br/><br/> " +
+ "<input type=\"submit\" class=\"submit\" value=\"XML Reengineering\"/>" +
+ "</form>";
+ }
+ else{
+ dataSourceDiv.innerHTML = "";
+ }
+ }
+
+
+}
+
+
+function getXMLHttpRequest() {
+
+
+ var XHR = null,
+
+ userAgent = navigator.userAgent.toUpperCase();
+
+ if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
+ XHR = new XMLHttpRequest();
+
+ else if(window.ActiveXObject && userAgent.indexOf("MSIE 4") < 0) {
+
+ if(userAgent.indexOf("MSIE 5") < 0)
+ XHR = new ActiveXObject("Msxml2.XMLHTTP");
+ else
+ XHR = new ActiveXObject("Microsoft.XMLHTTP");
+ }
+
+ return XHR;
+}
+
+
+function expandMenu(requester) {
+ var semionMenu = document.getElementById(requester);
+ var display = semionMenu.style.display;
+ if(display == '' || display == 'none' || display == null){
+ semionMenu.style.display = 'block';
+ }
+ else{
+ semionMenu.style.display = 'none';
+ }
+
+}
+
+function listScopes(withInactive){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ if(withInactive){
+ ajax.open("get", "/kres/ontology?with-inactive=true", true);
+ }
+ else{
+ ajax.open("get", "/kres/ontology", true);
+ }
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+
+ var contentDIV = document.getElementById("content");
+
+ ajax.onreadystatechange = function() {
+
+ // se le operazioni sono state effettuate
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ if(contentDIV != null){
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+ databank.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#');
+ databank.prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ databank.prefix('owl', 'http://www.w3.org/2002/07/owl#');
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var scopes = rdf.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#')
+ .where('?scope a onm:Scope')
+ .select();
+
+
+ var text = "<h3 class=\"menuLeft\">Ontology Network scopes</h3>" +
+ "<a class=\"menuRight\" href=\"javascript:addScope(true)\"><img alt=\"Add a scope\" src=\"/kres/static/images/add.gif\"</a>" +
+ "<div><ul id=\"kresScopes\" class=\"kressList\">";
+
+ text += "<br><br>";
+ for(var scope in scopes){
+ var scopeID = scopes[scope].scope.toString().replace('<', '').replace('>', '');
+ var splitSlash = scopeID.split("/");
+ var scopeIRI = splitSlash[splitSlash.length-1];
+ text += "<li>"+scopeID +
+ "<a href=\"javascript:showScopeConfigurationOptions('"+scopeIRI+"')\"><img class=\"configure\" alt=\"Configure\" src=\"/kres/static/images/configure.gif\"></a>" +
+ "<div id=\""+scopeIRI+"\" class=\"scopeDIV\">" +
+ "<a href=\"javascript:deleteScope("+scopeID+")\"><img src=\"/kres/static/images/delete.gif\" alt=\"delete scope\"></a>" +
+ "<div id=\"description-"+scopeIRI+"\"></div>" +
+ "</div>";
+ }
+ text += "</ul></div>";
+ if(withInactive){
+ text += "<input class=\"contentAlign\" type=\"checkbox\" onClick=\"javascript:listScopes(false)\" CHECKED>Show also disabled scopes"
+ }
+ else{
+ text += "<input class=\"contentAlign\" type=\"checkbox\" onClick=\"javascript:listScopes(true)\">Show also disabled scopes"
+ }
+
+ contentDIV.innerHTML = text;
+ }
+ }
+
+ }
+ }
+
+ contentDIV.innerHTML = "<img src=\"/kres/static/images/loading.gif\">";
+
+ ajax.send(null);
+ }
+}
+
+function showScopeConfigurationOptions(scopeID) {
+ var scopeDIV = document.getElementById(scopeID);
+
+ if(scopeDIV != null){
+ var d = scopeDIV.style.display;
+ if(d==null || d=='none' || d==''){
+ scopeDIV.style.display = 'block';
+ var scopeDescription = document.getElementById("description-"+scopeID);
+ if(scopeDescription != null){
+ if(scopeDescription.innerHTML == null || scopeDescription.innerHTML == ''){
+ var scope = new Scope();
+ scope.describe(scopeID);
+ }
+ }
+
+ }
+ else{
+ scopeDIV.style.display = 'none';
+ }
+ }
+}
+
+function addScope(displayModule) {
+ if(displayModule){
+ var content2 = "<div id=\"popupbox\">" +
+ "<form name=\"login\" action=\"\" method=\"post\">" +
+ "Scope ID:" +
+ "<center><input id=\"scopeid\" name=\"scopeid\" type=\"text\" size=\"34\" /></center>" +
+ "Core registry:" +
+ "<center><input id=\"corereg\" name=\"corereg\" type=\"text\" size=\"34\" /></center>" +
+ "Core ontology:" +
+ "<center><input id=\"coreont\" name=\"coreont\" type=\"text\" size=\"34\" /></center>" +
+ "Custom registry:" +
+ "<center><input id=\"customreg\" name=\"customreg\" type=\"text\" size=\"34\" /></center>" +
+ "Custom ontology:" +
+ "<center><input id=\"customont\" name=\"customont\" type=\"text\" size=\"34\" /></center>" +
+ "Activate scope:" +
+ "<center><input id=\"activate\" name=\"activate\" type=\"checkbox\" /></center>" +
+ "<center><input type=\"button\" name=\"submit\" value=\"add\" onclick=\"javascript:addScope()\"/></center></form><br />";
+
+ TINY.box.show(content2,0,0,0,1);
+ }
+ else{
+ var scopeID = document.getElementById("scopeid").value;
+ var corereg = document.getElementById("corereg").value;
+ var coreont = document.getElementById("coreont").value;
+ var customreg = document.getElementById("customreg").value;
+ var customont = document.getElementById("customont").value;
+ var activate = document.getElementById("activate");
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ TINY.box.hide();
+ var kresScopes = document.getElementById("kresScopes");
+ if(kresScopes != null){
+ var txt = document.createTextNode(scopeid);
+
+ var newScope = document.createElement("li");
+ newScope.appendChild(txt);
+ }
+ }
+ }
+ }
+
+ var parameters = "";
+
+ if(corereg != ''){
+ parameters += "corereg="+corereg;
+ }
+ if(coreont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "coreont="+coreont;
+ }
+ if(customreg != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customreg="+customreg;
+ }
+ if(customont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customont="+customont;
+ }
+
+ if(parameters != ''){
+ parameters += "&";
+ }
+ if(activate.checked){
+ parameters += "activate=true";
+ }
+ else{
+ parameters += "activate=false";
+ }
+ ajax.open("put", "/kres/ontology/"+scopeID+"?"+parameters, true);
+
+ //console.log(parameters);
+ ajax.send(null);
+ }
+ }
+}
+
+function discoveryLinks(){
+ var confIn = document.getElementById("confIn")
+
+ if(confIn != null){
+ var ajax = getXMLHttpRequest();
+
+ if(ajax != null){
+
+ ajax.open("post", "/kres/link-discovery", true);
+
+ var parameter = "configuration="+confIn.value;
+
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ }
+ }
+ }
+ }
+
+ ajax.send(parameter);
+ }
+}
+
+
+
+
+function getGraphs(id, ns){
+ var content = "";
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("get", "/kres/graphs/resume", false);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.send(null);
+
+ content += "Select a graph from the store: <br>";
+ content += "<select id=\""+id+"\" class=\"refactor\" name=\""+id+"\">";
+
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var graphs = rdf.prefix('kres', ns)
+ .where('kres:Storage kres:hasGraph ?graph')
+ .select();
+
+ for(var graph in graphs){
+ var graphURI = graphs[graph].graph.toString();
+ var g = graphURI.replace("<", "").replace(">", "");
+
+ content += "<option value='"+ g +"'>"+ g;
+ }
+
+ content += "</select>";
+ }
+
+ return content;
+}
+
+
+function getRecipies(){
+ var content = "";
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("get", "/kres/recipe/all", false);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.send(null);
+
+ content += "<br>Select a recipe from the rule store: <br>";
+ content += "<select id=\"recipe\" class=\"refactor\" name=\"recipe\">";
+
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var recipes = rdf.prefix('rmi', 'http://kres.iks-project.eu/ontology/meta/rmi.owl#')
+ .where('?recipe a rmi:Recipe')
+ .select();
+
+ for(var recipe in recipes){
+ var recipeURI = recipes[recipe].recipe.toString();
+ var r = recipeURI.replace("<", "").replace(">", "");
+ content += "<option value='"+ r +"'>"+ r;
+ }
+
+ content += "</select>";
+ }
+
+ return content;
+}
+
+
+/*
+ * Refactoring
+ */
+
+function runRefactoringStore(graph, recipe){
+
+}
+
+function listRecipes(){
+ var recipeListDIV = document.getElementById("recipeList");
+ if(recipeListDIV != null){
+
+
+
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("get", "/kres/recipe/all", true);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+
+
+ var content = "<ul class=\"kressList\">";
+
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var recipes = rdf.prefix('rmi', 'http://kres.iks-project.eu/ontology/meta/rmi.owl#')
+ .where('?recipe a rmi:Recipe')
+ .select();
+
+ var content = "<br><br>";
+ for(var recipe in recipes){
+ var recipeURI = recipes[recipe].recipe.toString();
+ var r = recipeURI.replace("<", "").replace(">", "");
+ content += "<li>"+ r;
+ content += "<a href=\"javascript:var rule = new Rule(); rule.listRulesOfRecipe('"+r+"');\"><img class=\"configure\" alt=\"Configure\" src=\"/kres/static/images/configure.gif\"></a>"
+ content += "<a href=\"javascript:var rule = new Rule(); rule.displayAddBox('"+r+"');\" alt=\"add rule to scope\">" +
+ "<img src=\"/kres/static/images/addRule.gif\" alt=\"add rule to scope\"></a>";
+ content += "<div id=\""+r+"\" class=\"scopeDIV\"></div>";
+ }
+
+
+ content += "</ul>";
+
+
+ recipeListDIV.innerHTML = content;
+
+ }
+ }
+ }
+
+ ajax.send(null);
+ }
+
+ recipeListDIV.style.display = 'block';
+
+ var addRecipeElement = document.getElementById("addRecipe");
+ if(addRecipeElement != null){
+ addRecipeElement.style.display = 'block';
+ }
+
+ var action = document.getElementById("action");
+ if(action != null){
+ action.href = "javascript:hideRecipes()";
+ action.innerHTML = "hide";
+ }
+ }
+}
+
+function hideRecipes(){
+ var recipeListDIV = document.getElementById("recipeList");
+ if(recipeListDIV != null){
+ recipeListDIV.style.display = 'none';
+ }
+
+ var addRecipeElement = document.getElementById("addRecipe");
+ if(addRecipeElement != null){
+ addRecipeElement.style.display = 'none';
+ }
+
+ var action = document.getElementById("action");
+ if(action != null){
+ action.href = "javascript:listRecipes()";
+ action.innerHTML = "view";
+ }
+}
+
+function Rule(){
+ return this;
+}
+
+Rule.prototype.addRule = function(){
+ var recipeIDEl = document.getElementById("recipeid");
+ var ruleIDEl = document.getElementById("ruleid");
+ var ruleEl = document.getElementById("rule");
+ var descriptionEl = document.getElementById("description");
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("post", "/kres/rule", true);
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ TINY.box.hide();
+ listRecipes();
+ }
+ }
+ }
+ }
+
+ if(recipeIDEl != null && ruleIDEl != null && ruleEl != null && descriptionEl != null){
+ var recipeID = recipeIDEl.value;
+ var ruleID = ruleIDEl.value;
+ var rule = ruleEl.value;
+ var description = descriptionEl.value;
+
+ var parameter = "recipe="+recipeID+"&rule="+ruleID+"&kres-syntax="+rule+"&description="+description;
+
+ ajax.send(parameter);
+ }
+}
+
+Rule.prototype.addNewRule = function(recipeID, ruleID, rule, description){
+
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ var time = new Date().getTime().toString();
+ var ruleName = "http://150.146.88.63:9191/kres/rule/demo_"+time;
+
+ ajax.open("delete", "/kres/rule?rule="+ruleID+"&recipe="+recipeID, true);
+ window.rulename=ruleName;
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200 || ajax.status == 404) {
+
+ var ajax2 = getXMLHttpRequest();
+ if(ajax2 != null){
+ ajax2.open("post", "/kres/rule", true);
+ ajax2.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+
+ ajax2.onreadystatechange = function() {
+ if(ajax2.readyState == 4) {
+ if (ajax2.status == 200) {
+
+ var div = document.getElementById("ruleUL");
+ if(div != null){
+ rule = rule.replaceAll("<", "<").replaceAll(">", ">");
+ div.innerHTML = "<li>" + rule;
+ }
+ //var integrityDIV = document.getElementById("integrityDemoDIV");
+ //integrityDIV.style.display = 'block';
+ $("#integrityDemoDIV").show();
+ //$("integrityDemoDIV").html("<input type=\"button\" value=\"integrity check\">");
+ }
+ }
+ }
+ }
+
+ if(recipeID != null && ruleName != null && rule != null){
+ var descriptionText = "";
+ if(description != null){
+ description = description;
+ }
+
+ var parameter = "recipe="+recipeID+"&rule="+ruleName+"&kres-syntax="+rule+"&description="+descriptionText;
+
+ ajax2.send(parameter);
+ }
+ }
+ }
+ }
+ ajax.send(null);
+ }
+
+}
+
+Rule.prototype.displayAddBox = function(recipe){
+ var content2 = "<div id=\"popupbox\">" +
+ "<form name=\"login\" action=\"\" method=\"post\">" +
+ "Recipe ID" +
+ "<center><input id=\"recipeid\" name=\"recipeid\" type=\"text\" value=\""+recipe+"\" size=\"34\" READONLY/></center>" +
+ "Rule ID:"+
+ "<center><input id=\"ruleid\" name=\"ruleid\" type=\"text\" size=\"34\"/></center>" +
+ "Rule:"+
+ "<center><textarea id=\"rule\" name=\"rule\" cols=25 row=36/></textarea></center><br><br>" +
+ "Description:"+
+ "<center><input id=\"description\" name=\"description\" type=\"text\" size=\"34\" /></center>" +
+ "<center><input type=\"button\" name=\"submit\" value=\"add\" onclick=\"javascript:var rule = new Rule(); rule.addRule()\"/></center></form><br />";
+
+ TINY.box.show(content2,0,0,0,1);
+}
+
+Rule.prototype.listRulesOfRecipe = function(recipe){
+
+ var div = document.getElementById(recipe);
+ if(div != null){
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ recipe = recipe.replace("#", "%23");
+ ajax.open("get", "/kres/rule/of-recipe/"+recipe, true);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+
+ var rdf = $.rdf({databank:databank});
+
+ recipe = recipe.replace("%23", "#");
+ var rules = rdf.prefix('rmi', 'http://kres.iks-project.eu/ontology/meta/rmi.owl#')
+ .where('<' + recipe + '> rmi:hasRule ?rule')
+ .select();
+
+
+ var content = "<div id=\"rulesOfrecipe"+recipe+"\">";
+
+ for(var rule in rules){
+
+ var ruleURI = rules[rule].rule.toString();
+ var r = ruleURI.replace("<", "").replace(">", "");
+ content += "<li>"+ r;
+ content += "<a href=\"javascript:var rule=new Rule(); rule.getRuleCode('"+r+"')\"><img class=\"configure\" alt=\"Configure\" src=\"/kres/static/images/configure.gif\"></a>";
+ content += "<div id=\""+r+"\" class=\"scopeDIV\">" +
+ "</div>";
+ }
+
+
+ content += "</ul>";
+
+ content += "<div id='\"visualization"+recipe+"\'></div>";
+ content += "<div id='\"visualization"+recipe+"-details\'></div>";
+
+ content += "</div>";
+
+ div.innerHTML = content;
+
+ div.style.display = 'block';
+
+ loadGraph("visualization"+recipe, jsonObj);
+ }
+ }
+ }
+
+ ajax.send(null);
+ }
+ }
+
+}
+
+
+Rule.prototype.getRuleCode = function(rule){
+
+ var div = document.getElementById(rule);
+ if(div != null){
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ rule = rule.replace("#", "%23");
+ ajax.open("get", "/kres/rule/"+rule, true);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var jsonObj = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+
+ var rdf = $.rdf({databank:databank});
+
+ rule = rule.replace("%23", "#");
+ var rules = rdf.prefix('rmi', 'http://kres.iks-project.eu/ontology/meta/rmi.owl#')
+ .where('<' + rule + '> rmi:hasBodyAndHead ?code')
+ .select();
+
+
+ var content = "<div id=\"rulescode-"+rule+"\">";
+
+ for(var code in rules){
+
+ var code = rules[code].code.toString();
+ //var r = ruleURI.replace("<", "").replace(">", "");
+ code = code.replaceAll("<", "<").replaceAll(">", ">");
+ content += code;
+ }
+
+ div.innerHTML = content;
+
+ div.style.display = 'block';
+
+ //loadGraph("visualization"+recipe, jsonObj);
+ }
+ }
+ }
+
+ ajax.send(null);
+ }
+ }
+
+}
+
+Rule.prototype.hideRulesOfRecipe = function(recipe){
+ var div = document.getElementById("rulesOfrecipe"+recipe);
+ if(div != null){
+ div.style.display = 'none';
+ }
+
+ var listRulesA = document.getElementById("listRulesA");
+ if(listRulesA != null){
+ listRulesA.href = "javascript: var rule = new Rule(); rule.listRulesOfRecipe('"+recipe+"');";
+ }
+}
+
+
+function Recipe(){
+ return this;
+}
+
+Recipe.prototype.addRecipe = function(){
+
+ var recipeIDEl = document.getElementById("recipeid");
+ var descriptionEl = document.getElementById("description");
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("post", "/kres/recipe", true);
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ TINY.box.hide();
+ listRecipes();
+ }
+ }
+ }
+ }
+
+ if(recipeIDEl != null && descriptionEl != null){
+ var recipeID = recipeIDEl.value;
+
+ var description = descriptionEl.value;
+
+ var parameter = "recipe="+recipeID+"&description="+description;
+
+ ajax.send(parameter);
+ }
+
+
+}
+
+
+Recipe.prototype.addNewRecipe = function(recipeID, recipeDescription, fun, ruleID, rule, ruledescription, async){
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("post", "/kres/recipe", true);
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+
+ if(async){
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200 || ajax.status == 409) {
+
+ TINY.box.hide();
+
+ fun(recipeID, ruleID, rule, ruledescription);
+
+
+ }
+ }
+ }
+ }
+ }
+
+ if(recipeID != null){
+
+ var descriptionText = "";
+ if(recipeDescription != null){
+ descriptionText = recipeDescription
+ }
+
+ var parameter = "recipe="+recipeID+"&description="+descriptionText;
+
+ ajax.send(parameter);
+ }
+
+
+}
+
+Recipe.prototype.displayAddBox = function(){
+ var content2 = "<div id=\"popupbox\">" +
+ "<form name=\"login\" action=\"\" method=\"post\">" +
+ "Recipe ID:" +
+ "<center><input id=\"recipeid\" name=\"recipeid\" type=\"text\" size=\"34\" /></center>" +
+ "Recipe description:" +
+ "<center><input id=\"description\" name=\"description\" type=\"text\" size=\"34\" /></center>" +
+ "<center><input type=\"button\" name=\"submit\" value=\"add\" onclick=\"javascript:var recipe = new Recipe(); recipe.addRecipe()\"/></center></form><br />";
+
+ TINY.box.show(content2,0,0,0,1);
+}
+
+function loadGraph(element, json) {
+ var ht = new $jit.Hypertree({
+ //id of the visualization container
+ injectInto: element,
+ //canvas width and height
+ width: 50,
+ height: 50,
+ //Change node and edge styles such as
+ //color, width and dimensions.
+ Node: {
+ dim: 9,
+ color: "#f00"
+ },
+ Edge: {
+ lineWidth: 2,
+ color: "#088"
+ },
+ onBeforeCompute: function(node){
+ Log.write("centering");
+ },
+ //Attach event handlers and add text to the
+ //labels. This method is only triggered on label
+ //creation
+ onCreateLabel: function(domElement, node){
+ domElement.innerHTML = node.name;
+ $jit.util.addEvent(domElement, 'click', function () {
+ ht.onClick(node.id);
+ });
+ },
+ //Change node styles when labels are placed
+ //or moved.
+ onPlaceLabel: function(domElement, node){
+ var style = domElement.style;
+ style.display = '';
+ style.cursor = 'pointer';
+ if (node._depth <= 1) {
+ style.fontSize = "0.8em";
+ style.color = "#ddd";
+
+ } else if(node._depth == 2){
+ style.fontSize = "0.7em";
+ style.color = "#555";
+
+ } else {
+ style.display = 'none';
+ }
+
+ var left = parseInt(style.left);
+ var w = domElement.offsetWidth;
+ style.left = (left - w / 2) + 'px';
+ },
+
+ onAfterCompute: function(){
+ Log.write("done");
+
+ //Build the right column relations list.
+ //This is done by collecting the information (stored in the data property)
+ //for all the nodes adjacent to the centered node.
+ var node = ht.graph.getClosestNodeToOrigin("current");
+ var html = "<h4>" + node.name + "</h4><b>Connections:</b>";
+ html += "<ul>";
+ node.eachAdjacency(function(adj){
+ var child = adj.nodeTo;
+ if (child.data) {
+ var rel = (child.data.band == node.name) ? child.data.relation : node.data.relation;
+ html += "<li>" + child.name + " " + "<div class=\"relation\">(relation: " + rel + ")</div></li>";
+ }
+ });
+ html += "</ul>";
+ $jit.id(element+"-details").innerHTML = html;
+ }
+ });
+ //load JSON data.
+ ht.loadJSON(json);
+ //compute positions and plot.
+ ht.refresh();
+}
+
+
+
+function Refactorer(){
+ return this;
+}
+
+Refactorer.prototype.runRefactoringStoreLazy = function() {
+ var recipeEl = document.getElementById("recipe");
+ var inputGraphEl = document.getElementById("input-graph");
+ var outputGraphEl = document.getElementById("output-graph");
+
+ if(recipeEl!=null && inputGraphEl!=null && outputGraphEl!=null){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ var recipe = recipeEl.value.replace("#", "%23");
+ var inputGraph = inputGraphEl.value.replace("#", "%23");
+ var outputGraph = outputGraphEl.value.replace("#", "%23");
+ ajax.open("get", "/kres/refactorer/lazy?recipe="+recipe+"&input-graph="+inputGraph+"&output-graph="+outputGraph, true);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+
+ }
+ }
+ }
+ ajax.send(null);
+ }
+ }
+}
+
+Refactorer.prototype.runRefactoringFileLazy = function() {
+
+ var formEl = document.getElementById("iForm");
+ if(formEl != null){
+ formEl.submit();
+ }
+ /*var recipeEl = document.getElementById("recipe");
+ var inputGraphEl = document.getElementById("graph");
+
+ if(recipeEl!=null && inputGraphEl!=null){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ var recipe = recipeEl.value;
+ var inputGraph = inputGraphEl.value;
+
+ console.log("recipe: "+recipe+" - input: "+inputGraph);
+ ajax.open("post", "/kres/refactorer/lazy", true);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ console.log("Refactoring completed");
+ }
+ }
+ }
+
+ var parameters = "recipe='"+recipe+"'&input="+inputGraph
+ ajax.send(parameters);
+ }
+ }*/
+}
+
+Refactorer.prototype.showRefactoring = function(type, ns){
+ var contentTag = document.getElementById("refactoring");
+
+ var content = "";
+ if(contentTag != null){
+ var submit = "";
+ if(type == 0){
+ content += getGraphs("input-graph", ns);
+ content += "Output graph ID<br><input type=\"text\" id=\"output-graph\" name=\"output-graph\">";
+
+ submit = "<input type=\"submit\" value=\"run refactoring\" onClick=\"javascript:var refactorer = new Refactorer(); refactorer.runRefactoringStoreLazy()\">";
+ }
+ else{
+ content += "<form id=\"iForm\" action=\"/kres/refactorer/lazy\" method=\"post\" enctype=\"multipart/form-data\" onsubmit=\"alert(\"finito\")\">";
+ content += "Select a graph from file: <input id=\"graph\" type=\"file\" name=\"input\"><br>";
+
+ submit += "<input type=\"button\" value=\"run refactoring\" onclick=\"var refactorer=new Refactorer(); refactorer.runRefactoringFileLazy();\"></form>";
+
+ }
+
+ content += getRecipies();
+ content += submit;
+
+ contentTag.style.display = 'block';
+ contentTag.innerHTML = content;
+ }
+}
+
+function Storage(){
+ return this;
+}
+
+Storage.prototype.loadGraph = function(graphID) {
+ graphID = graphID.replace("<", "").replace(">", "").replace("#", "%23");
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+
+ ajax.open("get", "/kres/graphs/"+graphID, true);
+ ajax.setRequestHeader("Accept", "application/rdf+xml");
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var response = ajax.responseText;
+ if(response != null){
+ var div = document.getElementById("graphDIV");
+ if(div != null){
+ response = response.replaceAll("<", "<").replaceAll(">", ">");
+ div.innerHTML = "<code class=\"code\">"+response+"</code>";
+ div.style.display = 'block';
+ }
+ }
+ }
+ }
+ }
+
+ ajax.send(null);
+ }
+}
+
+function Demo(){
+ return this;
+}
+
+
+Demo.prototype.ruleListRemove = function(){
+ var ajaxrules = getXMLHttpRequest();
+ if(ajaxrules!=null){
+ //alert("RULE LIST");
+ //GET ALL RULES ASSOCIATED TO THE RECIPE:
+ //get all rules for the recipeID
+ ajaxrules.open("get", "/kres/recipe/http://kres.iks-project.eu/recipe/integrity", true);
+ ajaxrules.setRequestHeader("Accept", "application/rdf+json");
+ ajaxrules.onreadystatechange = function() {
+ if(ajaxrules.readyState == 4) {
+ //alert("STATE 4");
+ if (ajaxrules.status == 200 || ajaxrules.status == 409) {
+ //alert("STATE 200");
+ var jsonObjscope = ajaxrules.responseText;
+ var databank = $.rdf.databank().load(JSON.parse(jsonObjscope));
+ databank.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#');
+ databank.prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ databank.prefix('owl', 'http://www.w3.org/2002/07/owl#');
+ databank.prefix('rmi','http://kres.iks-project.eu/ontology/meta/rmi.owl#');
+
+ var rdfrules = $.rdf({databank:databank});
+ var rules = rdfrules.prefix('rmi', 'http://kres.iks-project.eu/ontology/meta/rmi.owl#').where('?recipe rmi:hasRule ?rule').select();
+
+ //alert(rules);
+ for(var subject in rules){
+ singlerule = rules[subject].rule.toString().replace('<', '').replace('>', '');;
+ if(singlerule.search("demo_")!=-1)
+ if(singlerule.search("string")==-1){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ //alert(singlerule);
+ ajax.open("delete", "/kres/rule?rule="+singlerule+"&recipe=http://kres.iks-project.eu/recipe/integrity", true);
+ ajax.onreadystatechange = function() {
+ if(ajax.readyState == 4) {
+ //alert("DELETE 4");
+ if (ajax.status == 200 || ajax.status == 404) {
+ //alert("DELETE RULE FOR RECIPE: "+singlerule);
+ }
+ }
+ }
+ ajax.send(null);
+ }
+ }
+
+ }
+ }
+ }
+ }
+ ajaxrules.send(null);
+ }
+
+}
+
+/*
+ Function to reset the scope, the session and the ontology.
+ This function will run every time a new scope is created.
+*/
+Demo.prototype.reset = function(){
+ //alert("::::::: provo reset :::::::::::::");
+
+ var ajaxscope = getXMLHttpRequest();
+
+ if(ajaxscope != null){
+ //get all the scope
+ ajaxscope.open("get", "/kres/ontology", true);
+ ajaxscope.setRequestHeader("Accept", "application/rdf+json");
+ //alert("::::::: ajaxscope :::::::::");
+ ajaxscope.onreadystatechange = function() {
+ if(ajaxscope.readyState == 4) {
+ if (ajaxscope.status == 200 || ajaxscope.status == 409) {
+ //alert("::::::::::: dentro ajaxscope ::::::::::");
+ //var contentDIV = document.getElementById("content");
+ var jsonObjscope = ajaxscope.responseText;
+ var databank = $.rdf.databank().load(JSON.parse(jsonObjscope));
+ databank.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#');
+ databank.prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ databank.prefix('owl', 'http://www.w3.org/2002/07/owl#');
+
+ var rdfscope = $.rdf({databank:databank});
+ var scopes = rdfscope.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#').where('?scope a onm:Scope').select();
+
+ //get all sessions those are related to scope linkeddata
+ var ajaxsession = getXMLHttpRequest();
+ if(ajaxsession != null){
+ //alert(":::::::: ajaxsession ::::::::");
+ ajaxsession.open("get", "/kres/session", true);
+ ajaxsession.setRequestHeader("Accept", "application/rdf+json");
+
+ ajaxsession.onreadystatechange = function() {
+
+ if(ajaxsession.readyState == 4) {
+ if (ajaxsession.status == 200 || ajaxsession.status == 409) {
+ //alert(":::::: dentro ajaxsession ::::::::");
+ var jsonObjsession = ajaxsession.responseText;
+ var databank = $.rdf.databank().load(JSON.parse(jsonObjsession));
+
+ var rdfsession = $.rdf({databank:databank});
+
+ var sessionMeta = rdfsession.prefix('meta', 'http://kres.iks-project.eu/ontology/onm/meta.owl#').where('?session ?p ?id').select();
+
+ //Delete sessions
+ var sessionID;
+ for(var subject in sessionMeta){
+ sessionID = sessionMeta[subject].id.toString().replace('<', '').replace('>', '');
+ if(sessionID.search("session")!=-1)
+ if(sessionID.search("refactor")==-1){
+ try{
+ for(var scope in scopes){
+ var scopeID = scopes[scope].scope.toString().replace('<', '').replace('>', '');
+
+ if(scopeID.search("linkeddata")!=-1){
+ var ajaxdeletesession = getXMLHttpRequest();
+ if(ajaxdeletesession!=null){
+ ajaxdeletesession.open("delete","/kres/session?scope="+scopeID+"&session="+sessionID, true);
+ /*ajaxdeletesession.onreadystatechange = function() {
+ if(ajaxdeletesession.readyState == 4) {
+ if (ajaxdeletesession.status == 200 || ajaxdeletesession.status == 409) {
+ //alert("::::: reset session with scope :::::::::\n/kres/session?scope="+scopeID+"&session="+sessionID);
+ }
+ }
+ }*/
+ ajaxdeletesession.send(null);
+ //alert("::::: reset session with scope :::::::::\n/kres/session?scope="+scopeID+"&session="+sessionID);
+ }
+ }
+ }
+ }catch(err){}//alert("err delete session\n"+err)}
+ }
+ }
+
+ //Delete scope
+ try{
+ for(var scope in scopes){
+ var scopeID = scopes[scope].scope.toString().replace('<', '').replace('>', '');
+ if(scopeID.search("linkeddata")!=-1){
+ var ajaxdelete = getXMLHttpRequest();
+ if(ajaxdelete!=null){
+ ajaxdelete.open("delete",scopeID, true);
+ /*ajaxdelete.onreadystatechange = function() {
+ if(ajaxdelete.readyState == 4) {
+ if (ajaxdelete.status == 200 || ajaxdelete.status == 409 || ajaxdelete.status == 204) {
+ //alert("::::: unregister scope ::::::: "+scopeID);
+ }
+ }
+ }*/
+ ajaxdelete.send(null);
+ //alert("::::: unregister scope ::::::: "+scopeID);
+ }
+ }
+ }
+ }catch(err){}//alert("err delete scope\n"+err)}
+
+ }
+ }
+ }
+ }
+ ajaxsession.send(null);
+ }
+ }
+ }
+ ajaxscope.send(null);
+ }
+}
+
+/*
+ Function to reset the scope, the session and the ontology.
+ This function will run every time a new scope is created.
+*/
+Demo.prototype.reset2 = function(){
+ //alert("::::::: provo reset :::::::::::::");
+
+ var scopes;
+ var sessionMeta;
+ try{
+ //get all the scope linkeddata
+ var ajaxscope = getXMLHttpRequest();
+ if(ajaxscope != null){
+ ajaxscope.open("get", "/kres/ontology", true);
+ ajaxscope.setRequestHeader("Accept", "application/rdf+json");
+ ajaxscope.onreadystatechange = function() {
+ if(ajaxscope.readyState == 4) {
+ if (ajaxscope.status == 200 || ajaxscope.status == 409) {
+ var jsonObj = ajaxscope.responseText;
+ var databank = $.rdf.databank().load(JSON.parse(jsonObj));
+ databank.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#');
+ databank.prefix('rdf', 'http://www.w3.org/1999/02/22-rdf-syntax-ns#');
+ databank.prefix('owl', 'http://www.w3.org/2002/07/owl#');
+
+ var rdf = $.rdf({databank:databank});
+
+ scopes = rdf.prefix('onm', 'http://kres.iks-project.eu/ontology/onm/meta.owl#').where('?scope a onm:Scope').select();
+
+ }
+ }
+ }
+ ajaxscope.send(null);
+ }
+ //alert(scopes);
+ //Get all the session related to the linkeddata
+ var ajaxsession = getXMLHttpRequest();
+ if(ajaxsession != null){
+ ajaxsession.open("get", "/kres/session", true);
+ ajaxsession.setRequestHeader("Accept", "application/rdf+json");
+
+ ajaxsession.onreadystatechange = function() {
+
+ if(ajaxsession.readyState == 4) {
+ if (ajaxsession.status == 200 || ajaxsession.status == 409) {
+ var jsonObjsession = ajaxsession.responseText;
+ var databank = $.rdf.databank().load(JSON.parse(jsonObjsession));
+ databank.prefix('meta', 'http://kres.iks-project.eu/ontology/onm/meta.owl#');
+ var rdfsession = $.rdf({databank:databank});
+
+ sessionMeta = rdfsession.prefix('meta', 'http://kres.iks-project.eu/ontology/onm/meta.owl#').where('?session ?p ?id').select();
+ }
+ }
+ }
+ ajaxsession.send(null);
+ }
+ //alert(sessionMeta);
+ //Delete sessions
+ var sessionID;
+ for(var subject in sessionMeta){
+ sessionID = sessionMeta[subject].id.toString().replace('<', '').replace('>', '');
+ if(sessionID.search("session")!=-1)
+ if(sessionID.search("refactor")==-1){
+ try{
+ for(var scope in scopes){
+ var scopeID = scopes[scope].scope.toString().replace('<', '').replace('>', '');
+ if(scopeID.search("linkeddata")!=-1){
+ var ajaxdeletesession = getXMLHttpRequest();
+ if(ajaxdeletesession!=null){
+ //alert("::::\n"+scopeID+" "+sessionID+"\n::::");
+ ajaxdeletesession.open("delete","/kres/session?scope="+scopeID+"&session="+sessionID, true);
+ ajaxdeletesession.onreadystatechange = function() {
+ if(ajaxdeletesession.readyState == 4) {
+ if (ajaxdeletesession.status == 200 || ajaxdeletesession.status == 409) {
+ //alert("::::: reset session with scope :::::::::\n/kres/session?scope="+scopeID+"&session="+sessionID);
+ }
+ }
+ }
+ ajaxdeletesession.send(null);
+ }
+ }
+ }
+ }catch(err){}//alert("err delete session\n"+err)}
+ }
+ }
+
+ //Delete scope
+ try{
+ for(var scope in scopes){
+ var scopeID = scopes[scope].scope.toString().replace('<', '').replace('>', '');
+ if(scopeID.search("linkeddata")!=-1){
+ var ajaxdelete = getXMLHttpRequest();
+ if(ajaxdelete!=null){
+ ajaxdelete.open("delete",scopeID, true);
+ ajaxdelete.onreadystatechange = function() {
+ if(ajaxdelete.readyState == 4) {
+ if (ajaxdelete.status == 200 || ajaxdelete.status == 409 || ajaxdelete.status == 204) {
+ //alert("::::: unregister scope ::::::: "+scopeID);
+ }
+ }
+ }
+ ajaxdelete.send(null);
+ }
+ }
+ }
+ }catch(err){}//alert("err delete scope\n"+err)}
+
+ }catch(err){}//alert("::: reset error :::: "+err);}
+}
+
+Demo.prototype.enhance = function() {
+
+ var data = {
+ content: $("#textInput").val(),
+ ajax: false,
+ format: "application/rdf+json"
+ };
+
+ $.ajax({
+ type: "POST",
+ url: "/engines",
+ data: data,
+ dataType: "html",
+ cache: false,
+ success: function(result) {
+
+ //alert(result);
+
+ var databank = $.rdf.databank().load(JSON.parse(result));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var references = rdf.prefix('fise', 'http://fise.iks-project.eu/ontology/')
+ .where('?subject fise:entity-reference ?reference')
+ .select();
+ var content = "<br><br><ul class=\"indent\">";
+
+ var arrRefs = new Array();
+
+ for(var subject in references){
+ var referenceURI = references[subject].reference.toString().replace("<", "").replace(">", "");
+ arrRefs.push(referenceURI);
+ }
+
+ arrRefs = unique(arrRefs);
+
+ for(var uriRef in arrRefs){
+ var uri = arrRefs[uriRef];
+ content += "<li id=\""+uri+"\">"+uri+"<input type=\"hidden\" name=\"hasReference\" value=\""+uri+"\">";
+ }
+ content += "</ul>";
+
+ content += "<br><br>";
+ content += "<div id=\"creating-scope\" class=\"hide\">Creating scope <img class=\"small\" src=\"/kres/static/images/loadingSmall.gif\"></div>";
+ content += "<br><br>";
+
+
+ content += "<input id=\"addToONM\" type=\"button\" value=\"add to the ON\" onClick=\"javascript: var timestamp = new Date().getTime(); scopeName = 'linkeddata' + timestamp;var demo=new Demo(); demo.createScopeAndSession(scopeName, null, 'http://ontologydesignpatterns.org/ont/iks/kres/dbpedia_demo.owl', null, null, true)\">";
+ content += "<div id=\"addSessionWait\" class=\"hide\" stype=\"margin-top:20px;\">";
+ content += "<center><img src=\"/kres/static/images/loadingSmall.gif\"></center>";
+ content += "</div>";
+
+ //content += "<input type=\"button\" value=\"integrity check\" onClick=\"javascript:var demo=new Demo; demo.integrityCheckFISE()\">";
+
+ $("#fiseResult").show();
+ $("#fiseResult").html(content);
+ },
+ error: function(result) {
+ $("#fiseResult").show();
+ $("#fiseResult").html("Problem to connect to the Geonames Server. It could be necessary to try several times.");
+ }
+ });
+ $("#fiseResult").show();
+ $("#fiseResult").html("<center><img src=\"/kres/static/images/loadingSmall.gif\"></center>");
+
+}
+
+Demo.prototype.createScopeAndSession = function(scopeID, corereg, coreont, customreg, customont, activate){
+
+ //alert(":::::::::: createScopeAndSession :::::::::::: SCOPE: "+scopeID);
+
+ if(scopeID != null){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ var parameters = "";
+
+ if(corereg != null && corereg != ''){
+ parameters += "corereg="+corereg;
+ }
+ if(coreont != null && coreont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "coreont="+coreont;
+ }
+ if(customreg != null && customreg != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customreg="+customreg;
+ }
+ if(customont != null && customont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customont="+customont;
+ }
+
+ if(parameters != ''){
+ parameters += "&";
+ }
+ if(activate!=null){
+ if(activate){
+ parameters += "activate=true";
+ }
+ else{
+ parameters += "activate=false";
+ }
+ }
+ else{
+ parameters += "activate=false";
+ }
+
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200 || ajax.status == 409) {
+
+
+
+ var ajax2 = getXMLHttpRequest();
+ if(ajax2 != null){
+ ajax2.open("post", "/kres/session", true);
+ ajax2.setRequestHeader("Accept", "application/rdf+json");
+ ajax2.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+
+
+ ajax2.onreadystatechange = function() {
+
+ if(ajax2.readyState == 4) {
+ if (ajax2.status == 200 || ajax2.status == 409) {
+
+ var sessionJSON = ajax2.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(sessionJSON));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var sessionMeta = rdf.prefix('meta', 'http://kres.iks-project.eu/ontology/onm/meta.owl#')
+ .where('?session meta:hasID ?id')
+ .select();
+ var sessionID;
+ for(var subject in sessionMeta){
+ sessionID = sessionMeta[subject].id;
+ //alert(":::::::::::: createScopeAndSession ::::::::::::: SESSION: "+sessionID);
+ }
+
+ var resources = document.getElementsByName("hasReference");
+
+ var count = 0;
+
+ for(var i=0; i<resources.length; i++){
+ var resource = resources[i].value;
+ //dataset += "<owl:imports rdf:resource=\""+resource+"\"/>";
+ count++;
+
+ var demo = new Demo();
+
+ demo.addSession(scopeID, sessionID, resource, count, resources.length);
+
+
+ }
+
+ $("#creating-scope").hide();
+
+ var divIMG = document.getElementById("addSessionWait");
+
+ var content = "<fieldset><legend> Integrity constraints</legend>";
+ content += "<ul id=\"ruleUL\" class=\"indent\"></ul>";
+ content += "<a href=\"javascript:var demo=new Demo(); demo.ruleListRemove(); demo.addIntegrityRule(true);\">add new rule for the integrity check</a>";
+ content += "</fieldset>";
+ content += "<div id=\"integrityDemoDIV\" class=\"hide\" stype=\"margin-top:20px;\">";
+ content += "<input type=\"button\" id=\"runIntegrity\" value=\"check integrity\" onClick=\"javascript: var demo=new Demo(); demo.integrityCheck('"+scopeID+"')\">";
+ content += "<br><br>";
+ //content += "<h3>Valid contents</h3>";
+ content += "<ul id=\"validContent\" class=\"indent\"></ul>";
+
+ divIMG.innerHTML = "<br><br><center>Resources added to the session space</center><br><br>"+content;
+ divIMG.style.display = 'block';
+
+ }
+ }
+ }
+
+ //alert(scopeID);
+
+ ajax2.send("scope=http://150.146.88.63:9191/kres/ontology/"+scopeID);
+ }
+
+ }
+ }
+ }
+
+
+ ajax.open("put", "/kres/ontology/"+scopeID+"?"+parameters, true);
+
+ $("#creating-scope").show();
+
+ ajax.send(null);
+
+
+ }
+ }
+
+
+
+
+}
+
+
+Demo.prototype.addSession = function(scopeID, sessionID, resource, count, length){
+
+ //alert(":::::::::::: addSessions :::::::::::: "+sessionID);
+ var ajax3 = getXMLHttpRequest();
+ if(ajax3 != null){
+
+ var session = sessionID.toString().split("^")[0].replace("\"", "").replace("\"", "");
+ var scopeIRI = "http://150.146.88.63:9191/kres/ontology/"+scopeID;
+ ajax3.open("put", "/kres/session?scope="+scopeIRI+"&session="+session+"&location="+resource, true);
+ ajax3.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+
+ var resourceElement = document.getElementById(resource);
+
+ ajax3.onreadystatechange = function() {
+
+ if(ajax3.readyState == 4) {
+ var resourceElement = document.getElementById("load-"+resource);
+ if (ajax3.status == 200) {
+
+ resourceElement.innerHTML = "<img src=\"/kres/static/images/ok.gif\">";
+
+ }
+ else if(ajax3.status == 500){
+ resourceElement.innerHTML = "<img src=\"/kres/static/images/delete.gif\">";
+ }
+ }
+ }
+ resourceElement.innerHTML = resourceElement.innerHTML + " <span id=\"load-"+resource+"\"><img class=\"small\" src=\"/kres/static/images/loadingSmall.gif\"></span>";
+
+ ajax3.send(null);
+ }
+}
+
+Demo.prototype.addIntegrityRule = function(showForm){
+ if(showForm){
+ var content2 = "<div id=\"popupbox\">" +
+ "Rule in KReSRule Syntax:" +
+ "<center><textarea id=\"rulearea\">dbpedia = <http://dbpedia.org/ontology/> . ruleIntegrity[has(dbpedia:product, ?x, ?product) . is(dbpedia:Organisation, ?x) -> is(dbpedia:ValidContent, ?x)]</textarea></center><br><br>" +
+ "<center><input type=\"button\" value=\"add\" onClick=\"javascript: var demo=new Demo(); demo.addIntegrityRule(false);\"></center>"+
+ "</div>";
+
+ TINY.box.show(content2,0,0,0,1);
+ TINY.box.resize;
+ }
+ else{
+ var ruleText=document.getElementById('rulearea').value;
+ var recipe=new Recipe();
+ var rule=new Rule();
+
+ //recipe.addNewRecipe('http://kres.iks-project.eu/recipe/integrity', 'Integrity recipe', rule.addNewRule, 'http://kres.iks-project.eu/rule/integrity', ruleText, 'Integrity rule', rule);
+ recipe.addNewRecipe('http://kres.iks-project.eu/recipe/integrity', 'Integrity recipe', rule.addNewRule, window.ruleName, ruleText, 'Integrity rule', rule);
+ }
+
+}
+
+
+Demo.prototype.integrityCheck = function(scopeID) {
+ var ajax = getXMLHttpRequest();
+ ajax.open("post", "http://150.146.88.63:9191/kres/classify/demo", true);
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200 || ajax.status == 409) {
+ var json = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(json));
+
+ var rdf = $.rdf({databank:databank});
+ var validContents = null;
+ validContents = rdf.prefix('dbpedia', 'http://dbpedia.org/ontology/')
+ .where('?content a dbpedia:ValidContent')
+ .select();
+ var content="";
+ //alert("FIRST "+content);
+ for(var validContent in validContents){
+ content += "<li>"+validContents[validContent].content.toString().replace('<', '').replace('>', '');
+ }
+ //alert("AFTER "+content);
+ //alert(content!="");
+ if(content!=""){
+ $("#validContent").html("<h3>Valid contents</h3>"+content);
+ }else{
+ $("#validContent").html("<h3>No valid contents</h3><br/><h3>Check the rule and if necessary change it</h3>");
+ }
+ }
+ }
+ }
+
+ $("#validContent").html("<center><img src=\"/kres/static/images/loadingSmall.gif\"></center>");
+ var params = "scope=http://150.146.88.63:9191/kres/ontology/" + scopeID + "&recipe=http://kres.iks-project.eu/recipe/integrity"
+ ajax.send(params);
+
+
+}
+
+Demo.prototype.integrityCheckFISE = function() {
+
+ var resources = document.getElementsByName("hasReference");
+
+ var scope = new Scope();
+ scope.create(scopeName, null, "http://ontologydesignpatterns.org/ont/iks/kres/dbpedia_3.5.1.owl", null, null, true, true);
+
+
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ ajax.open("get", "http://150.146.88.63:9191/kres/ontology/" + scopeName + "/http://dbpedia.org/ontology/", true);
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var code = "<pre>"+ajax.responseText+"</pre>";
+ var el = document.getElementById("fiseResult");
+ el.innerHTML = el.innerHTML + code;
+ }
+ }
+ }
+ ajax.send(null);
+ }
+}
+
+String.prototype.startsWith = function(str){
+ return (this.indexOf(str) === 0);
+}
+
+
+function Graph() {
+ return this;
+}
+
+Graph.prototype.load = function(uri, asynchronous) {
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ if(asynchronous){
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+
+ }
+ }
+ }
+ }
+ else{
+ ajax.open("get", uri,false);
+ ajax.send(null);
+
+ if (ajax.status==200){
+ return ajax.responseXML;
+ }
+
+ }
+ }
+}
+
+function Scope() {
+ return this;
+}
+
+Scope.prototype.create = function(scopeID, corereg, coreont, customreg, customont, activate, asynchronous) {
+
+ //alert(":::::::::::::: scope ::::::::::::::::: "+scopeID);
+
+ if(scopeID != null){
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ var parameters = "";
+
+ if(corereg != null && corereg != ''){
+ parameters += "corereg="+corereg;
+ }
+ if(coreont != null && coreont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "coreont="+coreont;
+ }
+ if(customreg != null && customreg != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customreg="+customreg;
+ }
+ if(customont != null && customont != ''){
+ if(parameters != ''){
+ parameters += "&";
+ }
+ parameters += "customont="+customont;
+ }
+
+ if(parameters != ''){
+ parameters += "&";
+ }
+ if(activate!=null){
+ if(activate){
+ parameters += "activate=true";
+ }
+ else{
+ parameters += "activate=false";
+ }
+ }
+ else{
+ parameters += "activate=false";
+ }
+
+ if(asynchronous){
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+
+
+ }
+ }
+ }
+
+
+ ajax.open("put", "/kres/ontology/"+scopeID+"?"+parameters, true);
+ //console.log(parameters);
+ ajax.send(null);
+ }
+ else{
+ ajax.open("put", "/kres/ontology/"+scopeID+"?"+parameters, false);
+ //console.log(parameters);
+ ajax.send(null);
+ if (ajax.status==200){
+
+ }
+ else if(ajax.status==409){
+
+ }
+
+ }
+
+ }
+ }
+}
+
+function Session() {
+ return this;
+}
+
+Session.prototype.create = function(scopeID, asynchronous) {
+
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("post", "/kres/session", false);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+
+
+ if(asynchronous){
+
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+
+ var databank = $.rdf.databank().load(JSON.parse(sessionJSON));
+
+ var rdf = $.rdf({databank:databank});
+
+
+ var sessionMeta = rdf.prefix('meta', 'http://kres.iks-project.eu/ontology/onm/meta.owl#')
+ .where('?session meta:hasID ?id')
+ .select();
+ var sessionID;
+ for(var subject in sessionMeta){
+ sessionID = sessionMeta[subject].id;
+ }
+ //alert(" :::::::::: session :::::::::::: "+sessionID);
+ window.sessionID = sessionID;
+
+
+ for(var i=0; i<resources.length; i++){
+ var resource = resources[i].value;
+ //dataset += "<owl:imports rdf:resource=\""+resource+"\"/>";
+ session.addOntology("http://150.146.88.63:9191/kres/ontology/"+scopeName, sessionID, resource);
+ }
+ }
+ }
+ }
+ }
+
+ ajax.send("scope=http://150.146.88.63:9191/kres/ontology/"+scopeID);
+ }
+}
+
+Session.prototype.addOntology = function(scopeID, sessionID, ontology) {
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+
+ var session = sessionID.toString().split("^")[0].replace("\"", "").replace("\"", "");
+ ajax.open("put", "/kres/session?scope="+scopeID+"&session="+session+"&location="+ontology, false);
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var reasoner = new Reasoner();
+ reasoner.classify(scopeName);
+ }
+ }
+ }
+
+
+ ajax.send(null);
+
+ }
+}
+
+function Reasoner() {
+ return this;
+}
+
+Reasoner.prototype.classify = function(scopeID, sessionID, recipe) {
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("post", "/kres/classify", false);
+ ajax.setRequestHeader("Accept", "multipart/form-data");
+ ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ }
+ }
+ }
+ ajax.send("session="+sessionID+"&scope="+scopeID+"&recipe="+recipe);
+ }
+}
+
+
+function Scope() {
+ return this;
+}
+
+Scope.prototype.describe = function(scopeID) {
+ var ajax = getXMLHttpRequest();
+ if(ajax != null){
+ ajax.open("get", "/kres/ontology/"+scopeID, false);
+ ajax.setRequestHeader("Accept", "application/rdf+json");
+ ajax.onreadystatechange = function() {
+
+ if(ajax.readyState == 4) {
+ if (ajax.status == 200) {
+ var json = ajax.responseText;
+
+ var databank = $.rdf.databank().load(JSON.parse(json));
+
+ var rdf = $.rdf({databank:databank});
+
+
+
+ var cores = rdf.prefix('kres', 'http://kres.iks-project.eu/scopes#')
+ .where('?scope kres:hasCoreOntology ?core')
+ .select();
+ var content = "<div class=\"indent\"><p>Core ontologies</p>" +
+ "<ul class=\"indent\">";
+ for(var core in cores){
+ content += "<li>"+cores[core].core.toString().replace('<', '').replace('>', '');
+ }
+ content += "</ul></div>";
+
+ customs = rdf.prefix('kres', 'http://kres.iks-project.eu/scopes#')
+ .where('?scope kres:hasCustomOntology ?custom')
+ .select();
+ content += "<div class=\"indent\"><p>Custom ontologies</p>" +
+ "<ul class=\"indent\">";
+ for(var custom in customs){
+ content += "<li>"+customs[custom].custom.toString().replace('<', '').replace('>', '');
+ }
+ content += "</ul></div>";
+
+ var div = document.getElementById("description-"+scopeID);
+ if(div != null){
+ div.innerHTML = div.innerHTML + content;
+ }
+ }
+ }
+ }
+ ajax.send(null);
+ }
+}
+
+
+String.prototype.replaceAll = function(stringToFind,stringToReplace){
+var temp = this;
+var index = temp.indexOf(stringToFind);
+ while(index != -1){
+ temp = temp.replace(stringToFind,stringToReplace);
+ index = temp.indexOf(stringToFind);
+ }
+ return temp;
+}
+
+function unique(arr) {
+ var r = new Array();
+ o:for(var i = 0, n = arr.length; i < n; i++)
+ {
+ for(var x = 0, y = r.length; x < y; x++)
+ {
+ if(r[x]==arr[i])
+ {
+ continue o;
+ }
+ }
+ r[r.length] = arr[i];
+ }
+ return r;
+}
\ No newline at end of file
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/kres.js.bck
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/kres.css
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/kres.css?rev=1135486&view=auto
==============================================================================
--- incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/kres.css (added)
+++ incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/kres.css Tue Jun 14 11:12:32 2011
@@ -0,0 +1,9 @@
+div.dataSourceCheck {
+ display:none;
+ margin-left: 20px
+}
+
+div.dataSourceSubCheck{
+ display:none;
+ margin-left: 20px
+}
\ No newline at end of file
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/kres.css
------------------------------------------------------------------------------
svn:executable = *
Added: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/prettify.css
URL: http://svn.apache.org/viewvc/incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/prettify.css?rev=1135486&view=auto
==============================================================================
--- incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/prettify.css (added)
+++ incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/prettify.css Tue Jun 14 11:12:32 2011
@@ -0,0 +1,27 @@
+/* Pretty printing styles. Used with prettify.js. */
+
+.str { color: #080; }
+.kwd { color: #008; }
+.com { color: #800; }
+.typ { color: #606; }
+.lit { color: #066; }
+.pun { color: #660; }
+.pln { color: #000; }
+.tag { color: #008; }
+.atn { color: #606; }
+.atv { color: #080; }
+.dec { color: #606; }
+pre.prettyprint { padding: 2px; border: 1px solid #888; }
+
+@media print {
+ .str { color: #060; }
+ .kwd { color: #006; font-weight: bold; }
+ .com { color: #600; font-style: italic; }
+ .typ { color: #404; font-weight: bold; }
+ .lit { color: #044; }
+ .pun { color: #440; }
+ .pln { color: #000; }
+ .tag { color: #006; font-weight: bold; }
+ .atn { color: #404; }
+ .atv { color: #060; }
+}
Propchange: incubator/stanbol/trunk/reasoners/demo/integritycheck/src/main/resources/META-INF/static/scripts/prettify/prettify.css
------------------------------------------------------------------------------
svn:executable = *