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跨浏览器显示的file上传控件
Oct 24 Javascript
用JavaScript实现动画效果的方法
Jul 20 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
Feb 10 Javascript
JS 作用域与作用域链详解
Apr 07 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
jQuery实现购物车的总价计算和总价传值功能
Nov 28 jQuery
微信小程序使用二次贝塞尔曲线画波浪
Dec 25 Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 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
玩转虚拟域名◎+ .
2006/10/09 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
2020/03/23 Javascript
wxPython中文教程入门实例
2014/06/09 Python
Python中AND、OR的一个使用小技巧
2015/02/18 Python
python基础之入门必看操作
2017/07/26 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
实验心得体会范文
2016/01/25 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书
Python加密技术之RSA加密解密的实现
2022/04/08 Python
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL