Javascript查询DBpedia小应用 上一篇文章中,我们了解了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 这段SPARQL语句是查询包含China的名字的词条,然后将其图片的url、homepage的url,以及简介返回回来。 下面让我们把整个程序写完。 完整代码 复制代码 代码如下: <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> 遗留问题 不太清楚中文怎么查询,如有知道的朋友,麻烦告知一下,谢谢。 例子
推荐阅读
js不能跳转到上一页面的问题解决方法
问题描述:我们有两个页面A和B,当我们从A跳到B后不做作任何让页面回传的操作,用JS:history.go(-1)就可以回到A页面,但是比如我们有Click,Change事件等激发了页面的回传,此时用history.go(-1)就回不到A页面了。 >>>详细阅读
本文标题:Javascript查询DBpedia小应用实例学习
地址:http://www.17bianji.com/kaifa2/JS/22288.html
1/2 1