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分页代码(当前页码居中)
Sep 20 Javascript
js css 实现遮罩层覆盖其他页面元素附图
Sep 22 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
javascript去掉代码里面的注释
Jul 24 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
Sep 19 Javascript
javascript实现右下角广告框效果
Feb 01 Javascript
node.js入门学习之url模块
Feb 25 Javascript
EasyUI在Panel上动态添加LinkButton按钮
Aug 11 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
深入浅析Vue 中 ref 的使用
Apr 29 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 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笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JavaScript使用cookie记录临时访客信息的方法
2015/04/07 Javascript
常用DOM整理
2015/06/16 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
2016/05/25 Javascript
js数组去重的hash方法
2016/12/22 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
通过button将form表单的数据提交到action层的实例
2017/09/08 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
Numpy截取指定范围内的数据方法
2018/11/14 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
Python Django的安装配置教程图文详解
2019/07/17 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python中time包实例详解
2021/02/02 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
药品采购员岗位职责
2014/02/08 职场文书
信息合作协议书
2014/10/09 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
面试提问mysql一张表到底能存多少数据
2022/03/13 MySQL