mas01mj@640: var sparqler = new SPARQL.Service("http://harrison/sparql/");
mas01mj@640:
mas01mj@640: sparqler.setPrefix("mo", "http://purl.org/ontology/mo/");
mas01mj@640: sparqler.setPrefix("foaf", "http://xmlns.com/foaf/0.1/");
mas01mj@640: sparqler.setPrefix("dc", "http://purl.org/dc/elements/1.1/");
mas01mj@640:
mas01mj@640: sparqler.setRequestHeader("Accept", "application/json");
mas01mj@640:
mas01mj@640: var resultsTable;
mas01mj@640:
mas01mj@640: $(document).ready(function() {
mas01mj@640: $("#search").click(search)
mas01mj@640: $("#spinner").hide();
mas01mj@640: resultsTable = $('#results').dataTable({"bFilter":false,"bLengthChange":false,"bPaginate":true,
mas01mj@640: "fnRowCallback": function(nRow, aData, iDisplayIndex)
mas01mj@640: {
mas01mj@640: $(nRow).attr("typeof", "mo:Track");
mas01mj@640: return nRow;
mas01mj@640: },
mas01mj@640: "fnDrawCallback": function ()
mas01mj@640: {
mas01mj@640: $(".artist_name").click(function(event) { searchArtist($(this).attr("href")); return false; });
mas01mj@640: $(".album_name").click(function(event) { searchAlbum($(this).attr("href")); return false; });
mas01mj@640: }
mas01mj@640: });
mas01mj@640:
mas01mj@640: $("#results tbody").click(function(event) {
mas01mj@640: $(resultsTable.fnSettings().aoData).each(function (){
mas01mj@640: $(this.nTr).removeClass('row_selected');
mas01mj@640: });
mas01mj@640: $(event.target.parentNode).addClass('row_selected');
mas01mj@640: });
mas01mj@640:
mas01mj@640: });
mas01mj@640:
mas01mj@640: function search(event) {
mas01mj@640:
mas01mj@640: var trackSearchString = $("#tracksearch").val();
mas01mj@640: var artistSearchString = $("#artistsearch").val();
mas01mj@640:
mas01mj@640: if(trackSearchString.length == 0 && artistSearchString.length == 0)
mas01mj@640: {
mas01mj@640: resultsTable.fnClearTable();
mas01mj@640: return;
mas01mj@640: }
mas01mj@640:
mas01mj@640: var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {";
mas01mj@640:
mas01mj@640: queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name";
mas01mj@640:
mas01mj@640: if(artistSearchString.length > 0)
mas01mj@640: {
mas01mj@653: queryString += ' FILTER regex(?artist_name, "^'+artistSearchString+'", "i")';
mas01mj@640: }
mas01mj@640: else
mas01mj@640: {
mas01mj@640: queryString += ".";
mas01mj@640: }
mas01mj@640:
mas01mj@640: queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title";
mas01mj@640:
mas01mj@640: if(trackSearchString.length > 0)
mas01mj@640: {
mas01mj@653: queryString += ' FILTER regex(?track_title, "^'+trackSearchString+'", "i")';
mas01mj@640: }
mas01mj@640: else
mas01mj@640: {
mas01mj@640: queryString += ".";
mas01mj@640: }
mas01mj@640:
mas01mj@640: queryString += " }";
mas01mj@640:
mas01mj@640: performSearch(queryString);
mas01mj@640: }
mas01mj@640:
mas01mj@640: function searchArtist(id) {
mas01mj@640: var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {";
mas01mj@640: queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name";
mas01mj@640: queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title.";
mas01mj@640: queryString += " FILTER(sameTerm(?maker, <"+id+">))";
mas01mj@640: queryString += " }";
mas01mj@640: performSearch(queryString);
mas01mj@640: }
mas01mj@640:
mas01mj@640: function searchAlbum(id) {
mas01mj@640: var queryString = "SELECT ?maker ?album ?album_title ?tracknum ?artist_name ?track_title WHERE {";
mas01mj@640: queryString += " ?track a mo:Track; mo:track_number ?tracknum; foaf:maker ?maker. ?album mo:track ?track; dc:title ?album_title. ?maker foaf:name ?artist_name";
mas01mj@640: queryString += " ?record mo:track ?track; mo:publication_of ?signal. ?signal dc:title ?track_title.";
mas01mj@640: queryString += " FILTER(sameTerm(?album, <"+id+">))";
mas01mj@640: queryString += " }";
mas01mj@640: performSearch(queryString);
mas01mj@640: }
mas01mj@640:
mas01mj@640:
mas01mj@640: function performSearch(queryString) {
mas01mj@640: $("#spinner").show();
mas01mj@640: $("#query").text(queryString);
mas01mj@640: var query = sparqler.createQuery();
mas01mj@640: query.query(queryString, {failure: function(xhr) { alert("Bad response! "+xhr.responseText) }, success: displayResults});
mas01mj@640: }
mas01mj@640:
mas01mj@640: function displayResults(json) {
mas01mj@640: resultsTable.fnClearTable();
mas01mj@640: if(json) {
mas01mj@640:
mas01mj@640: var bindings = json.results.bindings;
mas01mj@640: for(var i=0; i