Wikidata:Tools/OpenRefine/Editing/Advanced schemas/ja

From Wikidata
Jump to navigation Jump to search
This page is a translated version of the page Wikidata:Tools/OpenRefine/Editing/Advanced schemas and the translation is 54% complete.

時としてあなたのデータは通常の表のように単純ではなかったり、文の並び替えを行ごとに変えたかったりします。この文書ではこういった場合のやり方を説明します。

階層構造のデータ

情報源がXML、JSON、RDFといった構造化された形式でデータを提供していることがあります。OpenRefineはこうしたファイルをインポートして表に変換することができます。これらの表はnullのセルを使ってファイル内の階層を反映させることになります。

{
  "artists": [
    {
      "name": "Gilberto Gil",
      "songs": [
        "Toda menina Bahiana",
        "Expresso 2222",
        "Refazenda"
      ]
    },
    {
      "name": "Hiromi Uehara",
      "songs": [
        "Desire",
        "Deep Into The Night"
      ]
    }
  ]
}
   OpenRefine editing manual: example of hierarchical data imported from JSON.

OpenRefineはそのレコードモードを使います。これはレコードを原子的なオブジェクトとして扱います。5行あるにも関わらず2レコードとカウントし、行に影がついてそれを表しているのが分かると思います。レコードモードと行モードの違いは この記事に詳しく書いてあります。

Wikidata拡張は常に行モードで動作するため、アーティストと曲の双方にリファレンスしている文を追加したい場合は、対応するアーティストでnullのセルを埋める必要があります。Fill down(下方向の空白を埋める)操作(このカラムのEdit cells(セル編集)メニューにあります)でこれを行えます。この機能はセルの値だけでなく、照合結果もコピーします。

OpenRefine editing manual: example of using the fill down function when working with hierarchical data.
OpenRefine editing manual: example of using the fill down function when working with hierarchical data.

条件付きの追加

Sometimes you want to add a statement only in some conditions.

The workflow to achieve this looks like this:

  • Use facets to select the rows where you do not want to add any information;
  • Blank out the cells in the column that contain the information you want to add. If you do not want to lose this information, you can create a copy of the column beforehand;
  • Remove your facets to see all rows again;
  • Create a schema using the column you partially blanked out as statement value.

For instance, you could want to add a statement only if there is no statement with this property on the target item. Consider the following table:

Initial state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine
Initial state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine

We want to upload these altitudes to Wikidata, but only for the mountain passes where the altitude is not known yet. To do this, we fetch the existing altitudes using the "Add columns from reconciled values" function, which gives us this table:

Second state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine
Second state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine

We create a facet on the "elevation above sea level" (fetched from Wikidata) to select only the non-blank values. Then, we clear out the corresponding cells in the "altitude" column using the "Edit cells" -> "Common transforms" -> "To null" function. We can then remove the blank facet, and we get this table:

Final state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine
Final state of the table, as part of a tutorial on conditional Wikidata uplods in OpenRefine

We can now upload our data using the first and third columns in a Wikidata schema.

プロパティを変える

自分のスキーマにあるプロパティ用にカラム変数を使いたい場合があると思いますが、現時点ではこれは不可能です。第一にまだプロパティ用の照合サービスが無く、次に文内でプロパティを変えるということはこれらのプロパティが異なるデータ種別を持てるということで、これはスキーマの構造を壊してしまいます。

少数のプロパティを使いたい場合は、この問題を回避する方法があります。 例えば、高度のカラムとmaximum operating altitude (P2254)またはelevation above sea level (P2044)として追加すべきかどうか示すカラムがあるとします。

Wikidata editing with OpenRefine: example project where varying properties are needed. Initial state of the project.
Wikidata editing with OpenRefine: example project where varying properties are needed. Initial state of the project.

type(型)カラム上にテキストファセットを作成します。フィルターをかけてaltitudeの値だけを保持します。単に既存の値をコピーするだけのデフォルトの表現(value)を残すことで、metres カラムに基づいて新しいカラムを追加します。そして、ファセット内のmaximum operating altitudeの値を選んで同じようにします。ファセットをリセットすると、次のような結果になるでしょう:

Wikidata editing with OpenRefine: example project where varying properties are needed. Transformed project.
Wikidata editing with OpenRefine: example project where varying properties are needed. Transformed project.

これであなたは空のセルはウィキデータによって無視されるという事実を使えます。次のようなスキーマを構築してください:

Wikidata editing with OpenRefine: example project where varying properties are needed. Schema.
Wikidata editing with OpenRefine: example project where varying properties are needed. Schema.

同じ項目に両方のプロパティを追加しようとしているように見えたとしても、実際にはカラムは決して同時には埋められず、そのため私たちは異なる項目に適切なプロパティで値を追加しています。

ウィキデータにある既存データに当て込む

項目上に同様の文がまだ無い場合にだけ文を作成したい時があります。これは次のようにして実現できます:

  • まず、Edit columns(カラム編集)Add columns from reconciled values(照合値からカラムを作る)と操作してウィキデータから既存の値を参照します。
  • つぎに、コントロールしたい情報を含む新規作成されたカラムの上にfacet by null(nullファセット)を作成します。
  • nullでない行を選びます(値 false)。
  • あなたの情報源の値が存在するカラムの内容をクリアします(Edit cells(セル編集)Common transformations(よく使う変換)To null(セルをnullに))。

これであなたはいつものようにスキーマを構築できます - 文の生成時にnull値は無視されます。こんな感じのプロジェクトができているはずです:

Wikidata editing with OpenRefine. Advanced schema construction: avoiding existing values.
Wikidata editing with OpenRefine. Advanced schema construction: avoiding existing values.

この手法はウィキデータ上にreferenced(情報源)が無い場合にのみ文を追加するのにも使えます。照合値からカラムを作る際に、configure(環境設定)をクリックして必要な情報源のレベルに従って文をフィルタリングします:

Wikidata editing with OpenRefine. Advanced schema construction: configuring the retrieval of existing values.
Wikidata editing with OpenRefine. Advanced schema construction: configuring the retrieval of existing values.

ランクでフィルタリングしたり、値そのものではなく該当する数を返すこともできるということに留意してください(項目ごとに大量の値を扱っている場合は取得時間の高速化につながる場合もあります)。