Javascript查询DBpedia小应用实例学习

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>

遗留问题
不太清楚中文怎么查询,如有知道的朋友,麻烦告知一下,谢谢。

例子

(0)

相关推荐

  • Javascript查询DBpedia小应用实例学习

    Javascript查询DBpedia小应用 上一篇文章中,我们了解了SPARQL.SPARQL Endpoint,并简单做了一个SPARQLWrapper.js,来从DBpedia中查询了一些数据. 本文则尝试利用SPARQLWrapper.js来读取DBpedia的数据,并显示出来. 目标 通过输入一个英文单词,然后返回WIKI中相关的信息. 那么主要要解决的问题就是怎样的SPARQL语句能够查询到我们需要的东西. 先看一段简单的SPARQL查询语句 复制代码 代码如下: PREFIX :

  • JavaScript专题之underscore防抖实例学习

    目录 前言 防抖 第一版 this event 对象 返回值 立刻执行 取消 JavaScript 专题系列第一篇,讲解防抖,带你从零实现一个 underscore 的 debounce 函数 前言 在前端开发中会遇到一些频繁的事件触发,比如: window 的 resize.scroll mousedown.mousemove keyup.keydown…… 为此,我们举个示例代码来了解事件如何频繁的触发: 我们写个 index.html 文件: <!DOCTYPE html> <ht

  • 一个JavaScript的求爱小特效

    这里面做了一个JavaScript的求爱小特效,效果如下: 不仅能出现下面的图的效果,还可以让这个图形跟随着鼠标转动哦,这里面只是一个简单的没有修饰的小例子,基于这个例子可以让求爱,更加好玩了.闷骚男们,是不是可以给你的小萝莉发个这样的网页啊.给力的. 贴上code吧: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert t

  • 纯javascript实现的小游戏《Flappy Pig》实例

    本文实例讲述了纯javascript实现的小游戏<Flappy Pig>.分享给大家供大家参考.具体如下: Flappy Pig,是Pig,使用原生javascript写的网页版"Flappy Bird".我也奇了个怪为什么搞这个东西出来,而且还花了一天宝贵的周末,但是既然写出来,就拿出来和大家分享一下. option.js如下: /** * 原生javascript实现的<Flappy Pig>v0.1.0 * =======================

  • Javascript字符串拼接小技巧(推荐)

    在Javascript中经常会遇到字符串的问题,但是如果要拼接的字符串过长就比较麻烦了. 如果是在一行的,可读性差不说,如果要换行的,会直接报错. 在此介绍几种Javascript拼接字符串的技巧. 字符串相加(+) var items = '<li class="details">' + '<span>Hello world</span>' + '</li>'; 利用反斜线拼接字符串 var items = '<li class=

  • 使用JavaScript实现一个小程序之99乘法表

    废话不多说了,直接给大家贴代码了,具体代码如下所示: <!DOCTYPE html> <html> <head> <title>99乘法表</title> <meta charset="utf-8"> </head> <body> <script type="text/javascript"> for (var i = 1; i <= 9; i++) {

  • javascript查询字符串参数的方法

    本文实例讲述了javascript查询字符串参数的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: /* 解析查询字符串 返回包含所有参数的一个对象 */    function getQueryStringArgs(){       //取得查询字符串并去掉开头的问号     var qs = (location.search.length > 0 ? location.search.substring(1) : '');       //保存数据的对象     args

  • JavaScript必看小技巧(必看)

    在这篇文章中将给大家分享有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值.为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单.对于变量可以使用!!variable做检测,只要变量的值为:0.null." ".undefined或者NaN都将返回的是false,反之返回的是true.比如下面的示例: functio

  • JavaScript贪吃蛇小组件实例代码

    1 写在前面 看来<JavsScript高级编程>,想做一个小demo练练自己的手,选择了贪吃蛇游戏.由于以前都是用c#写的,将贪吃蛇写到一个类里面,然后一个一个小方法的拆分,只向外提供需要提供的方法.这样就可以将贪吃蛇作为一个模块,任何地方都可以复用的.然而,用js进行编写的时候,由于不能很好的利用js语言的特性进行模块化编程,所以第一版的实现完全采用面向过程的方式,将函数中所需要的变量全部声明为全局变量.虽然这样也能够实现功能,但是做不到复用,而且定义非常多的最顶层变量,污染了全局变量.写

  • HTML+JavaScript实现扫雷小游戏

    本文实例为大家分享了JavaScript实现扫雷小游戏的具体代码,供大家参考,具体内容如下 工具:Sublime Text / Dreamweaver /Hbuilder <!doctype html> <html> <head> <meta charset="utf-8"> <title>SaoLei</title> <style type="text/css"> table {

随机推荐