时间紧张,先记一笔,后续优化与完善。
上一篇文章中,我们了解了SPARQL、SPARQL Endpoint,并单简做了一个SPARQLWrapper.js,来从DBpedia中查询了一些数据。
本文则实验利用SPARQLWrapper.js来读取DBpedia的数据,并显示出来。
标目
通过入输一个英文单词,然后返回WIKI中关相的息信。
那么要主要处理的题问就是怎样的SPARQL句语够能查询到我们须要的货色。
先看一段单简的SPARQL查询句语
PREFIX : <http://aabs.purl.org/music#> SELECT ?instrument WHERE { :andrew :playsInstrument ?instrument . }
首先定义一个域名空间http://aabs.purl.org/music#。
然后选择这子样的instrument量变,他足满:
主语是http://aabs.purl.org/music#andrew,谓语是http://aabs.purl.org/music#playsInstrument,宾语是该instrument。
bif:contains()
bif:contains()是contains()函数的变种函数,义思名顾是判断是不是包括的函数。
利用这个我们能查询到我们须要的数据了。
prefix foaf: <http://xmlns.com/foaf/0.1/> select distinct ?url ?alma ?comment where { ?s foaf:name ?sname . ?sname bif:contains 'China'. ?s foaf:depiction ?url . ?s dbpedia-owl:wikiPageExternalLink ?alma . ?s rdfs:comment ?comment . } limit 10
上面让我们把个整程序写完。
整完代码
<html> <head> <meta charset="utf-8"> <title>SPARQL DEMO</title> <script src="SPARQLWrapper.js"></script> <script> var $ = function(id){ return document.getElementById(id); }, sparql = new SPARQLWrapper("http://dbpedia.org/sparql"), results = []; function getInfo(name){ name = name.replace(/\s/g, "_"); var command = "prefix foaf: <http://xmlns.com/foaf/0.1/> " + "select distinct ?url ?alma ?comment " + "where { " + "?s foaf:name ?sname . " + "?sname bif:contains '" + name + "'. " + "?s foaf:depiction ?url . " + "?s dbpedia-owl:wikiPageExternalLink ?alma . " + "?s rdfs:comment ?comment . " + "} " + "limit 10"; sparql.setQuery(command); sparql.query(function(json){ showInfo((eval("(" + json + ")")).results.bindings); }); } function showInfo(results){ var text = ""; if(results.length !== 0){ for(var i = 0; i < results.length; i++){ text += "<img src = '" + results[i].url.value + "' /><br />"; text += "homepage:" + "<a href = '" + results[i].alma.value + "' >" + results[i].alma.value + "</a><br />"; text += "<p>" + results[i].comment.value + "</p><br /><br /><br />"; $("result").innerHTML = text; } }else{ $("result").innerHTML = "没有任何关相息信!"; } } </script> </head> <body> <p>现在只持支英文查询。</p> <input type="text" id="name"/> <input type="button" onclick="getInfo(document.getElementById('name').value);" value="Wiki Search" /> <div id="result"></p> </body> </html>
遗留题问
不太楚清中文怎么查询,若有晓得的友人,烦麻告诉一下,感谢。
例子
http://pan.baidu.com/share/link?shareid=293219&uk=855675565
文章结束给大家分享下程序员的一些笑话语录: 那是习惯决定的,一直保持一个习惯是不好的!IE6的用户不习惯多标签,但是最终肯定还是得转到多标签的浏览器。历史(软件UI)的进步(改善)不是以个人意志(习惯)为转移的!