var tree; var ontologies = {}; var jsonTreeData = []; function destroyOntologyTree() { if (jsonTreeData.lenght == 1) { if (jsonTreeData[0].children) { jsonTreeData[0].children = []; } } if (tree) { tree.destroy(); } } function onTreeNodeClick(NODE, TREE_OBJ) { if (NODE.childNodes.length == 1) { var ontologyURI = NODE.id.substring(16); var children = []; if (ontologies[ontologyURI]) { for ( var i = 0; i < ontologies[ontologyURI].length; i++) { var ontologyName = ontologies[ontologyURI][i]; TREE_OBJ.create({ attributes : { 'id' : randomString() + ontologyName }, data : ontologyName, state : "closed", children : [] }, NODE); } } } } function initOntologyTree() { jQuery("div#RDFExtractorOntologyTree").empty(); tree = jQuery.tree_create(); tree.init(jQuery("#RDFExtractorOntologyTree"), { data : { type : "json", json : jsonTreeData }, ui : { theme_name : "classic", context : [ { id : "open", label : "Open ontology", icon : "open.png", visible : function(NODE, TREE_OBJ) { }, action : function(NODE, TREE_OBJ) { // here node is jquery element var id = NODE.attr("id"); var ontologyURI = id.substring(16); window.open(ontologyURI, ontologyURI, 'width=800,height=600'); } } ] }, callback : { onselect : function(NODE, TREE_OBJ) { //alert("select"); }, onopen : function(NODE, TREE_OBJ) { onTreeNodeClick(NODE, TREE_OBJ); }, ondblclk : function(NODE, TREE_OBJ) { // here NODE is javascript node element var id = NODE.id; var ontologyURI = id.substring(16); window.open(ontologyURI, ontologyURI, 'width=800,height=600'); //TREE_OBJ.toggle_branch.call(TREE_OBJ, NODE); //TREE_OBJ.select_branch.call(TREE_OBJ, NODE); //onTreeNodeClick(NODE, TREE_OBJ); } }, rules : { renameable : "none", deletable : "none", creatable : "all" } }); } function getOntologiesList(url, onto) { var ontologiesList = []; for ( var i = 0; i < onto.bindings.length; i++) { var triple = onto.bindings[i]; var s = triple.s; var p = triple.p; var o = triple.o; var sv = "" + triple.s.value; var pv = "" + triple.p.value; var ov = "" + triple.o.value; if (sv != url && jQuery.inArray(sv, ontologiesList) == -1) { ontologiesList.push(sv); } if (ov != url && jQuery.inArray(ov, ontologiesList) == -1) { ontologiesList.push(ov); } } return ontologiesList; } function buildJsonTreeData(url, onto) { for ( var i = 0; i < onto.bindings.length; i++) { var triple = onto.bindings[i]; var s = triple.s; var p = triple.p; var o = triple.o; var sv = triple.s.value; var pv = triple.p.value; var ov = triple.o.value; if (!ontologies["" + sv]) { ontologies["" + sv] = []; } ontologies["" + sv].push(ov); } jsonTreeData.push({ attributes : { id : randomString() + url }, state : "open", data : url, children : [] }); if (ontologies[url]) { for ( var i = 0; i < ontologies[url].length; i++) { var ontologyName = ontologies[url][i]; jsonTreeData[0].children.push({ attributes : { 'id' : randomString() + ontologyName }, data : ontologyName, state : "closed", children : [] }); } } return jsonTreeData; } function printOntologyList(o) { jQuery("div#RDFExtractorOntologyList").append( ""); } function printOntologyLink(parameters) { var id = randomString(); var html = '
' + 'Full ontology tree is available if you ' + '' + ' using reasoning.' + '

' + '
'; jQuery("div.ontologiesInspectAgain").show(); jQuery("div.ontologiesBox").hide(); jQuery("div.ontologiesInspectAgain").empty().append(html); jQuery("#" + id).button({ icons : { primary : 'ui-icon-refresh' } }).click(function() { jQuery("div.ontologiesInspectAgain").hide(); jQuery("div.ontologiesBox").show(); // here we can not reload the page (for contennt , an empty url it would not work !!!) // we have to set doReasoning=1 //invoke the runRDFExtractor(parameters) parameters.doReasoning = "1"; runRDFExtractor(parameters); }); }