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 DOM 学习第九章 选取范围的介绍
Feb 19 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
JavaScript使用function定义对象并调用的方法
Mar 23 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
使用RequireJS库加载JavaScript模块的实例教程
Jun 06 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
AngularJS基础 ng-keyup 指令简单示例
Aug 02 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
Sep 21 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
Mar 03 Javascript
VueJs 搭建Axios接口请求工具
Nov 20 Javascript
详解webpack 入门与解析
Apr 09 Javascript
JS事件绑定的常用方式实例总结
Mar 02 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 执行系统命令的方法
2009/07/07 PHP
PHP中IP地址与整型数字互相转换详解
2014/08/20 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
jquery中对表单的基本操作代码
2010/07/29 Javascript
js鼠标点击事件在各个浏览器中的写法及Event对象属性介绍
2013/01/24 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
深入理解js promise chain
2016/05/05 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
JS实现上传图片的三种方法并实现预览图片功能
2017/07/14 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
2019/04/15 Python
keras load model时出现Missing Layer错误的解决方式
2020/06/11 Python
python实现批量命名照片
2020/06/18 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
印度尼西亚电子产品购物网站:Kliknklik
2018/06/05 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android