自由百科全書不只應可以自由編寫,更應該可以自由取得。
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
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
; }));
複製程式碼 程式碼如下:
>

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

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

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

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

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

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

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

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

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

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

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具