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 相关文章推荐
新页面打开实际尺寸的图片
Aug 25 Javascript
JQuery 学习笔记 选择器之四
Jul 23 Javascript
基于jquery的checkbox下拉框插件代码
Jun 25 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 25 Javascript
删除节点的jquery代码
Jan 13 Javascript
javascript设置和获取cookie的方法实例详解
Jan 05 Javascript
jQuery实现点击行选中或取消CheckBox的方法
Aug 01 Javascript
React通过父组件传递类名给子组件的实现方法
Nov 13 Javascript
推荐10款扩展Web表单的JS插件
Dec 25 Javascript
Angularjs实现控制器之间通信方式实例总结
Mar 27 Javascript
jQuery无冲突模式详解
Jan 17 jQuery
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
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
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
PHP实现基于mysqli的Model基类完整实例
2016/04/08 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
简单几步实现返回顶部效果
2016/12/05 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
深入理解Vue router的部分高级用法
2018/08/15 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
详解python中TCP协议中的粘包问题
2019/03/22 Python
python中的单引号双引号区别知识点总结
2019/06/23 Python
对tensorflow中的strides参数使用详解
2020/01/04 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
2020/03/23 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Python 实现进度条的六种方式
2021/01/06 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
会计顶岗实习心得
2014/01/25 职场文书
《花木兰》教学反思
2014/04/09 职场文书
听课评语大全
2014/04/30 职场文书
搞笑车尾标语
2014/06/23 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
员工评语范文
2014/12/31 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2016年寒假见闻
2015/10/10 职场文书
CSS3实现的文字弹出特效
2021/04/16 HTML / CSS
python基于turtle绘制几何图形
2021/06/15 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
Python内置数据结构列表与元组示例详解
2021/08/04 Python