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 相关文章推荐
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
jQuery中:hidden选择器用法实例
Dec 30 Javascript
可以浮动某个物体的jquery控件用法实例
Jul 24 Javascript
js实现温度计时间样式代码分享
Aug 21 Javascript
使用JS正则表达式 替换括号,尖括号等
Nov 29 Javascript
Vue.js系列之项目结构说明(2)
Jan 03 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
jQuery+CSS3实现点赞功能
Mar 13 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
详解50行代码,Node爬虫练手项目
Apr 22 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
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简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
js有序数组的连接问题
2013/10/01 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jQuery实现下滑菜单导航效果代码
2015/08/25 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
Node.js下自定义错误类型详解
2016/10/17 Javascript
jQuery实现对象转为url参数的方法
2017/01/11 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
2019/05/16 Javascript
解决layui的使用以及针对select、radio等表单组件不显示的问题
2019/09/05 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Vue router安装及使用方法解析
2020/12/02 Vue.js
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Django与JS交互的示例代码
2017/08/23 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Python 实现还原已撤回的微信消息
2019/06/18 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
德国自行车商店:Tretwerk
2019/06/21 全球购物
如何使用PHP session
2015/04/21 面试题
迟到检讨书大全
2014/01/25 职场文书
优秀学生获奖感言
2014/02/15 职场文书
纪委立案决定书
2015/06/24 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
python 实现的截屏工具
2021/05/08 Python
SQL 尚未定义空闲 CPU 条件 - OnIdle 作业计划将不起任何作用
2021/06/30 SQL Server
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏