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 相关文章推荐
基于JQuery的日期联动实现代码
Feb 24 Javascript
js 获取元素下面所有li的两种方法
Apr 14 Javascript
再谈Jquery Ajax方法传递到action(补充)
May 12 Javascript
简单了解JavaScript操作XPath的一些基本方法
Jun 03 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
基于cssSlidy.js插件实现响应式手机图片轮播效果
Aug 30 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 Javascript
js中字符型和数值型数字的互相转化方法(必看)
Apr 25 Javascript
详解axios在node.js中的post使用
Apr 27 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
Nov 24 Javascript
JavaScript展开运算符和剩余运算符的区别详解
Feb 18 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
ThinkPHP中where()使用方法详解
2016/04/19 PHP
七个很有意思的PHP函数
2014/05/12 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
JavaScript通过改变文字透明度实现的文字闪烁效果实例
2017/04/27 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
通过JS运行机制的角度说说作用域
2019/03/12 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
[02:51]2014DOTA2 TI小组赛总结中国军团全部进军钥匙球馆
2014/07/15 DOTA
python实现倒计时的示例
2014/02/14 Python
Python最基本的输入输出详解
2015/04/25 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
python使用RNN实现文本分类
2018/05/24 Python
详解Python sys.argv使用方法
2019/05/10 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
解决python flask中config配置管理的问题
2019/07/26 Python
Python lxml模块的基本使用方法分析
2019/12/21 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
PyTorch 导数应用的使用教程
2020/08/31 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
机械制造专业个人的自我评价
2013/12/28 职场文书
陈欧的广告词
2014/03/18 职场文书
维修工先进事迹
2014/05/29 职场文书
战友聚会策划方案
2014/06/13 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
委托书范本
2014/09/13 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
Mybatis-plus配置分页插件返回统一结果集
2022/06/21 Java/Android