Wikidata問合せサービス/利用者便覧
ウィキデータ問合せサービス Wikidata Query Service (WDQS) はSPARQL端点を提供するソフトウェア兼公共サービスで、利用者はウィキデータのデータセットに検索をかけることができます。
このページあるいは関連するその他の説明文書は、臨機応変に更新されます。このサービスを利用する場合は、これらをウォッチリストに追加するようお勧めします。
SPARQL問合せの例は、SPARQLの例のページを参照してください。
データセット
ウィキデータ問合せサービスの対象はWikidata.orgに保存されたデータセットで、RDFダンプ形式説明文書に解説してあるとおり、RDF形式で保存されます。
このサービスのデータセットは主に性能上の理由から、RDF形式のダンプファイルと完全には一致しません。相違点の解説は説明文書を参照してください。
同じデータは毎週、次の場所でダンプを公開しています(訳注:ウィキデータ・ウィキの実体の索引)。
https://dumps.wikimedia.org/wikidatawiki/entities/
基本 - SPOまたは構文の3要素を理解する
SPOつまり「主語・述語・目的語」(Subject, Predicate, Object)の3つの要素はデータに関する情報を表現し、これをトリプルあるいはウィキデータではデータの文(ステートメント)と呼んでいます。
「アメリカ合衆国の首都はワシントンD.C.である」という文の、主語は〈アメリカ合衆国〉(Q30)、述部は〈首都は〜である〉(P36)、目的語は〈ワシントンD.C.〉(Q61)で、この文を構成するURIは3つとなります。
<http://www.wikidata.org/entity/Q30> <http://www.wikidata.org/prop/direct/P36> <http://www.wikidata.org/entity/Q61> .
接頭辞のおかげで(下記で詳述)、同じ文は下記のように簡潔に書き換えができます。文の終わりにある句点に注意してください。
wd:Q30 wdt:P36 wd:Q61 .
/entity/ (wd:) はウィキデータのエンティティを表します(値はQ-番号)。/prop/direct/ (wdt:) は「真に近い」属性 — 文を読んだときにユーザーが最も想定しやすい値になります。「真に近い」属性は、文により他のものよりも「より真である」ものがあるため、設定が必要です。たとえば「アメリカ合衆国の首都はニューヨークである」という文もある意味で真で — ただしアメリカの1790年の歴史的内容を考慮に入れた場合に限定されます。WDQS はどの文を「真に近い」と扱うか、ランクを使って判断します。
真に近い文に加え、WDQS は(真に近い文もそうでないものも)すべての文を保存しますが、同じ接頭辞 wdt: は使いません。アメリカの首都は、ワシントンDC、フィラデルフィア、ニューヨークという3つの値を持ち、さらにそれぞれの値が、「修飾子」— 開始日と終了日など、追加の情報でそれぞれの文の範囲を狭めるもの — を持ちます。WDQS はトリプルストアにこの情報を保存するために、自動的に「宣言」される主語を導入しています。これは基本的にはランダムな数字です。
wd:Q30 p:P36 <random_URI_1> . # US "indirect capital" is <X>
<random_URI_1> ps:P36 wd:Q61 . # The X's "real capital value" is Washington DC
<random_URI_1> pq:P580 "1800-11-17" . # The X's start date is 1800-11-17
詳細はSPARQL tutorial - qualifiersを参照してください。
SPOはまた、クエリに用いる基本的な構文のレイアウトとして、RDFデータ構造、あらゆるグラフ データベースを対象にします。高度なパフォーマンス グラフ データベースにささえられた、triplestoreとしてのウィキデータ クエリ サービス(WDQS)も対象に含まれます。
トリプル(SPO)の高度な利用にはさらに、トリプルを目的語もしくは主語として他のトリプルに用いるところまで拡張します!
基本 - 接頭辞(プレフィックス)とは
主語と述語(トリプルの最初と2番目の要素)はつねにURIとして保存する必要があります。一例として、主語が宇宙 (Q1)の場合は<https://www.wikidata.org/wiki/Q1>として保存されます。接頭辞があると左記の長いURIをコンパクトにwd:Q1と書くことができます。主語や述語に対して、目的語は(トリプルの第3の要素)URIでも、そのまま数字または文字列などでも保存できます。
WDQSは接頭辞と呼ばれるショートカットの省略形をたくさん受け付けます。ウィキデータ固有のもの(例:wd, wdt, p, ps, bd)のほか、多くは用途が一般的なrdf、skos、owl、schemaなどの外部接頭辞です。
下記のクエリでは、「P279 = Q7725634」という文にあてはまる項目を求めています。より完全な用語でいうと、述語として「分類される」を持ち、その目的語が=「文芸作品」であるような主語を選択している、となります。
出力の変数:
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wds: <http://www.wikidata.org/entity/statement/>
PREFIX wdv: <http://www.wikidata.org/value/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX pq: <http://www.wikidata.org/prop/qualifier/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bd: <http://www.bigdata.com/rdf#>
# The below SELECT query does the following:
# Selects all the items(?s subjects) and their descriptions(?desc)
# that have(WHERE) the statement(?s subject) has a direct property(wdt:) = P279 <subclasses of>
# with a value of entity(wd:) = Q7725634 <Literary Work>
# and optionally return the label using the Wikidata label service
SELECT ?s ?desc WHERE {
?s wdt:P279 wd:Q7725634 .
OPTIONAL {
?s rdfs:label ?desc filter (lang(?desc) = "en").
}
}
拡張機能
このサービスはSPARQLの標準機能に対して、下記の拡張機能を提供します。
ラベル検索サービス
URI <http://wikiba.se/ontology#label>を使う特別なサービスにより、実行しようとするクエリのラベルや別名(Alias=コマンドを別名で登録したエイリアス)あるいはエンティティの説明を入手できます。SPARQLクエリでこれらを入手しようとすると複雑な手順が必要ですが、このサービスはそれを省略してくれるため、ラベルを入手したいときに大変便利です。
サービスは手動もしくは自動で実行します。
自動モードではサービスのテンプレートを指定するだけです。例:
PREFIX wikibase: <http://wikiba.se/ontology#>
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
そして WDQS が自動生成するラベルは以下のとおりです。
- If an unbound variable in
SELECT
is named?NAMELabel
, then WDQS produces the label (rdfs:label
) for the entity in variable?NAME
. - If an unbound variable in
SELECT
is named?NAMEAltLabel
, then WDQS produces the alias (skos:altLabel
) for the entity in variable?NAME
. - If an unbound variable in
SELECT
is named?NAMEDescription
, then WDQS produces the description (schema:description
) for the entity in variable?NAME
.
それぞれの事例では?NAME
の変数は固定されるべきで、そうしないとサービスが機能しません。
Automatic mode only inspects the projection of the query – for instance, in SELECT ?aLabel (GROUP_CONCAT(?bLabel) AS ?bLabels)
, only the first label is recognized, and SELECT *
is not supported by automatic mode at all.
In such cases, you will need to use manual mode (see below).
You specify your preferred language(s) for the label with one or more of bd:serviceParam wikibase:language "language-code"
triples.
Each string can contain one or more language codes, separated by commas.
WDQS considers languages in the order in which you specify them.
If no label is available in any of the specified languages, the Q-id of the entity (without any prefix) is its label.
The Wikidata Query Service website automatically replaces [AUTO_LANGUAGE]
with the language code of current user's interface. For example, if the user's UI is in French, the SPARQL's code bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en"
will be converted to bd:serviceParam wikibase:language "fr,en"
before being sent to the query service.
たとえばアメリカ合衆国の大統領夫妻の一覧を閲覧する場合。
SELECT ?p ?pLabel ?w ?wLabel WHERE {
wd:Q30 p:P6/ps:P6 ?p .
?p wdt:P26 ?w .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
この事例では WDQS が属性としてラベル?pLabel
と?wLabel
を自動生成します。
手動モードでは、サービス呼び出し内でラベル変数を明示的に結び付けるところ、WDQS は言語の解決とフォールバックを提供します。 例:
SELECT *
WHERE {
SERVICE wikibase:label {
bd:serviceParam wikibase:language "fr,de,en" .
wd:Q123 rdfs:label ?q123Label .
wd:Q123 skos:altLabel ?q123Alt .
wd:Q123 schema:description ?q123Desc .
wd:Q321 rdf:label ?q321Label .
}
}
ラベルと説明をフランス語、ドイツ語、英語で検討し、そのどれにも該当しない場合、ラベルに Q-id を採用します。
地理空間検索
このサービスでは座標を与えられたアイテムを、特定の枠組みの中心から特定の距離の範囲内で検索することができます。
特定のポイント周辺の検索
例:
# Airports within 100km from Berlin
#defaultView:Map
SELECT ?place ?placeLabel ?location ?dist WHERE {
# Berlin coordinates
wd:Q64 wdt:P625 ?berlinLoc .
SERVICE wikibase:around {
?place wdt:P625 ?location .
bd:serviceParam wikibase:center ?berlinLoc .
bd:serviceParam wikibase:radius "100" .
bd:serviceParam wikibase:distance ?dist.
}
# Is an airport
FILTER EXISTS { ?place wdt:P31/wdt:P279* wd:Q1248784 }
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
} ORDER BY ASC(?dist)
around
サービス呼び出しの1行目は?item
predicate
?location
形式が必須で、検索結果は特定の位置にある?item
を座標?location
の項目と対応させます。
述語 | 意味 |
---|---|
wikibase:center | 周囲で検索を実行した中心点。検索が成功するには固定が必要。 |
wikibase:radius | 中心点からの距離。現状では常にキロメートル単位で、ほかの単位のサポートは未定。 |
wikibase:globe | オプション。検索した天体。既定は地球 (wd:Q2)。 |
wikibase:distance | 距離情報を受け取る変数 |
枠組み内の検索
ボックス検索の例:
# Schools between San Jose, CA and Sacramento, CA
#defaultView:Map
SELECT * WHERE {
wd:Q16553 wdt:P625 ?SJloc .
wd:Q18013 wdt:P625 ?SCloc .
SERVICE wikibase:box {
?place wdt:P625 ?location .
bd:serviceParam wikibase:cornerSouthWest ?SJloc .
bd:serviceParam wikibase:cornerNorthEast ?SCloc .
}
FILTER EXISTS { ?place wdt:P31/wdt:P279* wd:Q3914 }
}
または:
#Schools between San Jose, CA and San Francisco, CA
#defaultView:Map
SELECT ?place ?location WHERE {
wd:Q62 wdt:P625 ?SFloc .
wd:Q16553 wdt:P625 ?SJloc .
SERVICE wikibase:box {
?place wdt:P625 ?location .
bd:serviceParam wikibase:cornerWest ?SFloc .
bd:serviceParam wikibase:cornerEast ?SJloc .
}
FILTER EXISTS { ?place wdt:P31/wdt:P279* wd:Q3914 }
}
座標は直接、指定できます:
# Schools between San Jose, CA and Sacramento, CA
#same as previous
#defaultView:Map
SELECT * WHERE {
SERVICE wikibase:box {
?place wdt:P625 ?location .
bd:serviceParam wikibase:cornerWest "Point(-121.872777777 37.304166666)"^^geo:wktLiteral .
bd:serviceParam wikibase:cornerEast "Point(-121.486111111 38.575277777)"^^geo:wktLiteral .
}
FILTER EXISTS { ?place wdt:P31/wdt:P279* wd:Q3914 }
}
box
サービス呼び出しの1行目は必ず ?item
predicate
?location
形式で、検索結果は ?item
を指定の場所の項目と、?location
をその座標と結び付けます。サポートする変数の一覧を示します。
述語 | 意味 |
---|---|
wikibase:cornerSouthWest | 枠の南西角。 |
wikibase:cornerNorthEast | 枠の北東角。 |
wikibase:cornerWest | 枠の西角。 |
wikibase:cornerEast | 枠の東角。 |
wikibase:globe | オプション。検索した天体。既定は地球 (wd:Q2)。 |
wikibase:cornerSouthWest
とwikibase:cornerNorthEast
は、wikibase:cornerWest
とwikibase:cornerEast
同様に必ず一緒に使う必要があり、 混同はできません。
述語のwikibase:cornerWest
とwikibase:cornerEast
が使われた場合、ボックスの対角線の座標を仮定し、そこから対角を導き出します。
その他の関数
距離関数
geof:distance
関数は地球上の2地点間の距離をキロメートル単位で返します。
使用例:
# Airports within 100km from Berlin
SELECT ?place ?placeLabel ?location ?dist WHERE {
# Berlin coordinates
wd:Q64 wdt:P625 ?berlinLoc .
SERVICE wikibase:around {
?place wdt:P625 ?location .
bd:serviceParam wikibase:center ?berlinLoc .
bd:serviceParam wikibase:radius "100" .
}
# Is an airport
?place wdt:P31/wdt:P279* wd:Q1248784 .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
BIND(geof:distance(?berlinLoc, ?location) as ?dist)
} ORDER BY ?dist
# Places around 0°,0°
SELECT *
{
SERVICE wikibase:around {
?place wdt:P625 ?location .
bd:serviceParam wikibase:center "Point(0 0)"^^geo:wktLiteral .
bd:serviceParam wikibase:radius "250" .
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . ?place rdfs:label ?placeLabel }
BIND(geof:distance("Point(0 0)"^^geo:wktLiteral, ?location) as ?dist)
}
ORDER BY ?dist
座標部分関数
関数のgeof:globe
とgeof:latitude
およびgeof:longitude
は座標の部分 - それぞれ地球URIと緯度および経度を返します。
URL関数を解読する
wikibase:decodeUri
関数は指定されたURI文字列を解読(URLエンコーディングを逆処理)します。ウィキペディアの記事名(エンコードされている)を実際の文字列に変換するときに、これが必要な場合があります。この関数はSPARQL encode_for_uriの逆関数です。
自動接頭辞
一般的なクエリに用いる接頭辞の多くは、明示的に指定しなくてもエンジンによってサポートされています。
日付の延長
サービスは1秒でxsd:dateTime
タイプの日付の値を過去から未来の290億年間を処理します。
WDQSはUnixエポックから64ビット秒数で日付を保存します。
ブレーズグラフ関数
ブレーズグラフ(Blazegraph)プラットフォームはその上にWDQSが実装されており、独自のSPARQL拡張機能の組み合わせがあります。ブレーズグラフ Wikiで説明されたいくつかのグラフトラバーサルアルゴリズムがあり、その中にBFS、最短パス、CC、PageRankの実装を含みます。
クエリ実行のコントロールとエンジンのさまざまな特徴については、上記に加えてクエリのヒントに書かれたブレーズグラフの説明文書も参照してください。
連合クエリ
SPARQL連合クエリから選択した件数の外部データベースの呼び出しができます。サポートされるエンドポイントは次のとおりです。 関連ページについては専用ページの連合したエンドポイントの総覧をご参照ください。
連合クエリの例:
- Items used: Lope de Vega (Q165257)
- Properties used: BVMC person ID (P2799)
SELECT ?workLabel WHERE {
wd:Q165257 wdt:P2799 ?id
BIND(uri(concat("http://data.cervantesvirtual.com/person/", ?id)) as ?bvmcID)
SERVICE <http://data.cervantesvirtual.com/openrdf-sesame/repositories/data> {
?bvmcID <http://rdaregistry.info/Elements/a/otherPFCManifestationOf> ?work .
?work rdfs:label ?workLabel
}
}
注記:上記にまとめたデータベースはウィキデータとは大きく異なるオントロジー(本体論)を使用している可能性があります。これらのデータベースのオントロジーとデータアクセスの方法は、上記の所有者向けの説明文書のリンクを参照してください。
MediaWiki API
完全版の解説は MediaWiki API サービス説明文書のページを参照してください。
MediaWiki API サービスは SPARQL から MediaWiki API を呼び出し、SPARQL クエリの結果を受け取ります。サンプル (カテゴリに属するものを探す):
- Items used: parking lot (Q6501349)
- Properties used: topic's main category (P910)
SELECT * WHERE {
wd:Q6501349 wdt:P910 ?category .
?link schema:about ?category; schema:isPartOf <https://en.wikipedia.org/>; schema:name ?title .
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "Generator" .
bd:serviceParam wikibase:endpoint "en.wikipedia.org" .
bd:serviceParam mwapi:gcmtitle ?title .
bd:serviceParam mwapi:generator "categorymembers" .
bd:serviceParam mwapi:gcmprop "ids|title|type" .
bd:serviceParam mwapi:gcmlimit "max" .
# out
?subcat wikibase:apiOutput mwapi:title .
?ns wikibase:apiOutput "@ns" .
?item wikibase:apiOutputItem mwapi:item .
}
}
ウィキメディア・サービス
ウィキメディアが走らせるWDQSの公開サービスの例は、リンク先から利用できます。
公開エンドポイントのクエリのランタイムは60秒が上限で、エンドポイントがGUIでも公開SPARQLでも同じです。 もしクエリを走らせるのにもっと長い時間が必要な場合は、Discoveryチームと打ち合わせをお願いします。
GUI
http://query.wikidata.org/のホームページにあるGUIは、SPARQLクエリの編集とクエリエンジンへの提出に使います。 結果はHTMLテーブルに表示されます。 クエリごとに固有のURLが与えられ、ブックマークして後で閲覧することができます。 ここでいうURLを開くと、クエリが編集ウィンドウに入力されるものの、そのままでは実行されません - 必ず「実行」ボタンを押してください。
また、クエリの短縮URLを作成するには、右側にある「短縮URLを作成」を押してURL短縮サービスを起動します - この操作でそのとき手がけているクエリの短縮URLが生成されます。
「接頭辞を追加」ボタンはSPARQLクエリの標準の接頭辞を記したヘッダを生成します。便利に使える接頭辞の全体リストはRDF書式説明文書にまとめてあります。 注記:WDQSが既定でサポートしているため、ほとんどの一般的な接頭辞は自動で発動します。
GUIには軽量なエンティティ検索機能が備わり、エンティティ結果の横の虫眼鏡アイコン「🔍」を押して有効にします。 エンティティのQ-IDを直接クリックすると、wikidata.orgが開きそのエンティティのページを表示します。
既定の表示
WDQS GUIでクエリを走らせる場合、結果の表示形式を選択できます:クエリの冒頭の#defaultView:viewName
でコメントを選択します。
SPARQLエンドポイント
SPARQL queries can be submitted directly to the SPARQL endpoint with a GET or POST request to https://query.wikidata.org/sparql
.
GET requests have the query specified in the URL, in the format https://query.wikidata.org/sparql?query=(SPARQL_query)
, e.g. https://query.wikidata.org/sparql?query=SELECT%20?dob%20WHERE%20{wd:Q42%20wdt:P569%20?dob.}
.
POST requests can alternatively accept the query in the body of the request, instead of the URL, which allows running larger queries without hitting URL length limits. (Note that the POST body must still include the query=
prefix (that is, it should be query=(SPARQL_query)
rather than just (SPARQL query)
), and the SPARQL query must still be URL-escaped.)
The result is returned as XML by default, or as JSON if either the query parameter format=json
is included in the URL, or the header Accept: application/sparql-results+json
is provided with the request.
JSON 形式は標準SPARQL 1.1 Query Results JSON Format。
小規模なクエリにはGETを、大規模な場合はPOSTを利用するよう推奨されます。POSTはクエリをキャッシュしません。
サポートする形式
SPARQLエンドポイントでサポートする出力形式は下記のとおりです。
形式 | HTTP ヘッダー | クエリのパラメータ | 説明 |
---|---|---|---|
XML | Accept: application/sparql-results+xml | format=xml | XML 出力形式は既定。詳細の参照先は https://www.w3.org/TR/rdf-sparql-XMLres/ |
JSON | Accept: application/sparql-results+json | format=json | JSON 出力形式。例:https://www.w3.org/TR/sparql11-results-json/ |
TSV | Accept: text/tab-separated-values | 詳細の参照先 https://www.w3.org/TR/sparql11-results-csv-tsv/ | |
CSV | Accept: text/csv | 詳細の参照先 https://www.w3.org/TR/sparql11-results-csv-tsv/ | |
バイナリRDF | Accept: application/x-binary-rdf-results-table |
クエリの制限
固定のクエリ期限は60秒 に設定されています。 There are also following limits:
- One client (user agent + IP) is allowed 60 seconds of processing time each 60 seconds
- One client is allowed 30 error queries per minute
Clients exceeding the limits above are throttled with HTTP code 429
.
Use Retry-After
header to see when the request can be repeated.
If the client ignores 429 responses and continues to produce requests over the limits, it can be temporarily banned from the service.
Clients who don’t comply with the User-Agent policy may be blocked completely – make sure to send a good User-Agent
header.
この制限時間を超過したクエリはすべて時間切れになります。 クエリを最適化する、もしくは問題のあるクエリをこちらで報告してください。
また現状では同一IPで並行処理できるクエリは、5件に制限されています。リソースと利用パターンを考慮し、これらの制限を変更する可能性があります。
Explain Query
Blazegraph allows to show query analysis that explains how the query has been parsed and which optimizations were applied.
To see this information, add explain=details
parameter to the query string, for example: https://query.wikidata.org/sparql?query=SELECT%20?dob%20WHERE%20{wd:Q42%20wdt:P569%20?dob.}&explain=details
.
名前空間
ウィキデータ・クエリサービスにはメインの名前空間wdq
が含まれ、SPARQLエンドポイントやその他、以下に一覧した補助的な名前空間のクエリの対象になります。
これら以外の名前空間のデータにクエリを実行するには、エンドポイントのURL https://query.wikidata.org/bigdata/namespace/NAMESPACENAME/sparql を当てます。
カテゴリ
Please see full description on Categories documentation page.
Wikidata Query Service also provides access to the category graph of select wikis. The list of covered wikis can be seen here: https://noc.wikimedia.org/conf/dblists/categories-rdf.dblist
The category namespace name is categories
. The SPARQL endpoint for accessing it is https://query.wikidata.org/bigdata/namespace/categories/sparql .
Please see Categories page for detailed documentation.
DCAT-AP
ウィキデータに対応する DCAT-AP データ (訳注: RDFボキャブラリで、データ・カタログ間の相互運用性を促進。) は https://dcatap.wmflabs.org/ エンドポイントで SPARQL として入手できます。
そのデータにアクセスするSPARQLエンドポイント:https://dcatap.wmflabs.org/sparql
データのソース:https://dumps.wikimedia.org/wikidatawiki/entities/dcatap.rdf
データを取得するクエリの例:
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?url ?date ?size WHERE {
<https://www.wikidata.org/about#catalog> dcat:dataset ?dump .
?dump dcat:distribution [
dct:format "application/json" ;
dcat:downloadURL ?url ;
dct:issued ?date ;
dcat:byteSize ?size
] .
}
Linked Data Fragments エンドポイント
Triple Pattern Fragmentsインタフェースを使ったデータベースのクエリもサポートしています。 これによりコストを下げて効率的にトリプルデータをブラウズすることができ、3つの構成要素のうち1ないし2のみわかる場合はこのテンプレートに対応するトリプルすべてを取得する必要があります。詳細はLinked Data Fragmentsのウェブサイトを参照してください。
インターフェイスの利用には以下の URL からアクセスします: https://query.wikidata.org/bigdata/ldf
。
This service is implemented on the top of Blazegraph database, so it will have the same lag as the Query Service.
Example requests:
- https://query.wikidata.org/bigdata/ldf?subject=http%3A%2F%2Fwww.wikidata.org%2Fentity%2FQ146 - cat (Q146)を含むトリプルの一覧
- https://query.wikidata.org/bigdata/ldf?subject=&predicate=http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23label&object=%22London%22%40en - 英語のラベル「London」を含むトリプル
注;現状ではsubject
とpredicate
およびobject
パラメータの有効な値は完全なURLに限定されます。
既定でHTMLインタフェースが表示されるものの、他にもHTTPヘッダAccept
で示した、いくつかのデータフォーマットが有効です。
Accept | 書式 |
---|---|
text/html | 既定の HTML ブラウザー インターフェイス |
text/turtle | Turtle形式 |
application/ld+json | JSON-LD形式 |
application/n-triples | N-Triples形式 |
application/rdf+xml | RDF/XML 形式 |
ページサイズが100トリプルの場合、データは返します。
ページには1から始まる番号が付与されていて、ページ番号はpage
パラメータで定義します。
スタンドアローン方式のサービス
オープンソースのソフトウェアとして、このサービスは下記に示した手順に従うと、どんなユーザーのサーバ上でも稼動できます。
ハードウェアの推奨条件はBlazegraph説明文書を参照してください。
もしサービスの利用対象がウィキデータ以外のウィキベース案件の場合、詳細の確認をお願いします。
インストール
サービスのインストールで推奨されるのは完全版のサービスパッケージを圧縮形式のZIPファイルで(例:Maven Central から)ダウンロードすることで、グループ IDorg.wikidata.query.rdf
と artifact ID「service
」を使って、あるいは https://github.com/wikimedia/wikidata-query-rdf/ でソース配分をクローンして「mvn package」で構築します。
パッケージのZIPファイルは service-VERSION-dist.zip
として dist/target
ディレクトリに格納されています。
パッケージには .war アプリケーションとしてBlazegraphサーバが含まれ、ウィキデータサイトから新鮮なデータをライブラリに取得するには、修正プログラムサービスを走らせ、さまざまなタスクを簡単にこなすにはスクリプトを採用し、GUIをgui
サブディレクトリにおく必要があります。
GUIを使うには、HTTPサーバの設定を変更します。
http://localhost:9999/bigdata/namespace/wdq/sparql のSPARQLエンドポイントのみ既定で設定されており、既定のBlazegraph GUIは http://localhost:9999/bigdata/ にあります。 既定の設定ではどちらにアクセスするのもローカルホストに限定される点にご注意ください。 外部からアクセスするには、外部のエンドポイントと適切なアクセスコントロールの設定が欠かせません。
画面キャプチャ版の使用
未リリースの画面キャプチャ版を利用する場合で(修正済みのバグを含むリリース版はあるがリリース版が更新されていない場合によくある事例)、バイナリをコンパイルしたくない場合、次のどちらかを利用できます。
- https://github.com/wikimedia/wikidata-query-deploy - プロダクション・バイナリを含むdeployment repo。
git fat
の作動が必須。作動確認をして「git fat pull
」を実行してください。 - https://archiva.wikimedia.org/#artifact/org.wikidata.query.rdf/serviceでArchiva スナップショットを実装 - 最新版を選択し、続いてArtifactsを選び最新版のパッケージをダウンロード。
データの読み込み
詳細なインストール手順は、配布の一部である使用開始の説明文書で詳しく説明されており、以下の手順が含まれます。
- Download recent RDF dump from https://dumps.wikimedia.org/wikidatawiki/entities/ (the RDF one is the one ending in
.ttl.gz
). - Pre-process data with the
munge.sh
script. This creates a set of TTL files with preprocessed data, with names likewikidump-000000001.ttl.gz
, etc. See options for the script below. - Start Blazegraph service by running the
runBlazegraph.sh
script. - Load the data into the service by using
loadData.sh
. Note that loading data is usually significantly slower than pre-processing, so you can start loading as soon as several preprocessed files are ready. Loading can be restarted from any file by using the options as described below. - After all the data is loaded, start the Updater service by using
runUpdate.sh
.
カテゴリの読み込み
カテゴリのデータの読み込みも行うには、以下の手順に従ってください:
- 名前空間の作成。例えば
categories
:createNamespace.sh categories
- そこにデータを読み込む:
forAllCategoryWikis.sh loadCategoryDump.sh categories
注記:ウィキメディアの設定に従い、これらのスクリプトが読みこむデータはウィキメディアに限定。 他のウィキからの読み込みをするには、場合によりスクリプトの変数を変更する必要があります。
スクリプト
配布には以下の便利なスクリプトが同梱されています。
munge.sh
データの読み込みに備えた RDF ダンプのデータの事前処理。
オプション | 必須かどうか | 説明 |
---|---|---|
-f filename | はい | RDF ダンプのファイル名 |
-d directory | いいえ | 処理が済んだファイルを書きこむディレクトリ。既定では現在のディレクトリ |
-l language | いいえ | 指定すると、その言語のラベルのみ取得。単一言語のみ必要な場合はこのオプションを有効にして、性能を上げ、データベースのサイズを抑えてクエリを単純化する。 |
-s | いいえ | 指定すると、サイトリンクのデータを除外。サイトリンクに対するクエリが不用の場合はこのオプションを有効にして、性能を上げデータベースのサイズを抑える。 |
-c size | No | Use this option to override the default chunk size. Too big chunks may time out when importing. |
例:
./munge.sh -c 50000 -f data/wikidata-20150427-all-BETA.ttl.gz -d data -l en -s
loadData.sh
処理済みのデータをブレイズグラフに読みこむ。curl
のインストールが必須。
オプション | 必須かどうか | 説明 |
---|---|---|
-n namespace | はい | データを読みこむグラフ名前空間を指定。WDQS デー他の場合は wdq 。 |
-d directory | いいえ | 処理したファイルを保存するディレクトリの指定。既定では現在のディレクトリ。 |
-h host | いいえ | SPARQL エンドポイントのホスト名。既定ではlocalhost |
-c context | いいえ | SPARQL エンドポイントのコンテキスト URL。既定ではbigdata - 通常、WDQS に対して変更は不要。 |
-s start | いいえ | 開始する処理ファイルの件数。既定では1 |
-e end | いいえ | 終了する処理ファイルの件数 |
例:
./loadData.sh -n wdq -d `pwd`/data
runBlazegraph.sh
ブレイズグラフ・サービスを実行。
オプション | 必須かどうか | 説明 |
---|---|---|
-d directory | いいえ | ブレイズグラフをインストールするホームディレクトリ。既定ではスクリプトが保存されたディレクトリ |
-c context | いいえ | SPARQL エンドポイントのコンテキスト URL。既定では bigdata - 通常は WDQS に対して変更は不要 |
-p port | いいえ | SPARQL サービスのポート番号。既定では 9999 |
-o options | いいえ | コマンドラインにオプションを追加 |
例:
./runBlazegraph.sh
スクリプト内の変数のうち、ユーザーによっては変更を検討するものは2件。
# Q-id of the default globe
DEFAULT_GLOBE=2
# Blazegraph HTTP User Agent for federation
USER_AGENT="Wikidata Query Service; https://query.wikidata.org/";
さらにスクリプトは下記の環境変数を確認(すべてオプション)。
変数 | 既定 | 説明 |
---|---|---|
HOST | localhost | ブレイズグラフ・サービスをバインドするホスト名 |
PORT | 9999 | ブレイズグラフ・サービスをバインドするポート |
DIR | スクリプトを保存するディレクトリ | 設定ファイルを保存するディレクトリ |
HEAP_SIZE | 16g | ブレイズクラフの Java ヒープのサイズ |
MEMORY | -Xms${HEAP_SIZE} -Xmx${HEAP_SIZE}
|
ブレイズグラフの総 Java メモリ設定 |
GC_LOGS | ソースを参照 | GC ログ設定 |
CONFIG_FILE | RWStore.properties | ブレイズグラフの設定ファイルの保存先 |
BLAZEGRAPH_OPTS | 空 | その他のオプションはそのまま Java コマンドラインに渡す |
runUpdate.sh
修正プログラムサービスを走らせる。
オプション | 必須かどうか | 説明 |
---|---|---|
-n namespace | いいえ | データを読み込むグラフ名前空間の指定。WDQS データに対しては必ず wdq を指定。 Default: wdq |
-h host | いいえ | SPARQL エンドポイントのホスト名。既定では localhost |
-c context | いいえ | SPARQL エンドポイントのコンテキスト URL。既定では bigdata - 通常、WDQS に対して変更は不要 |
-l language | いいえ | 指定すると、指定した言語のラベルのみ取得。単一言語のみ必要な場合はこのオプションを有効にして、性能を上げ、データベースのサイズを抑えてクエリを単純化する。 |
-s | いいえ | 指定すると、サイトリンクに関するデータを除外。サイトリンクのクエリが不用の場合はこのオプションを有効にして、性能を上げ、データベースのサイズを抑える。 |
-t secs | いいえ | ブレイズブラフに問い合わせたときのタイムアウト設定。単位は秒。 |
-N | No | This option causes the script to ignore options that may cause problems when running second Updater while the first is already running. Use it when running secondary Updater e.g. to catch up specific item with --ids (see below).
|
-S | No | Log to console instead of log files. Useful when running the script from the command line for maintenance tasks. |
オプションの-l
ならびに-s
の設定(あるいは設定なし)は、munge.sh ならびに runUpdate.sh と揃えるよう推奨します。さもないとデータ更新が適切に行われません。
例:
./runUpdate.sh
また、スクリプトは次の環境変数を確認します(すべてオプション)。
変数 | 既定 | 説明 |
---|---|---|
UPDATER_OPTS | 空 | その他のオプションはそのまま Java コマンドラインに渡す |
修正プログラムのオプション
以下のオプションは修正プログラムアプリケーションに使えます。
--
に次ぐオプションとしてrunUpdate.sh
スクリプトに追加。例: runUpdate.sh -- -v
.
オプション | 省略を解いたオプション | 意味 |
---|---|---|
-v | --verbose | 冗長モード |
-s TIMESTAMP | --start TIMESTAMP | 特定のタイムスタンプからデータ取得を開始、形式は 2015-02-11T17:11:08Z もしくは 20150211170100 。
|
--keepTypes | すべてのタイプのタイムスタンプを保存 | |
--ids ID1,ID2,... | 特定のIDを更新して終了 | |
--idrange ID1-ID2 | 特定の範囲のIDを更新して終了 | |
-d SECONDS | --pollDelay SECONDS | 新規データが見つからない場合の待ち受けの長さ |
-t NUMBER | --threadCount NUMBER | ウィキベースのデータを取得するときのスレッド数 |
-b NUMBER | --batchSize NUMBER | RecentChanges API から取得する変更の件数 |
-V | --verify | 読み込み後のデータを確認 (たいへん遅い! デバッグ専用) |
-T SECONDS | --tailPollerOffset SECONDS | 第一のポーリングに時差を与えた、第二の追跡ポーリングを使用 |
--entityNamespaces NUMBER,NUMBER,... | 変更を確認するデータベースの名前空間一覧 | |
-W | --wikibaseUrl URL | URL to use when talking to Wikibase. E.g. https://www.wikidata.org . Must be set if updates do not come from Wikidata.
|
-U | --conceptUri URL | URL base of the URLs used to represent Wikibase entities in RDF. E.g. http://www.wikidata.org . Must be set if the Wikibase instance does not use Wikidata-based prefixes.
|
--commonsUri URL | Commons URI for SDC support. Both --conceptUri and --commonsUri should be set for this to work.
| |
--wikibaseScheme SCHEME | ウィキベースの問い合わせに用いる URL スキーマ(http、https) (廃止予定) Use wikibaseUrl above instead. | |
--wikibaseHost HOSTNAME | ウィキベースに問い合わせるときに用いるホスト名。 (廃止予定) Use wikibaseUrl above instead. | |
-I | --init | 開始時間とともに指定すると、この時間はデータベースで最も最近の変更時間として記録され、その後のリクエストがあった場合は、たとえ新規のデータが見つからなくても、この時間を開始ポイントとして使用。 |
--constraints | Load constraints violations for updated items via constraintsrdf API.
| |
-K SERVERS | --kafka SERVERS | If specified, Updater will use Kafka as the update source and the specified servers as brokers. E.g. kafka1001.eqiad.wmnet:9092,kafka1002.eqiad.wmnet:9092,kafka1003.eqiad.wmnet:9092
|
-C NAME | --consumer NAME | Kafka consumer name. It is a good idea to set it to the host name or something based on it. |
-c NAME1,NAME2 | --cluster NAME1,NAME2 | Kafka cluster names. If specified, the Kafka topic names will be prefixed by cluster names, so instead of topic1 there would be NAME1.topic1 and NAME2.topic2 .
|
--resetKafka | Reset Kafka offsets | |
-v | --verbose | Verbose logging (DEBUG level). |
構成可能な属性
下記の属性の設定をするには、上記のスクリプトのスクリプト操作コマンドに追加します。
名前 | 意味 | 既定 |
---|---|---|
wikibaseServiceWhitelist | リモートサービスのホワイトリストのファイル名。 Blazegraphに適用。 | whitelist.txt |
org.wikidata.query.rdf.blazegraph.mwapi.MWApiServiceFactory.config | MWAPI integrationの設定ファイル | mwservices.json |
com.bigdata.rdf.sail.sparql.PrefixDeclProcessor.additionalDeclsFile | Filename that contains additional prefix definitions. The syntax is as in SPARQL query. These definitions will be loaded by Blazegraph and available for all queries. | |
wikibaseConceptUri | URL prefix for Wikibase data, which is used in RDF representation of entities. Needs to be set if the dataset does not use Wikidata prefixes. | http://www.wikidata.org |
commonsConceptUri | URL prefix for Structured Data on Commons support. Both wikibaseConceptUri and commonsConceptUri should be set for it to work.
|
|
wikibaseHost | ウィキベースのインスタンスのホスト名。ブレイズグラフと修正プログラムの両方に適用。 (廃止予定) Use wikibaseConceptUri above. | www.wikidata.org |
org.wikidata.query.rdf.blazegraph.inline.literal.WKTSerializer.noGlobe | 天体がない座標の既定の天体の値。「2」は Q2 というエンティティを天体に指定する。「0」だと既定の天体は存在しない。ブレイズグラフに適用。 | 0 |
org.wikidata.query.rdf.tool.rdf.RdfRepository.timeout | RDF リポジトリとやり取りする時のタイムアウト値。単位は秒。修正プログラムに適用。 | -1 |
org.wikidata.query.rdf.tool.wikibase.WikibaseRepository.timeout | ウィキベース・リポジトリとやり取りする時のタイムアウト値。単位はミリ秒。修正プログラムに適用。 | 5000 |
http.userAgent | その他のサービスを呼び出す間にサービスが用いるユーザーエージェント | |
http.proxyHost http.proxyPort
https.proxyHost https.proxyPort |
その他のサービスを呼び出す間に用いるプロキシの設定 | |
wikibaseMaxDaysBack | 修正プログラムに対して何日前から「最近の変更」データを要求するか。データベースがこの日数よりも古くからある場合、さらに最近のダンプから取得する必要があります。 | 30 |
不足している機能
現状ではサポートしていない機能を以下に一覧にします。
- リダイレクトはowl:sameAs tripleとしてサンプルはあるものの、対応するデータや固有のサポートがない。
お問い合わせ
サービスの不備についてお気づきの点は、送信先リストdiscovery@lists.wikimedia.org
宛てにメールを送るか、チャットルーム#wikimedia-discovery
にてDiscoveryチームまでご連絡をいただけないでしょうか。
バグの報告はPhabricator に投稿し、進捗状況はDiscovery Phabricatorボードで確認してください。