首页 >web前端 >js教程 >Javascript查询DBpedia小应用实例学习_javascript技巧

Javascript查询DBpedia小应用实例学习_javascript技巧

WBOY
WBOY原创
2016-05-16 17:40:501257浏览

Javascript查询DBpedia小应用
上一篇文章中,我们了解了SPARQL、SPARQL Endpoint,并简单做了一个SPARQLWrapper.js,来从DBpedia中查询了一些数据。
本文则尝试利用SPARQLWrapper.js来读取DBpedia的数据,并显示出来。

目标
通过输入一个英文单词,然后返回WIKI中相关的信息。
那么主要要解决的问题就是怎样的SPARQL语句能够查询到我们需要的东西。

先看一段简单的SPARQL查询语句

复制代码 代码如下:

PREFIX :
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:
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,以及简介返回回来。
下面让我们把整个程序写完。

完整代码
复制代码 代码如下:




SPARQL DEMO

<script> <BR>var $ = function(id){ <BR>return document.getElementById(id); <BR>}, <BR>sparql = new SPARQLWrapper("http://dbpedia.org/sparql"), <BR>results = []; <BR>function getInfo(name){ <BR>name = name.replace(/\s/g, "_"); <BR>var command = "prefix foaf: <http://xmlns.com/foaf/0.1/> " <BR>+ "select distinct ?url ?alma ?comment " <BR>+ "where { " <BR>+ "?s foaf:name ?sname . " <BR>+ "?sname bif:contains '" + name + "'. " <BR>+ "?s foaf:depiction ?url . " <BR>+ "?s dbpedia-owl:wikiPageExternalLink ?alma . " <BR>+ "?s rdfs:comment ?comment . " <BR>+ "} " <BR>+ "limit 10"; <BR>sparql.setQuery(command); <BR>sparql.query(function(json){ <BR>showInfo((eval("(" + json + ")")).results.bindings); <BR>}); <BR>} <BR>function showInfo(results){ <BR>var text = ""; <BR>if(results.length !== 0){ <BR>for(var i = 0; i < results.length; i++){ <BR>text += "<img src = '" + results[i].url.value + "' / alt="Javascript查询DBpedia小应用实例学习_javascript技巧" ><br />"; <BR>text += "homepage:" + "<a href = '" + results[i].alma.value + "' >" + results[i].alma.value + "<br />"; <BR>text += "<p>" + results[i].comment.value + "<br /><br /><br />"; <BR>$("result").innerHTML = text; <BR>} <BR>}else{ <BR>$("result").innerHTML = "没有任何相关信息!"; <BR>} <BR>} <BR></script>


目前只支持英文查询。








遗留问题
不太清楚中文怎么查询,如有知道的朋友,麻烦告知一下,谢谢。

例子
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn