Changeset 29431 for main/trunk/model-sites-dev
- Timestamp:
- 2014-11-14T14:26:23+13:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/model-sites-dev/von-sparql/js/von-sparql-script.js
r28914 r29431 1 //Sparql overview script 2 //Query generation code is fairly messy, watch out! 3 4 //Creates a new query 5 //containerID: ID of div to draw results in 6 //hardLimit: Returned results limit 1 7 function newQuery(containerID, GraphType,hardLimit){ 2 3 4 5 6 7 8 var Q = new sgvizler.Query(); 9 Q.query(generateQuery(hardLimit)) 10 .endpointURL(sparqlEndpoint) 11 .endpointOutputFormat("json") 12 .chartFunction($('#sel_ChartType').val()) 13 .draw(containerID); 8 14 } 9 15 … … 16 22 } 17 23 24 //Generates a query based on the predicates etc selected by the user 18 25 function generateQuery(hardLimit){ 19 20 26 var predicateURL = $('#sel_Predicate').val(); 27 var sparqlQuery = ""; 21 28 22 29 //Fix to make queries work when object starts with a '<' or '>' 23 24 30 var speechMarks = "\""; 31 if($('#sel_RefineObject').val().substring(0,1)=="<") 25 32 speechMarks=""; 26 33 27 34 //Refine to specific graph if chosen 28 35 var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 29 36 var select; 30 37 var extra = ""; … … 56 63 } 57 64 58 59 65 sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 66 sparqlQuery += "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n"; 60 67 61 62 63 64 65 68 if(isRefinedQuery()) 69 sparqlQuery += select + 70 " " + refineDataset + 71 " ?s <"+ predicateURL + "> "+ speechMarks + $('#sel_RefineObject').val() + speechMarks +";\n" + 72 " <"+$('#sel_RefinePredicate').val() +"> ?o\n" 66 73 + extra + 67 74 "}\n" ; 68 69 70 71 75 else 76 sparqlQuery += select + 77 " " + refineDataset + 78 " ?s <" + predicateURL + "> ?o\n " 72 79 + extra + 73 80 "}\n"; 74 81 75 82 //add extra curly brace for end of GRAPH block 76 77 78 79 80 81 82 83 else 84 83 sparqlQuery+= "}\n"; 84 85 sparqlQuery += group; 86 87 //If a limit was selected, apply it 88 if($('#sel_Limit').val()!="None") 89 sparqlQuery += " LIMIT " + $('#sel_Limit').val(); 90 else 91 sparqlQuery += " LIMIT " + hardLimit; 85 92 86 93 … … 90 97 query = query.replace(/\n/g, '<br/>'); 91 98 92 $('#span_sparqlQuery').empty() ; 93 $('#span_sparqlQuery').html(query); 94 return sparqlQuery; 95 } 96 97 //Updates possiblel values for predicate selector 99 $('#span_sparqlQuery').empty() ; 100 $('#span_sparqlQuery').html(query); 101 return sparqlQuery; 102 } 103 104 //Updates possible values for predicate selector by sending a query to the 105 //triple-store requesting a list of all predicates. 98 106 function updatePredicateSelector(){ 99 107 var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(overviewSparqlQuery); 100 108 $.ajax({ 101 102 103 109 url: ajaxSparqlQuery, 110 type:"GET", 111 data:"output=json", 104 112 }) 105 113 .done(function( json ) { 106 107 108 109 110 111 112 113 114 114 var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 115 $.each(parsedJSON.results.bindings,function(index,item){ 116 var pred = item.Predicate.value; 117 var name = tidyPredicate(pred); 118 $('#sel_Predicate') 119 .append("<option value=\""+pred+"\">" + name + "</option>"); 120 $('#sel_RefinePredicate') 121 .append("<option value=\""+pred+"\">" + name + "</option>"); 122 }); 115 123 }); 116 124 } 117 125 118 //Fill in possible values for predicate 126 //Fill in possible values for 'refine' object selector, based on what predicate the user 127 //has selected before, only existing objects will be available. 119 128 function updateRefineObjectSelector(predicate){ 120 121 122 123 129 var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 130 131 var sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 132 sparqlQuery += "SELECT ?obj WHERE{"+ 124 133 refineDataset + 125 126 127 128 129 130 131 132 133 134 135 134 " ?s <"+predicate+"> ?obj }}"+ 135 "GROUP BY ?obj ORDER BY (?obj)"; 136 var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(sparqlQuery); 137 138 $.ajax({ 139 url: ajaxSparqlQuery, 140 type:"GET", 141 data:"output=json", 142 }) 143 .done(function( json ) { 144 var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 136 145 137 146 //Clear selector. Add empty option to start. 138 139 $('#sel_RefineObject')140 .append("<option value=\"None\"> </option>");141 142 143 147 $('#sel_RefineObject').empty(); 148 $('#sel_RefineObject') 149 .append("<option value=\"None\"> </option>"); 150 151 $.each(parsedJSON.results.bindings,function(index,item){ 152 var obj; 144 153 if(item.obj.type == "uri"){ 145 154 obj = "<" + item.obj.value + ">"; 146 147 155 $('#sel_RefineObject') 156 .append("<option value="+ obj + ">" + obj.substring(0,75) + "</option>"); 148 157 } 149 158 else{ 150 159 obj = item.obj.value; 151 152 160 $('#sel_RefineObject') 161 .append("<option value=\""+ obj +"\">" + obj.substring(0,75) + "</option>"); 153 162 } 154 163 }); 155 164 $('#sel_RefineObject').next().find('.custom-combobox-input').val(""); 156 }); 157 } 165 }); 166 } 167 168 //When the user has selected a predicate and an object to restrict it to, this predicate selector will update 169 //showing the predicates that are available for selection based on what triples will be returned from 170 //the restriction chosen. 158 171 159 172 function updateRefinePredicateSelector(obj){ 160 161 173 //Perform ajax query to return possible predicate values, given object and predicate values already chosen 174 var predicate = $('#sel_Predicate').val(); 162 175 var sparqlQuery; 163 176 if(obj.substring(0,1) == "<") 164 165 166 167 168 else 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 $('#sel_RefinePredicate')184 .append("<option value=\"None\"> </option>");185 186 187 188 189 190 177 sparqlQuery = "SELECT ?predicate WHERE{"+ 178 " ?s <" + predicate + "> "+ obj + ";"+ 179 " ?predicate ?o}"+ 180 "GROUP BY ?predicate ORDER BY DESC(?predicate)"; 181 else 182 sparqlQuery = "SELECT ?predicate WHERE{"+ 183 " ?s <" + predicate + "> \""+ obj + "\";"+ 184 " ?predicate ?o}"+ 185 "GROUP BY ?predicate ORDER BY DESC(?predicate)"; 186 var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(sparqlQuery); 187 188 $.ajax({ 189 url: ajaxSparqlQuery, 190 type:"GET", 191 data:"output=json", 192 }) 193 .done(function( json ) { 194 var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 195 $('#sel_RefinePredicate').empty(); 196 $('#sel_RefinePredicate') 197 .append("<option value=\"None\"> </option>"); 198 $.each(parsedJSON.results.bindings,function(index,item){ 199 var pred = item.predicate.value; 200 var name = tidyPredicate(pred); 201 $('#sel_RefinePredicate') 202 .append("<option value=\""+pred+"\">" + name + "</option>"); 203 }); 191 204 $('#sel_RefinePredicate').next().find('.custom-combobox-input').val(""); 192 }); 193 } 205 }); 206 } 207 208 209 //Hides search-refining elements of page when not needed 194 210 function toggle_RefineSearch(enable){ 195 if(enable) 196 { 197 211 if(enable) 198 212 $('#refineControls').toggle("slide", { direction: "up" }); 199 //$('#sel_RefinePredicate').removeAttr("disabled"); 200 //$('#sel_RefineObject').removeAttr("disabled"); 201 } 202 else 203 { 213 else 204 214 $('#refineControls').toggle("slide", { direction: "up" }); 205 //$('#sel_RefinePredicate').attr("disabled","disabled"); 206 //$('#sel_RefineObject').attr("disabled","disabled"); 207 } 208 } 209 215 } 216 217 //Tidys up a predicate for easy readability in dropdown lists. 210 218 function tidyPredicate(name) 211 219 { 212 213 214 215 216 } 217 220 name = name.replace("http://purl.org/dc/elements/1.1/","dc."); 221 name = name.replace("http://greenstone.org/gsembedded#","gsembedded."); 222 name = name.replace("http://greenstone.org/gsextracted#","gsextracted."); 223 return name; 224 } 225
Note:
See TracChangeset
for help on using the changeset viewer.