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 - 如何引入js代码
Mar 09 Javascript
javascript生成随机数的方法
May 16 Javascript
简述AngularJS的控制器的使用
Jun 16 Javascript
JS+CSS实现带小三角指引的滑动门效果
Sep 22 Javascript
jQuery计算文本框字数及限制文本框字数的方法
Mar 01 Javascript
JQuery 传送中文乱码问题的简单解决办法
May 24 Javascript
使用 vue.js 构建大型单页应用
Feb 10 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
Mar 28 jQuery
webpack结合express实现自动刷新的方法
May 07 Javascript
js模拟实现烟花特效
Mar 10 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 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
php表单提交问题的解决方法
2011/04/12 PHP
php gd等比例缩放压缩图片函数
2016/06/12 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
再谈javascript原型继承
2014/11/10 Javascript
javascript冒泡排序小结
2016/04/10 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
2016/05/30 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
Angular页面间切换及传值的4种方法
2016/11/04 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
python检测远程端口是否打开的方法
2015/03/14 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
python3.6 tkinter实现屏保小程序
2019/07/30 Python
Python异常处理机制结构实例解析
2020/07/23 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
大学生职业生涯规划书参考模板
2014/03/05 职场文书
财务管理专业求职信
2014/06/11 职场文书
2014年学习部工作总结
2014/11/12 职场文书
介绍信怎么写
2015/01/30 职场文书
幽默导游词应该怎么写?
2019/08/26 职场文书
Python实现智慧校园自动评教全新版
2021/06/18 Python