owned this note
owned this note
Published
Linked with GitHub
<!-- $theme: default -->
# Wikidata 新手編輯工具箱
COSCUP 2019
[[User:Planetoid]]
Markdown 版連結: http://bit.ly/2YIKuji
簡報 PDF 版: http://bit.ly/31K83Fu
---
## 大綱
* 為什麼要編輯
* 工具箱 QuickStatements 介紹
* 新增與編輯
* 資料處理
* Wikidata 資料類型
* CSV 匯入範例
* 匯入格式
* 資料探索: 常見屬性、上位分類
* 新手技術問題排除
---
## 為什麼要編輯
<!-- page_number: true -->
<!-- 知識圖譜 -->
---
1.搜尋引擎輸入:[林志玲](https://www.google.com/search?q=%E6%9E%97%E5%BF%97%E7%8E%B2)
![20%](https://i.imgur.com/gR65fEI.png)
---
2.搜尋引擎輸入:[distance between Taipei and Kaohsiung](https://www.wolframalpha.com/input/?i=distance+between+Taipei+and+Kaohsiung)
![60%](https://i.imgur.com/B5iQFJb.png)
---
3.搜尋引擎輸入:...
![60%](https://i.imgur.com/VZSig9U.png)
---
### 應用之一:問答系統
* 傳統資訊檢索會使用到的資料外(如字典)
* 使用本體論等語義資料
* 利用網頁來增加資料的豐富性。 (source: 維基百科)
![40%](https://i.imgur.com/LzhzR4E.png)
---
### 本體論
![40%](https://i.imgur.com/Qls8nol.png)
「對特定領域之中某套概念及其相互之間關係的形式化表達(formal representation)」
source: [本體 \(資訊科學\) \- Wikipedia](https://zh.wikipedia.org/zh-tw/%E6%9C%AC%E4%BD%93_(%E4%BF%A1%E6%81%AF%E7%A7%91%E5%AD%A6))
---
## 工具箱 QuickStatements 介紹
使用試算表軟體增加或刪除 Wikidata 資料,並且可以批次處理 `陳述`
* TAB 按鍵間隔欄位值 (試算表選擇區域後複製貼上)
* 逗號間隔欄位值 (文字編輯或試算表軟體另存 CSV 檔案)
---
### 新增與編輯 property
[Wikidata Query Service](https://query.wikidata.org/) 查詢台灣[古蹟 (Q63183471)](https://www.wikidata.org/wiki/Q63183471)條目
```SPARQL
SELECT ?item ?itemLabel ?itemDescription
WHERE
{
?item wdt:P31 wd:Q63183471.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "zh,en".
}
}
```
---
補上缺少中文描述的條目
![](https://i.imgur.com/s4zlJMw.png)
講個秘訣: 語言顯示順序 `language "zh,en"` 當查詢結果顯示英文 (`en`) 描述,代表缺少中文 (`zh`) 描述
---
#### 語言代碼
範例
![60%](https://i.imgur.com/5Wibzlv.png)
感謝示範:[唐納·川普 \- Wikidata](https://www.wikidata.org/wiki/Q22686)
---
語言代碼清單
| 語言代碼 | 名稱|
| -------- | -------- |
| en | 英文 |
| hak | 客家話 |
| zh | 中文 |
| zh-tw | 中文(台灣) |
| zh-hant | 中文(繁體) |
| zh-classicallzh | 文言 |
| zh-yue | 粵語 |
參考出處: [Help:Wikimedia language codes/lists/all \- Wikidata](https://www.wikidata.org/wiki/Help:Wikimedia_language_codes/lists/all)
---
### 資料處理
```html
* 目的:找到描述欄位只有英文、沒有中文,再補上中文描述
* 使用:正規表示式 (使用單一字串描述、或尋找一系列符合某個句法規則的
字串。)
```
![bg](https://i.imgur.com/s4zlJMw.png)
---
正規表示式規則說明
* `[ ]` 指定的範圍,例如 `[a-z]` 尋找符合 a-z 範圍間的字串
* `+` 代表出現一次或多次,例如 `a+` 尋找 a 出現一次或多次的字串
* 現有資料有大小寫英文、空白、逗號。改寫規則`[a-zA-Z\s,]+`
![40%](https://i.imgur.com/fl4FuKR.png)
圖出處: https://regexper.com 教學:[動動手來學 Regular Expression 正規表達式](https://5xruby.tw/posts/learn-regular-expression/)
---
進行資料處理
* 資料處理: 使用 [LibreOffice](https://zh-tw.libreoffice.org) Calc 試算表軟體的 [REGEX](https://help.libreoffice.org/6.2/en-US/text/scalc/01/func_regex.html) 函數,支援的 [List of Regular Expressions](https://help.libreoffice.org/6.2/en-US/text/shared/01/02100001.html?&DbPAR=WRITER&System=MAC)
* `=REGEX(C2, "[a-zA-Z\s,]+")` 如果 C2 儲存格包含英文、空格、逗號,則回傳符合字串,若無則回傳 `#N/A`
* `=REGEX(C2, "[[^\u0000-\u0080]+]+")` 如果 C2 儲存格包含中文,則回傳符合字串,若無則回傳 `#N/A`
* 不能用 `=REGEX(C2, "[[:alnum:]\s,]+")` 如果 C2 儲存格包含文數字,則回傳符合字串,若無則回傳 `#N/A`
* 如果要用 Google Sheet 可以使用 [REGEXMATCH](https://support.google.com/docs/answer/3098292?hl=zh-Hant) 函數 `=REGEXMATCH(C2, "([^\x00-\x80]+)")` 如果 C2 儲存格包含中文,則回傳 `TRUE` ,若無則回傳 `FALSE`
* 參考維基百科補上敘述 e.g. [紅毛城 \- 维基百科,自由的百科全书](https://zh.wikipedia.org/zh-tw/%E7%B4%85%E6%AF%9B%E5%9F%8E)
---
### Wikidata 資料類型
`陳述` (`statement`) 需要包含 `entity`, `property` & `value`
| entity | property | value |
| ----------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------------------------------------- |
| [金城武 (Q310252)](https://www.wikidata.org/wiki/Q310252) | [職業 (P106)](https://www.wikidata.org/wiki/Property:P106) | [演員 (Q33999)](https://www.wikidata.org/wiki/Q33999) ... |
* `entity` 可以是 [item](https://www.wikidata.org/wiki/Help:Data_type#%E9%A0%85%E7%9B%AE) (項目), a property, a [lexeme](https://www.wikidata.org/wiki/Help:Data_type#Lexemes) (詞位), a [form](https://www.wikidata.org/wiki/Help:Data_type#Forms) (詞形), or a [sense](https://www.wikidata.org/wiki/Help:Data_type#Senses) (含意)。為避免混淆金城武、土城金城武、淡水金城武。 Wikidata 不使用名稱,而是 Q 開頭的識別碼,例如[金城武 (Q310252)](https://www.wikidata.org/wiki/Q310252) 對應到「台裔日本演員」
* [property](https://www.wikidata.org/wiki/Help:Data_type#%E5%B1%AC%E6%80%A7) (屬性) 可解釋為資料的類別,例如金的職業是演員、歌手等,其中的職業是一種 property:[職業 (P106)](https://www.wikidata.org/wiki/Property:P106)
* `value` 可以是 `entity`, a [string](https://www.wikidata.org/wiki/Help:Data_type#%E5%AD%97%E4%B8%B2), a [time](https://www.wikidata.org/wiki/Help:Data_type#%E6%99%82%E9%96%93), a [location coordinate](https://www.wikidata.org/wiki/Help:Data_type#%E5%9C%B0%E7%90%86%E5%BA%A7%E6%A8%99), or a [quantity](https://www.wikidata.org/wiki/Help:Data_type#%E6%95%B8%E9%87%8F) 例如[演員 (Q33999)](https://www.wikidata.org/wiki/Q33999) 是另一項 entity/item
---
### CSV 匯入範例
```
qid,Dzh
Q713077,位於台灣新北市淡水區的古蹟
Q5875008,位於今台灣新北市淡水區,為建造於1886年的火炮砲台,佔地約8公頃
Q10898933,為清朝淡水關稅務司的官邸,別稱小白宮,建於1870年,位於新北市淡水區埔頂
Q10911383,台灣臺北市直轄市定古蹟
```
可參考[QuickStatements](https://tools.wmflabs.org/quickstatements/#/batch) 文件提供的範例
---
### 匯入格式
`P1234` 設定該條目的 `property`
* 語法: `entity TAB property TAB value`
* 範例:`Q10911383 TAB P1435 TAB Q63183513` 代表將 [原臺灣軍司令部 (Q10911383)](https://www.wikidata.org/wiki/Q10911383)的 `property` [遺產定位 (P1435)](https://www.wikidata.org/wiki/Property:P1435) 設定是 [直轄市定古蹟 (Q63183513)](https://www.wikidata.org/wiki/Q63183513)
---
#### 設定`標籤`、`描述`、`亦稱為`、`資料來源`、`sitelinks`
![](https://i.imgur.com/jettJFe.png)
`Len` 設定指定語言代碼的 `Label` (`標籤`)
* 語法: `entity TAB property TAB value`
* 範例:`Q10911383 TAB Lzh-tw TAB "原臺灣軍司令部"` 代表將「[原臺灣軍司令部 (Q10911383)](https://www.wikidata.org/wiki/Q10911383)」的`中文(台灣)` (`zh-tw`) 語言代碼的 `標籤`設定是「原臺灣軍司令部」
---
`Dfr` 設定指定語言代碼的 `Description` (`描述`)
* 語法: `entity TAB property TAB value`
* 範例:`Q713077 TAB Dzh-tw TAB "位於台灣新北市淡水區的古蹟"` 代表將「[紅毛城 (Q713077)](https://www.wikidata.org/wiki/Q713077)」的`中文(台灣)` (`zh-tw`) 語言代碼的 `描述`設定是「位於台灣新北市淡水區的古蹟」
---
`Ade` 設定指定語言代碼的 `Alias` (`亦稱為`)
* 語法: `entity TAB property TAB value`
* 範例:`Q10911383 TAB Azh-tw TAB "原台灣軍司令部"` 代表將「[原臺灣軍司令部 (Q10911383)](https://www.wikidata.org/wiki/Q10911383)」的`中文(台灣)` (`zh-tw`) 語言代碼的 `亦稱為`設定是「原台灣軍司令部」
---
`Senwiki` 設定站內連結
* 語法: `entity TAB property TAB value`
* 範例:`Q10911383 TAB Szhwiki TAB "原臺灣軍司令部"` 將 [原臺灣軍司令部 (Q10911383)](https://www.wikidata.org/wiki/Q10911383) 連結到中文維基頁面「原臺灣軍司令部」
| site id | 語言 |
| -------- | -------- |
| enwiki | 英文 [Wikipedia](https://en.wikipedia.org/wiki/Main_Page) |
| zhwiki | 中文 [维基百科](https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5) |
| zh-yuewiki | 粵文 [維基百科](https://zh-yue.wikipedia.org/wiki/%E9%A0%AD%E7%89%88) |
| zh_min_nanwiki | 閩南語 [Wikipedia, chū\-iû ê pek\-kho\-choân\-su](https://zh-min-nan.wikipedia.org/wiki/Th%C3%A2u-ia%CC%8Dh) |
| classicalwiki | 文言 [維基大典](https://zh-classical.wikipedia.org/wiki/%E7%B6%AD%E5%9F%BA%E5%A4%A7%E5%85%B8:%E5%8D%B7%E9%A6%96) |
| hakwiki | 客家話 [維基百科-自由个百科全書](https://hak.wikipedia.org/wiki/Th%C3%A8u-Ya%CC%8Dp) |
---
`S1234` 設定目前輸入陳述的資料來源是 `P1234` ,但是不需要加上 `P`
* 語法: `entity TAB property1 TAB value1 TAB property2 TAB value2`
* 範例:`Q10911383 TAB P625 TAB "25°2'14"N, 121°30'38"E" TAB S143 TAB Q30239` 將 「[原臺灣軍司令部 (Q10911383)](https://www.wikidata.org/wiki/Q10911383)」 的 [地理座標 (P625)](https://www.wikidata.org/wiki/Property:P625) 的資料來源設定是 [匯入自 (P143)](https://www.wikidata.org/wiki/Property:P143) [中文維基百科 (Q30239)](https://www.wikidata.org/wiki/Q30239)
---
#### `陳述` 加上 `限定詞` (`qualifier`)
* 語法: 每個`陳述`的 `entity TAB property TAB value` 後面可以加上無限次的 `property` 與 `value` 雙人組合
* 使用時機:
* 事件起始與結束時間,例[巴黎聖母院大火](https://www.wikidata.org/wiki/Q63167656) [始於 (P580)](https://www.wikidata.org/wiki/Property:P580) 2019/4/15、[終於 (P582)](https://www.wikidata.org/wiki/Property:P582) 2019/4/16
* [出生日期 (P569)](https://www.wikidata.org/wiki/Property:P569)與[死亡日期 (P570)](https://www.wikidata.org/wiki/Property:P570)
* 加上 `value` 的 [資料來源](https://www.wikidata.org/w/index.php?title=Help:Sources/zh&variant=zh-tw) 等
文件說明: [Help:Qualifiers \- Wikidata](https://www.wikidata.org/wiki/Help:Qualifiers)
---
開放街圖 OSM 屬性
[OSM關係識別碼 (P402)](https://www.wikidata.org/wiki/Property:P402) :「地方或物件在開放街圖上的關係ID編號」例如:
* [中華民國 (Q865)](https://www.wikidata.org/wiki/Q865) 的 OSM關係識別碼: [449220](https://www.openstreetmap.org/relation/449220)、
* [臺北市 (Q1867)](https://www.wikidata.org/wiki/Q1867) 的 OSM關係識別碼: [1293250](https://www.openstreetmap.org/relation/1293250)
![bg](https://i.imgur.com/4giWo8J.png)
---
### 實際操作
* 連往 [<i>QuickStatements</i>](https://tools.wmflabs.org/quickstatements/#/)
* 登入 wikimedia 專案帳號
* 點選 `New Batch` 按鈕
* 輸入一行或多行指令
* 點選 `Import V1 commands` 或 `Import CSV commands`
* **負責任**地預覽匯入結果
* 確認執行結果,出錯時恢復上一步驟
---
## 資料探索
### 資料探索1: 該用什麼 property
列出[古蹟(Q1081138)](https://www.wikidata.org/wiki/Q1081138) 使用的 property ([link](https://query.wikidata.org/#%23%20SELECT%20DISTINCT%20%3Fproperty%20%3FpropertyLabel%20%20WHERE%20%7B%0ASELECT%20%3Fproperty%20%3FpropertyLabel%20%28COUNT%28%3Fproperty%29%20AS%20%3Fcount%29%20WHERE%20%7B%0A%20%20%3Fitem%20wdt%3AP31%20wd%3AQ1081138%20.%0A%20%20%3Fitem%20%3Fproperty%20%3Fvalue%20.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22zh%22%20%7D%0A%7D%0A%0AGROUP%20BY%20%3Fproperty%20%3FpropertyLabel%0AORDER%20BY%20DESC%28%3Fcount%29))
```SPARQL
SELECT ?property ?propertyLabel (COUNT(?property) AS ?count) WHERE {
?item wdt:P31 wd:Q1081138 .
?item ?property ?value .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "zh"
}
}
GROUP BY ?property ?propertyLabel
ORDER BY DESC(?count)
```
相關資料: [Wikidata:List of properties/art \- Wikidata](https://www.wikidata.org/wiki/Wikidata:List_of_properties/art)、[藝術相關維基數據屬性 (Q27918607)](https://www.wikidata.org/wiki/Q27918607)
---
### cont. 排序 property 出現次數
![](https://i.imgur.com/jvdZwkC.png)
---
資料處理
* 如果原網址 `http://www.wikidata.org/entity/P10` 修改成 `https://www.wikidata.org/wiki/Property:P10` 否則會無法抓到標題,出現 `#N/A` 錯誤
* 為避免重複,只篩選網址是 `http://www.wikidata.org/prop/P` 開頭
* 使用 Google sheet [IMPORTXML](https://support.google.com/docs/answer/3093342?hl=zh-Hant) 函數 `=IMPORTXML(C2, "//title")` 自動抓取 `C2` 儲存格內網址的標題
* 預設會抓到英文標題,顯示中文標題的方式是網址後加上 `?uselang=zh-tw`
[example](https://docs.google.com/spreadsheets/d/1pQQ1YwMLlHKbK2obrLCOtzPDZ-Gq-O21-F6RDMqfYpA/edit?usp=sharing)
---
待續
* [古蹟(Q1081138)](https://www.wikidata.org/wiki/Q1081138) & [古蹟 (Q63183471)](https://www.wikidata.org/wiki/Q63183471) 「根據中華民國法律《文化資產保存法》指定的古蹟」常用 `property` 差異
* 區分不同政治實體的常用 `property` 差異,例如中華民國河流 [Wikidata Query](https://query.wikidata.org/#SELECT%20%3Fproperty%20%3FpropertyLabel%20%28COUNT%28%3Fproperty%29%20AS%20%3Fcount%29%20%20%20WHERE%20%7B%0A%20%20%3Fitem%20wdt%3AP17%20wd%3AQ865.%0A%20%20%3Fitem%20wdt%3AP31%20wd%3AQ4022%3B%0A%20%20%20%20%3Fproperty%20%3Fvalue.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22zh%22.%20%7D%0A%20%20%23%20filter%28regex%28%3Fproperty%2C%20%22p%22%2C%20%22i%22%29%29%0A%7D%0AGROUP%20BY%20%3Fproperty%20%3FpropertyLabel%0AORDER%20BY%20DESC%20%28%3Fcount%29%0A%23%20LIMIT%20100) v.s. 中華人民共和國河流 [Wikidata Query](https://query.wikidata.org/#SELECT%20%3Fproperty%20%3FpropertyLabel%20%28COUNT%28%3Fproperty%29%20AS%20%3Fcount%29%20WHERE%20%7B%0A%20%20%3Fitem%20wdt%3AP17%20wd%3AQ148%3B%0A%20%20%20%20wdt%3AP31%20wd%3AQ4022%3B%0A%20%20%20%20%3Fproperty%20%3Fvalue.%0A%20%20SERVICE%20wikibase%3Alabel%20%7B%20bd%3AserviceParam%20wikibase%3Alanguage%20%22zh%22.%20%7D%0A%7D%0AGROUP%20BY%20%3Fproperty%20%3FpropertyLabel%0AORDER%20BY%20DESC%20%28%3Fcount%29)
---
### 資料探索2: 上級分類
[Music genres](https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples#Music_genres)
```SPARQL
#graph rendering could be slow due to large number of results
#defaultView:Graph
SELECT ?item ?itemLabel
?_image
?_subclass_of ?_subclass_ofLabel
WHERE {
?item wdt:P31 wd:Q188451;
wdt:P279 ?_subclass_of.
SERVICE wikibase:label {
bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
}
OPTIONAL { ?item wdt:P18 ?_image. }
}
```
查詢結果: https://w.wiki/6zj
網絡圖: http://bit.ly/2Ne1rvc
---
列出上級分類
![](https://i.imgur.com/Ua4sWHz.png)
---
## 新手技術問題排除
### QuickStatements 匯入遇到 No valid command found
![](https://i.imgur.com/sXN9mXY.png)
---
解決方式: (1) 如果是選擇「Import V1 commands」文字欄位值前後需要加上雙引號,要額外注意 entity 與 property 不需要加上雙引號
格式:`entity TAB property TAB "value"`
錯誤寫法
```
Q16929085 Dzh 位於台灣新北市市定古蹟
```
需要修改成
```
Q16929085 Dzh "位於台灣新北市市定古蹟"
```
LibreOffice Calc 或 Excel 可以使用函數,在儲存格前後加上雙引號
```excel
="""" & C1 & """" 是的!重複四次雙引號!
或
=CHAR(34) & C1 & CHAR(34)
```
---
(2) 如果是選擇「Import CSV commands」檢查匯入內容的格式
[QuickStatements](https://tools.wmflabs.org/quickstatements/#/batch) 文件提供的範例
```
qid,Len,Den,Aen,P31,-P31,P21,P735,qal1545,S248,s214,S143,Senwiki
Q42,Douglas Adams,author,Douglas Noël Adams,Q5,Q36180,Q6581097,Q463035,1,Q54919,113230702,Q328,Douglas Adams
```
---
## 其他工具
Google sheet 外掛工具 [Wikipedia and Wikidata Tools](https://chrome.google.com/webstore/detail/wikipedia-and-wikidata-to/aiilcelhmpllcgkhhpifagfehbddkdfp)
[example](https://docs.google.com/spreadsheets/d/18qEO33mE_rP4DAL6sQDv5rVFBgW8ob_JE_ODqgaGqUE/edit?usp=sharing)
---
## 參考資料
* [SPARQL \- 维基百科,自由的百科全书](https://zh.wikipedia.org/wiki/SPARQL)
* [Help:QuickStatements \- Wikidata](https://www.wikidata.org/wiki/Help:QuickStatements)
* QuickStatements [CSV file syntax](https://www.wikidata.org/wiki/Help:QuickStatements#CSV_file_syntax)
* 中文條目的 properties [Wikidata:Database reports/List of properties/all/zh \- Wikidata](https://www.wikidata.org/wiki/Wikidata:Database_reports/List_of_properties/all/zh)
* [Wikidata:WikiProject Historical Place \- Wikidata](https://www.wikidata.org/wiki/Wikidata:WikiProject_Historical_Place#Properties_for_places)
* [維基數據沙盒 \- Wikidata](https://www.wikidata.org/wiki/Q4115189) 提供測試功能,請溫柔地對待它