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 同时提交多个Web表单的方法
Feb 19 Javascript
基于jquery循环map功能的代码
Feb 26 Javascript
再谈javascript图片预加载技术(详细演示)
Mar 12 Javascript
jquery提交form表单时禁止重复提交的方法
Feb 13 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
Apr 29 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
javascript实现手动点赞效果
Apr 09 Javascript
用vscode开发vue应用的方法步骤
May 06 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
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
Javascript面向对象编程(二) 构造函数的继承
2011/08/28 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
vue中如何去掉空格的方法实现
2018/11/09 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
js module大战
2019/04/19 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
Python contextlib模块使用示例
2015/02/18 Python
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python简单获取数组元素个数的方法
2015/07/13 Python
Python3中详解fabfile的编写
2018/06/24 Python
python实现多进程通信实例分析
2019/09/01 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
python实现网页录音效果
2020/10/26 Python
canvas实现有递增动画的环形进度条的实现方法
2019/07/10 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
投标承诺书怎么写
2014/05/24 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
欢送会主持词
2015/07/01 职场文书
党员公开承诺书2016
2016/03/24 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers