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 相关文章推荐
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 Javascript
Javascript中call的两种用法实例
Dec 13 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
JS实现表格数据各种搜索功能的方法
Mar 03 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
jquery div模态窗口的简单实例
May 28 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
Oct 28 Javascript
JavaScript实现瀑布流图片效果
Jun 30 Javascript
动态加载JavaScript文件的3种方式
May 05 Javascript
vue实现的微信机器人聊天功能案例【附源码下载】
Feb 18 Javascript
ES6字符串的扩展实例
Dec 21 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
用户的详细注册和判断
2006/10/09 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
jQuery左侧大图右侧小图焦点图幻灯切换代码分享
2015/08/19 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
学习使用Bootstrap页面排版样式
2017/05/11 Javascript
在一般处理程序(ashx)中弹出js提示语
2017/08/16 Javascript
JavaScript设计模式之建造者模式实例教程
2018/07/02 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
2019/06/17 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
Python使用剪切板的方法
2017/06/06 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
保护环境倡议书100字
2014/05/19 职场文书
高中课前三分钟演讲稿
2014/08/18 职场文书
学校运动会报道稿
2014/09/23 职场文书
2015年营业员工作总结
2015/04/23 职场文书
2016感恩父亲节主题广播稿
2015/12/18 职场文书
python 模块重载的五种方法
2021/04/24 Python
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
Mysql索引失效 数据库表中有索引还是查询很慢
2022/05/15 MySQL
python中validators库的使用方法详解
2022/09/23 Python