Javascript查询DBpedia小应用实例学习


Posted in Javascript onMarch 07, 2013

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>

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

例子

Javascript 相关文章推荐
javascript Keycode对照表
Oct 24 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
Bootstrap每天必学之面板
Nov 30 Javascript
好好了解一下Cookie(强烈推荐)
Jun 14 Javascript
webpack常用配置项配置文件介绍
Nov 07 Javascript
关于json字符串与实体之间的严格验证代码
Nov 10 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
Dec 23 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
基于openlayers4实现点的扩散效果
Aug 17 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
微信小程序实现弹框效果
May 26 Javascript
JS链式调用的实现方法
Mar 07 #Javascript
jQuery滚动加载图片效果的实现
Mar 06 #Javascript
HTML上传控件取消选择
Mar 06 #Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
Mar 06 #Javascript
JQuery操作tr和td内容的方法实例
Mar 06 #Javascript
node在两个div之间移动,用ztree实现
Mar 06 #Javascript
js实现一个省市区三级联动选择框代码分享
Mar 06 #Javascript
You might like
利用laravel+ajax实现文件上传功能方法示例
2017/08/13 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
jQuery $.each的用法说明
2010/03/22 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
Python多进程编程技术实例分析
2014/09/16 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python端口扫描简单程序
2016/11/10 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
python调用虹软2.0第三版的具体使用
2019/02/22 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
Python API自动化框架总结
2019/11/12 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
eBay加拿大站:eBay.ca
2019/06/20 全球购物
车间班组长的职责
2013/12/13 职场文书
企业总经理岗位职责
2014/02/13 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
创业女性典型材料
2014/05/02 职场文书
结对共建协议书
2014/08/20 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL