Ignore:
Timestamp:
2014-11-14T14:26:23+13:00 (9 years ago)
Author:
sjs49
Message:

Made formatting changes to make code minutely easier to read

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
    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
Note: See TracChangeset for help on using the changeset viewer.