2011-12-01 3 views

答えて

6

は尋ねたと答えたが、ここでは、クエリのわずかに良い形です:

[{ 
    "id": "/en/white_house", 
    "mid": null, 
    "de:name": { 
    "lang": "/lang/de", 
    "value": null 
    }, 
    "en:name": null, 
    "wiki_de:key": { 
    "/type/key/namespace": "/wikipedia/de_id", 
    "value":   null, 
    "optional": True, 
    }, 
    "wiki_en:key": { 
    "/type/key/namespace": "/wikipedia/en_id", 
    "value":   null, 
    "optional": True, 
    } 
}]​ 

Wikipediaのキーには特殊文字が含まれているとエスケープされるので、エスケープ方法は http://wiki.freebase.com/wiki/MQL_key_escapingに問い合わせてください。

このクエリが優れている理由のいくつか

は、次のとおりです。

  • 英語がデフォルトの言語なので、名前
  • それは名前空間検索の曖昧さを取り除くために指定する必要はありません。あなたの元のクエリは、実際にはどの名前空間でも "white_house"というキーを探しています(id/"/ en/white_house"に相当する "/ en"で見つける)。

IDによるルックアップを行う。 MQLが提供する検索機能を使用して、Wikipediaのキーの1つを検索するか、 "name〜=": "white house"を使用して、その文字列を含むトピックを検索したり、場合。

+0

ありがとう、これは午後の後半にもわかりました:)しかし、私にとって欠くことのできない1つのことは、「オプション」を含むことです。指定された言語のものが存在しない場合、結果は返されません! –

+0

良い点。私はあなたの提案ごとにクエリを更新しました。 「オプション」を使用することもできます:Trueまたは「optional」:「true」は、使用しているプログラミング言語/ JSONライブラリによって異なります。 –

0

MQLで遊んでた後、私は最終的に(white_house用)次のクエリを思い付いた:

[{ 
    "id": null, 
    "mid": null, 
    "de:name": { 
    "lang": "/lang/de", 
    "value": null 
    }, 
    "en:name": { 
    "lang": "/lang/en", 
    "value": null 
    }, 

    "key": { 
    "value": "white_house" 
    }, 
    "wiki_de:key": { 
    "/type/key/namespace": "/wikipedia/de_id", 
    "value":   null 
    }, 
    "wiki_en:key": { 
    "/type/key/namespace": "/wikipedia/en_id", 
    "value":   null 
    } 
}] 
関連する問題