私は MQL の完全な初心者で、ken-rb で次の方法で Freebase にアクセスしようとしています。
[1] pry(main)> res = Ken.get("/en/allium_neapolitanum")
=> #<Resource id="/en/allium_neapolitanum" name="Allium neapolitanum">
freebase API 経由で送信されたクエリに気付きました。
{"guid":null,"name":null,"ken:type":[
{"id":null,"name":null,"properties":[
{"id":null,
"name":null,
"expected_type":null,
"unique":null,
"reverse_property":null,
"master_property":null}]}],
"/type/reflect/any_master":[
{"id":null,
"link":null,
"name":null,
"optional":true,
"limit":999999}],
"/type/reflect/any_reverse":[
{"id":null,
"link":null,
"name":null,
"optional":true,
"limit":999999}],
"/type/reflect/any_value":[
{"link":null,
"value":null,
"optional":true,
"limit":999999}],
"id":"/en/allium_neapolitanum"}
クエリ エディターでこの MQL をいじっていると、リソースの共通名のリストを簡単に取得する方法を見つけました。
[2]pry(#<Ken::Resource>):2> data["/type/reflect/any_value"].map { |h| h }
=> [{"link"=>"/type/object/name", "value"=>"Allium neapolitanum"},
{"link"=>"/type/object/name", "value"=>"שום משולש"},
{"link"=>"/type/object/name", "value"=>"Ail blanc"},
{"link"=>"/biology/organism_classification/scientific_name",
"value"=>"Allium neapolitanum"},
{"link"=>"/type/object/name", "value"=>"Neapolitanischer Lauch"}]
[3] pry(#<Ken::Resource>):2> names = data["/type/reflect/any_value"].select { |h| h["link"]=="/type/object/name"}
=> [{"link"=>"/type/object/name", "value"=>"Allium neapolitanum"},
{"link"=>"/type/object/name", "value"=>"שום משולש"},
{"link"=>"/type/object/name", "value"=>"Ail blanc"},
{"link"=>"/type/object/name", "value"=>"Neapolitanischer Lauch"}]
[4] pry(#<Ken::Resource>):2> names.map { |name| name["value"] }
=> ["Allium neapolitanum", "שום משולש", "Ail blanc", "Neapolitanischer Lauch"]
問題は、どの言語 ("lang: '/lang/fr'" などの属性を意味する) が各共通名に関連しているかを知る必要があることです。
Ken を使用するか、MQL クエリを変更する / 他のクエリを送信する / などによって、各 "/type/object/name" の言語は何ですか?
[編集]
解決策への可能なアプローチを見つけましたが、私の目標は、ken-rbによって作成された元のクエリを直接変更するデータを取得することです(..質問の上部にコピーされます)
MQL は次のようになります。
[{
"name": [{
"lang": null,
"value": null
}]
"id": "/en/allium_neapolitanum"
}]
この結果を与える
"result": [{
"id": "/en/allium_neapolitanum",
"name": [
{
"lang": "/lang/en",
"value": "Allium neapolitanum"
},
{
"lang": "/lang/he",
"value": "שום משולש"
},
{
"lang": "/lang/fr",
"value": "Ail blanc"
},
{
"lang": "/lang/de",
"value": "Neapolitanischer Lauch"
}
]
}]