---
# System prepended metadata

title: Semantic web

---

# Semantic web

它不是處理人類語言上的意義

語意網 是為機器（app）能理解及應用
提供一致的語法格式
提供標準的詞彙來解釋
提供統一的查詢應用

RDFa 可以對全世界的網頁做 摘要做收集 （爬蟲）

了解資料模型 三元組 空節點 link

linked data
實現web of data 為應用程式創造可操控的資料空間

四原則
讓資料命名要有網址
透過http uri 可以查資料
查資料 要保證提供
資料可以延伸鏈結下去

鏈結資料 > 詞彙 > 查詢 > 推理 >


dbpedia 機器使用的百科


resource Description framework RDF 資源描述框架
資料模型 可自由定義語意及詞彙，因此是用在任何領域。
序列化
轉換編輯


資料轉換軟體
OpenRefine (http://blog.infographics.tw/2015/09/openrefine-introduction/)

what is metadata ?
解釋資料的資料，就是資料結構的框架(RDF)，後來演變為描述網路資源的模型，簡單的 e.g. URL代表一整個網站的資料

框架可表達領域的定義 概念 階層間的關係
使得語法升級為語意層級
能讓機器理解及處理，而不喪失語意的通用框架






一個陳述(statement)就是一個triple  固定由主詞 謂（述）詞 受詞組成 SPO Subject-Predicate-Object



Statement (triple)可繪成node-arc-node

is a 是一個
has a  有一個
資料就這兩大類

Statement (triple) 組成
主詞 (Subject)：內容必須是資源的IRI (URI).. 
受詞(object)：內容可為literal (文字、數字、日期)或是其他資源(URI表達的)
謂詞(predicate)：也稱為述詞


resource 與 entity 同意

規則1 ：知識由一組statements來呈現 
每一個statement依Subject-Predicate-Object排列
規則2 ：資源必須以URI識別
主詞須以URI識別
受詞若為資源形式，也須以URI識別
謂詞須以URI識別，Linked data通常用標準詞彙(vocabulary)


序列化
//整個是RDF
<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" //兩行為描述
    xmlns:foaf="http://xmlns.com/foaf/0.1/">
	<rdf:Description rdf:about="http://www.cycu.edu.tw/person#ylc"> //主詞
	   <foaf:givenname>Max</foaf:givenname> //謂詞 受詞
	   <foaf:surname>Chi</foaf:surname> //謂詞 受詞
	</rdf:Description>
</rdf:RDF>

表頭-註明引用的Namespace，使用前置詞 
	@prefix  foaf: <http://xmlns.com/foaf/0.1/> . 
陳述句是一組triple ，結尾加句點
<http://www.cycu.edu.tw/ns/pe rson#ylc>   foaf:surname   "Chi" .
使用分號表示共用主詞，寫成
<http://www.cycu.edu.tw/ns/person#ylc>
           foaf:givenname "max" ; 
	foaf:surname "Chi" .
使用逗號表示共用主詞與述詞，寫成
<http://www.cycu.edu.tw/ns/person#ylc>
           foaf:phone  "02-23345678" , "0933456789"  .


sparql 是專門查詢 RDF的查詢語言

endpoint 資料端點

RDF(及其儲存庫)扮演這個Tell ，SPARQL扮演Ask
存rdf的稱為 triple story 存放三元組資料


SPARQL 語法結構
SPARQL語法結構，概略包含前置詞、顯示項目、條件



SPARQL 語法結構
SPARQL語法結構，概略包含前置詞、顯示項目、條件


PREFIX  ns: <URI>
每次都要用到的 就另外命名 以其他名稱代替他 以後只要呼叫那個名稱(ab:)

turtle 與 sparql 差異


要用#或/隔開 但最好遵從原有的

 jena 安裝  command line tools ARQ
https://jena.apache.org/ 

環境設定
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_73
JENA_HOME = C:\SPARQL\apache-jena-3.1.1
Classpath= .; C:\SPARQL\apache-jena-3.1.1\lib
測一下環境狀態
DOS Mode CMD
C:\.. \apache-jena-3.1.1>java  -version
C:\.. \apache-jena-3.1.1\bat>arq
增加path
%JENA_HOME%\bat   
> echo %JENA_HOME%\bat 

出現 only one query string allowd 需要加” ”
CMD視窗Command line 執行   (arq or sparql )
	arq  --data=“ex30.ttl” --query=“q30.rq”

SPARQL通常將一些常用Namespace，列入前置詞(prefix)
Prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
Select *
Where { ?s vcard:FN ?o} 

SPARQL 問號(?)開頭的變數可以自訂
prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
Select  ?item  ?name
Where { ?item  vcard:FN  ?name .} 

限制查詢某特定姓氏人的名字(本例是blank node)
prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
Select  ?item  ?givenName
Where { ?item  vcard:Family  "Smith" ;
                         vcard:Given   ?givenName .  } 
共用主詞時使用分號  ;

SPARQL 提供數字運算的keywords
Count ()  計算總數
其他計算如 MIN(), Max(), Sum(), Avg(), …
計算 ex31.rdf 的triples總數
Select  (count (?s) as ?Total)
Where { ?s ?p ?o}

計算 ex31.rdf 總人數
prefix vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
Select (count (?s) as ?Total)
Where { ?s  vcard:FN  ?name .} 

剔除重複的資料可以加入distinct
Select (count ( distinct ?s) as ?Total)


亂碼 chcp65001 在cmd 打上 之後 就便UTF8

vcard: uri 是用來定義 屬性   vcard foaf


sparql 沒有值就直接不顯示

要找到空值 全列出來
要先找到前一個受詞
再用受詞 去找

optional union 差別




db 保有資料 我們在map一個RDF映射檔 

製作映射檔 
關聯資料庫經由映射檔，將內容轉換成RDF
generate-mapping -o mapping-xxx.ttl  -u root  -p maxchi  jdbc:mysql://140.135.113.186/pharmacy

-o   output    ➔ filename
-u  DB user name
-p  DB password 


查看 type mapping-xxx.ttl

對應DB的資料值➔受詞
一般文字值
d2rq:column “pharmacy.organization-name”;     
URI
d2rq:uriPattern "http://example.org/region/@@pharmacy.region@@"
d2rq:uriSqlExpression "CONCAT('http://example.org/city#',  pharmacy.locality )";

Reconcile 整合協調功能 
建立一個代稱


已知的事實 去推導

axiom

語意定義 ＝ 模型

理解(understanding)
應用系統對知識模型解譯(parse)，可在計憶體中建立一系列公理(axiom)，形成邏輯運算規則
公理是指不需證明的事實，例如宣告：「所有餐飲業都是服務業」
推理(reasoning)
應用系統基於公理進行邏輯運算，將會增加一些新的陳述，這些陳述並沒有在原事實中提及


資料塑模與OWL
W3C提供RDFS及OWL規範，用於語意網的資料塑模
網路上的一切都須要標準化，遵循規範是唯一解
規範目的即是在資料層之上，提供共通語言及詞彙
二項規範是基礎及原始的依據 
開發者可以直接應用規範的詞彙於資料塑模 
詞彙也可用來創建新的模型
例如創造新的概念、屬性、及關係等


owl類似rdfs 但比rdfs 給更多的詞彙
OWL類似RDFS ，提供更豐富的語意描述


SKOS 

skos:inScheme：將概念連結歸類至概念類表


