Javascript中如何实现关联数据查询

本文介绍如何利用Javascript从DBpedia中获取我们想要的数据。

DBpedia的作用:对Wikipedia的数据变成Linked Data形式,使得机器也能读懂并自由获得这些数据。

SPARQL

Trying to use the Semantic Web without SPARQL is like trying to use a relational database without SQL.

—— Tim Berners-Lee

SPARQL是Semantic Web(语义网)的SQL,用于数据查询的语言。

SPARQL Endpoint

SPARQL查询终端,是一种HTTP绑定协议,用于通过HTTP进行SPARQL查询,并返回相应数据。

DBpedia的SPARQL Endpoint地址是:http://dbpedia.org/sparql

大家可以通过浏览器打开这个页面,进行SPARQL查询(最好翻墙,没翻墙查询经常失败,不太明白为什么= =)。

不过这种查询最终返回结果是HTML页面,并不是我们想要的,我们可以通过设置Request Header的Accept属性来指定返回数据类型。

例如如果指定为:text/xml,那么返回的便是RDF格式数据。

那么我们如何输入SPARQL查询代码呢?

只需通过get或者post方法用参数query,将代码传过去。例如:

如果想查询:select distinct ?Concept where {[] a ?Concept} LIMIT 100

则可利用该链接得到数据:

http://dbpedia.org/sparql?query=select%20distinct%20?Concept%20where%20{[]%20a%20?Concept}%20LIMIT%20100

其中空格被转成%20。

实现细节

跨域

我们可以通过AJAX实现这一功能,但是AJAX在部分浏览器中无法跨域,然而很显然我们想要的Linked Data几乎都是跨域的。

实际上,在一些较老版本的浏览器,我们没有不改变其数据形式的方法在前端进行动态跨域异步读取。

不过我们可以通过服务器代理的方法来解决跨域问题。

GET or POST

使用GET还POST呢?

这个可能出于很多方面考虑,但是考虑到GET可能被缓存,所以我们使用POST来避免数据被缓存。

以什么形式返回数据

前面我们说到用text/xml可以返回RDF数据,但是RDF在Javascript中并不好处理,所以我们使用json方式返回,也就是需要将Accept设置成application/sparql-results+json。

时间: 2024-08-03 11:38:34

Javascript中如何实现关联数据查询的相关文章

JAVASCRIPT中UTF8页面提交数据乱码怎么办

1.FORM标签里加上accept-charset代码,这个能把FORM里的数据自动编码成指定的字符集提交,比如在UTF8页面提交数据到GB2312,代码就是accept-charset="GB2312″,但accept-charset除了IE其他浏览器都支持... 2.这时可以在提交时触发JS,document.charset='GB2312′;,用这段代码设置当前页面编码为GB2312.到这里看似很完美了,但还一个问题,就是触发这个代码后,当前页面刷新之后会乱码,这是因为你刚才改变了当前页面

Javascript中XML文档的查询与加载

 Document 定义的方法大多数是生产型方法,主要用于创建可以插入文档中的各种类型的节点.常用的 Document 方法有: 方法 描述 createAttribute() 用指定的名字创建新的 Attr 节点. createComment() 用指定的字符串创建新的 Comment 节点. createElement() 用指定的标记名创建新的 Element 节点. createTextNode() 用指定的文本创建新的 TextNode 节点. getElementById() 返回文

mvc3中关联数据的显示

问题描述 mvc3中怎么显示关联数据,就是第二个图显示第一个图对应的名称 解决方案 解决方案二:没人会吗?解决方案三:最简单的方式,根据select下拉框的change事件发送ajax请求,然后把服务器端返回的数据填充到界面中就行了,这和你使用的是webfom还是mvc关系不大解决方案四:我是想显示关联数据来着,就比如说23对应的是淘宝,第二张图类型哪儿显示淘宝解决方案五:用脚本来实现吧解决方案六:引用3楼u013438504的回复: 我是想显示关联数据来着,就比如说23对应的是淘宝,第二张图类

Javascript实现关联数据(Linked Data)查询及注意细节_javascript技巧

前言 自由百科全书不仅仅应当可以自由编写,而更应该可以自由获得. DBpedia对Wikipedia的数据变成Linked Data形式,使得机器也能读懂并自由获得这些数据. 本文的主要目的是利用Javascript从DBpedia中获取我们想要的数据. 对Linked Data不太了解的请参考:关联数据入门--RDF. SPARQL Trying to use the Semantic Web without SPARQL is like trying to use a relational

Dom + Javascript 在本机浏览器中对的表格数据进行排序

dom|javascript|浏览器|排序|数据 在本机浏览器中对的表格数据进行排序在Web应用中,数据从服务器端返回到客户端,以表格形式表现出来.如果要对数据集按指定的列排序显示,常规做法都是向服务器发出请求,服务器端程序重新从数据库中取出按指定列排序的数据,返回给客户端,页面重新显示排序后数据. 采用这种方式有如下缺点:1- 响应时间延迟,每次排序都要向服务器端发送请求,等待结果返回,同时增加网络负载.2- 编程复杂,可维护性差,而且客户端和服务器端代码耦合度很高,客户端和服务器端都要处理排

Delphi中多库关联查询

在我们对数据库进行操作时,经常用到TTable控件,但TTable只能同时对一个数据表进行操作,而TQuery控件不仅具有TTable的多数功能,而且同时可对多个数据表进行操作.不仅如此,TQuery控件还有更强大的数据库查询功能,可以同时对多个不同结构的数据库进行关联查询,被查询的数据库可以是ODBC支持的任何一种类型,当然计算机中必须先安装ODBC和BDC(Delphi的数据库引擎),现举例说明. 一.连接Paradox和dBASE进行异库查询 例如:Master.db和Customer.d

mysql表关联只取关联表中最近一条数据

问题描述 mysql表关联只取关联表中最近一条数据 表A{id,userId,logTime} 表B{id,userId,departmentId,updateTime} 表A为数据记录 表B相当于历史记录表(userId在updateTime时间之前的departmentId) 现在表A与表B关联 但是只能让表B中符合条件的最近一记录关联上 (也是updateTime在logTime之前并且最近的一条) 我是这么做的 SELECT A.id,B.userId,B.departmentId FR

在JavaScript中使用JSON数据_javascript技巧

JSON 是 JavaScript 原生格式,这意味着 在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包. JSON语法 JSON建构于两种结构: 对象--名称/值对的集合.不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表(keyed list),或者关联数组.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'名称/值' 对

MySql多表联结查询与多表关联数据同时删除

left join语法  代码如下 复制代码 table_references:     table_reference [, table_reference] -  table_reference:     table_factor   | join_table  table_factor:     tbl_name [[AS] alias]         [{USE|IGNORE|FORCE} INDEX (key_list)]   | ( table_references )   | {