搜尋
首頁web前端js教程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 database without SQL.
—— Tim Berners-Leeing SticStic 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 distinct ?Concept where {[] a ?Concept} LIMIT 100
其中空格轉成。


實作細節 •跨域
我們可以透過AJAX實現這一功能,但是AJAX在部分瀏覽器中無法跨域,然而很顯然我們想要的Linked Data幾乎都是跨域的。
實際上,在一些較舊版本的瀏覽器,我們沒有不改變其資料形式的方法在前端進行動態跨域非同步讀取。
不過我們可以透過伺服器代理的方法來解決跨域問題。
•GET or POST
使用GET還POST呢?
這個可能出於很多方面考慮,但是考慮到GET可能被緩存,所以我們使用POST來避免資料被緩存。
•以什麼形式回傳資料
前面我們說到用text/xml可以回傳RDF數據,但是RDF在Javascript中並不好處理,所以我們使用json方式返回,也就是需要將Accept設定成application /sparql-results json。


實作 介面參考Python的SPARQL Wrapper

複製程式碼複製程式碼



(function(root, factory) {
if(typeof define === "function"){
define("SPARQLWrapper", factory); // AMD || CMD
}else{
root.SPARQLWrapper = factory(); // <script> <BR>} <BR>}(this, function(){ <BR>'use strict' <BR>function SPARQLWrapper (endpoint){ <BR>this.endpoint = endpoint; <BR>this.queryPart = ""; <BR>this.type = "json"; <BR>} <BR>SPARQLWrapper.prototype = { <BR>} <BR>SPARQLWrapper.prototype = { <BR>constructor : SPARQLWrapper, <BR>setQuery: function(query){ <BR>this.queryPart = "query=" encodeURI(query); <BR>}, <BR>setType: function(type){ <BR>this.type = type.toLowerCase(); <BR>}, <BR>query: function(type, callback){ <BR>callback = callback === undefined ? type : this.setType(type) || callback <BR>; var xhr = new XMLHttpRequest(); <BR>xhr.open('POST', this.endpoint, true); <BR>xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded' ); <BR>switch(this.type){ <BR>case "json": <BR>type = "application/sparql-results json"; <BR>break; <BR>case "xml": <BR> type = "text/xml"; <BR>break; <BR>case "html": <BR>type = "text/html"; <BR>break; <BR>default: <BR>type = "application/ sparql-results json"; <BR>break; <BR>} <BR>xhr.setRequestHeader("Accept", type); <BR>xhr.onreadystatechange = function(){ <BR>if(xhr. 4){ <BR>var sta = xhr.status; <BR>if(sta == 200 || sta == 304){ <BR>callback(xhr.responseText); <BR>}else{ <BR>console && console.error("Sparql query error: " xhr.status " " xhr.responseText); <BR>} <BR>window.setTimeout(function(){ <BR>xhr.onreadystatechange= new Function(); >xhr = null; <BR>},0); <BR>} <BR>} <BR>xhr.send(this.queryPart); <BR>} </script>
}
return SPARQLWrapper

; }));
複製程式碼 程式碼如下:




>
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
data文件夹里面是什么数据data文件夹里面是什么数据May 05, 2023 pm 04:30 PM

data文件夹里面是系统及程序的数据,比如软件的设置和安装包等,Data文件夹中各个文件夹则代表的是不同类型的数据存放文件夹,无论Data文件指的是文件名Data还是扩展名data,都是系统或程序自定义的数据文件,Data是数据保存的备份类文件,一般可以用meidaplayer、记事本或word打开。

mysql load data乱码怎么办mysql load data乱码怎么办Feb 16, 2023 am 10:37 AM

mysql load data乱码的解决办法:1、找到出现乱码的SQL语句;2、修改语句为“LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE character set utf8;”即可。

xdata和data有哪些区别xdata和data有哪些区别Dec 11, 2023 am 11:30 AM

区别有:1、xdata通常指的是自变量,data则是指整个数据集;2、xdata主要用于建立数据分析模型,data则是用于进行数据分析和统计;3、xdata通常用于回归分析、方差分析、预测建模,data则可以使用各种统计方法进行分析;4、xdata通常需要进行数据预处理,data则可以包含完整的原始数据。

AI project failure rates top 80% — study cites poor problem recognition and a focus on latest tech trends among major problemsAI project failure rates top 80% — study cites poor problem recognition and a focus on latest tech trends among major problemsAug 31, 2024 am 12:59 AM

Everyone and their aunt seem to be hopping aboard the AI train in search of inflated profit margins and marketing hype — just look at AMD's recent Ryzen rebrand as a prime example of this AI hype. A recent study conducted by RAND has found that this

More returns than sales: The Humane Ai Pin is becoming a commercial disasterMore returns than sales: The Humane Ai Pin is becoming a commercial disasterAug 08, 2024 pm 01:14 PM

Shortly after the launch of the Humane Ai Pin, scathing reviews revealed that the AI gadget was anything but ready for the market, as most of the originally advertised features either didn't work properly or were simply missing, the battery life was

MySQL 狂写错误日志MySQL 狂写错误日志Feb 18, 2024 pm 05:00 PM

一台核心业务数据库,版本为MySQL8.34社区服务器版。从上线以来,这个数据库服务器的错误日志增增加非常迅猛(如下图所示),每24小时能增加到10多个G的容量。因为有故障报警,也还没有影响到业务的正常访问,有关人员不让重启MySQL服务。鉴于这个情况,我只好设置一个自动计划任务,在每晚的夜间定点清理这些日志。具体的操作时候在系统命令行,执行“crontab-e”,添加如下的文本行:0001***echo>/data/mysql8/data/mysql_db/mysql.log保存并退出编辑模式

vue组件中data不能是函数吗vue组件中data不能是函数吗Dec 19, 2022 pm 05:22 PM

不是,vue组件中data必须是一个函数。vue中组件是用来复用的,为了防止data复用,将其定义为函数。vue组件中的data数据都应该是相互隔离,互不影响的,组件每复用一次,data数据就应该被复制一次,之后,当某一处复用的地方组件内data数据被改变时,其他复用地方组件的data数据不受影响,就需要通过data函数返回一个对象作为组件的状态。

Hackers can now reconstruct screen content from HDMI\'s electromagnetic radiationHackers can now reconstruct screen content from HDMI\'s electromagnetic radiationJul 30, 2024 am 10:01 AM

A concerning vulnerability has been revealed in modern computer systems, as per a new study. Federico Larroca at the University of the Republic in Montevideo, Uruguay, and his colleagues have developed an AI model that can reconstruct digital signals

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具