Changeset 29431

Show
Ignore:
Timestamp:
14.11.2014 14:26:23 (4 years ago)
Author:
sjs49
Message:

Made formatting changes to make code minutely easier to read

Files:
1 modified

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 
    17function newQuery(containerID, GraphType,hardLimit){ 
    2         var Q = new sgvizler.Query(); 
    3         Q.query(generateQuery(hardLimit)) 
    4             .endpointURL(sparqlEndpoint) 
    5             .endpointOutputFormat("json") 
    6             .chartFunction($('#sel_ChartType').val()) 
    7             .draw(containerID); 
     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); 
    814} 
    915 
     
    1622} 
    1723 
     24//Generates a query based on the predicates etc selected by the user 
    1825function generateQuery(hardLimit){ 
    19      var predicateURL = $('#sel_Predicate').val(); 
    20      var sparqlQuery = ""; 
     26    var predicateURL = $('#sel_Predicate').val(); 
     27    var sparqlQuery = ""; 
    2128 
    2229     //Fix to make queries work when object starts with a '<' or '>' 
    23      var speechMarks = "\""; 
    24      if($('#sel_RefineObject').val().substring(0,1)=="<")  
     30    var speechMarks = "\""; 
     31    if($('#sel_RefineObject').val().substring(0,1)=="<")  
    2532        speechMarks=""; 
    2633     
    2734    //Refine to specific graph if chosen 
    28     var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 
     35    var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 
    2936    var select; 
    3037    var extra = ""; 
     
    5663    } 
    5764 
    58     sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 
    59     sparqlQuery += "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n"; 
     65    sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 
     66    sparqlQuery += "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n"; 
    6067       
    61     if(isRefinedQuery()) 
    62        sparqlQuery += select + 
    63                      "  " + refineDataset + 
    64                      "    ?s <"+ predicateURL + "> "+ speechMarks + $('#sel_RefineObject').val() + speechMarks +";\n" + 
    65                      "      <"+$('#sel_RefinePredicate').val() +"> ?o\n" 
     68    if(isRefinedQuery()) 
     69    sparqlQuery += select + 
     70             "  " + refineDataset + 
     71             "    ?s <"+ predicateURL + "> "+ speechMarks + $('#sel_RefineObject').val() + speechMarks +";\n" + 
     72             "      <"+$('#sel_RefinePredicate').val() +"> ?o\n" 
    6673                     + extra + 
    6774                     "}\n" ; 
    68     else 
    69        sparqlQuery += select + 
    70                      "  " + refineDataset + 
    71                      "    ?s <" + predicateURL + "> ?o\n  "   
     75    else 
     76    sparqlQuery += select + 
     77             "  " + refineDataset + 
     78             "    ?s <" + predicateURL + "> ?o\n  "   
    7279                     + extra +  
    7380                     "}\n"; 
    7481         
    7582    //add extra curly brace for end of GRAPH block 
    76     sparqlQuery+= "}\n"; 
    77  
    78     sparqlQuery +=  group; 
    79  
    80     //If a limit was selected, apply it 
    81     if($('#sel_Limit').val()!="None") 
    82         sparqlQuery += " LIMIT " + $('#sel_Limit').val(); 
    83     else 
    84         sparqlQuery += " LIMIT " + hardLimit; 
     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; 
    8592         
    8693 
     
    9097    query = query.replace(/\n/g, '<br/>'); 
    9198 
    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. 
    98106function updatePredicateSelector(){ 
    99     var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(overviewSparqlQuery); 
     107    var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(overviewSparqlQuery); 
    100108        $.ajax({ 
    101             url: ajaxSparqlQuery, 
    102             type:"GET", 
    103             data:"output=json", 
     109        url: ajaxSparqlQuery, 
     110        type:"GET", 
     111        data:"output=json", 
    104112        }) 
    105113        .done(function( json ) { 
    106             var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 
    107             $.each(parsedJSON.results.bindings,function(index,item){ 
    108                 var pred  = item.Predicate.value; 
    109                 var name = tidyPredicate(pred); 
    110                 $('#sel_Predicate') 
    111                     .append("<option value=\""+pred+"\">" + name + "</option>"); 
    112                 $('#sel_RefinePredicate') 
    113                     .append("<option value=\""+pred+"\">" + name + "</option>"); 
    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        }); 
    115123        }); 
    116124} 
    117125 
    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. 
    119128function updateRefineObjectSelector(predicate){ 
    120      var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 
    121  
    122     var sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 
    123     sparqlQuery += "SELECT ?obj WHERE{"+ 
     129    var refineDataset = "GRAPH gsdl:" + collectionName + " {\n"; 
     130 
     131    var sparqlQuery = "PREFIX gsdl: <http://localhost:3030/greenstone/data/> \n"; 
     132    sparqlQuery += "SELECT ?obj WHERE{"+ 
    124133                      refineDataset +   
    125                       "   ?s <"+predicate+"> ?obj }}"+ 
    126                       "GROUP BY ?obj ORDER BY (?obj)"; 
    127     var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(sparqlQuery); 
    128  
    129     $.ajax({ 
    130         url: ajaxSparqlQuery, 
    131         type:"GET", 
    132         data:"output=json", 
    133     }) 
    134     .done(function( json ) { 
    135         var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 
     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; 
    136145 
    137146        //Clear selector. Add empty option to start. 
    138         $('#sel_RefineObject').empty(); 
    139         $('#sel_RefineObject') 
    140         .append("<option value=\"None\">  </option>"); 
    141  
    142         $.each(parsedJSON.results.bindings,function(index,item){ 
    143             var obj; 
     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; 
    144153            if(item.obj.type == "uri"){ 
    145154                obj = "&lt;" + item.obj.value + "&gt;"; 
    146                 $('#sel_RefineObject') 
    147                 .append("<option value="+ obj + ">" + obj.substring(0,75) + "</option>"); 
     155                $('#sel_RefineObject') 
     156                .append("<option value="+ obj + ">" + obj.substring(0,75) + "</option>"); 
    148157            } 
    149158            else{ 
    150159                obj = item.obj.value; 
    151                 $('#sel_RefineObject') 
    152                 .append("<option value=\""+ obj +"\">" + obj.substring(0,75) + "</option>"); 
     160                $('#sel_RefineObject') 
     161                .append("<option value=\""+ obj +"\">" + obj.substring(0,75) + "</option>"); 
    153162            } 
    154         }); 
     163        }); 
    155164        $('#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. 
    158171 
    159172function updateRefinePredicateSelector(obj){ 
    160     //Perform ajax query to return possible predicate values, given object and predicate values already chosen 
    161     var predicate = $('#sel_Predicate').val(); 
     173    //Perform ajax query to return possible predicate values, given object and predicate values already chosen 
     174    var predicate = $('#sel_Predicate').val(); 
    162175    var sparqlQuery; 
    163176    if(obj.substring(0,1) == "<")  
    164     sparqlQuery = "SELECT ?predicate WHERE{"+ 
    165                       "   ?s <" + predicate + ">  "+ obj + ";"+ 
    166                       "      ?predicate ?o}"+ 
    167                       "GROUP BY ?predicate ORDER BY DESC(?predicate)"; 
    168     else 
    169     sparqlQuery = "SELECT ?predicate WHERE{"+ 
    170                       "   ?s <" + predicate + ">  \""+ obj + "\";"+ 
    171                       "      ?predicate ?o}"+ 
    172                       "GROUP BY ?predicate ORDER BY DESC(?predicate)"; 
    173     var ajaxSparqlQuery = sparqlEndpoint + "?query=" + encodeURIComponent(sparqlQuery); 
    174  
    175     $.ajax({ 
    176         url: ajaxSparqlQuery, 
    177         type:"GET", 
    178         data:"output=json", 
    179     }) 
    180     .done(function( json ) { 
    181         var parsedJSON = ((typeof json) == "string") ? $.parseJSON(json) : json; 
    182         $('#sel_RefinePredicate').empty(); 
    183         $('#sel_RefinePredicate') 
    184         .append("<option value=\"None\">  </option>"); 
    185         $.each(parsedJSON.results.bindings,function(index,item){ 
    186             var pred = item.predicate.value; 
    187             var name = tidyPredicate(pred); 
    188             $('#sel_RefinePredicate') 
    189                 .append("<option value=\""+pred+"\">" + name + "</option>"); 
    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        }); 
    191204        $('#sel_RefinePredicate').next().find('.custom-combobox-input').val(""); 
    192     }); 
    193 } 
     205    }); 
     206} 
     207 
     208 
     209//Hides search-refining elements of page when not needed 
    194210function toggle_RefineSearch(enable){ 
    195     if(enable) 
    196     { 
    197          
     211    if(enable) 
    198212        $('#refineControls').toggle("slide", { direction: "up" }); 
    199         //$('#sel_RefinePredicate').removeAttr("disabled"); 
    200         //$('#sel_RefineObject').removeAttr("disabled"); 
    201     } 
    202     else 
    203     { 
     213    else 
    204214        $('#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. 
    210218function tidyPredicate(name) 
    211219{ 
    212             name = name.replace("http://purl.org/dc/elements/1.1/","dc."); 
    213             name = name.replace("http://greenstone.org/gsembedded#","gsembedded."); 
    214             name = name.replace("http://greenstone.org/gsextracted#","gsextracted."); 
    215             return name; 
    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