2008-08-28 13 views
3

freebase API'sinin this use'una baktım ve bulduğu ismin çevirilerinden çok etkilendim. IE Roma, Roma, Rom, Rzym, Rooma, 로마, 罗马 市. Bunun nedeni, 5000'den fazla konum adında bir veritabanım var ve bu İngilizce adları için tüm Fransızca, Almanca veya Korece çevirileri çok beğeniyorum.Yer isimlerinin çevirilerini freebase.com'dan dışa aktarabilir miyim

Sorun, iki saat boyunca freebase'i tıkladım ve İngilizce/haritadaki farklı bir dilde şehir/konum adlarını görmenin bir yolunu bulamadım. Freebase'nin ne olduğunu ve nasıl organize edildiğini anlayan biri, teorik olarak daha sonra ihraç edebileceğim bu görüşle bağlantı kurabilirse onu çok seviyorum.

Ayrıca sadece bu soruyu paylaşmak istedim çünkü freebase'den tamamen etkilendim ve insanların bakmadıkları bir şey olup olmadıklarını düşünün.

cevap

4

sorgu

[{ 
    limit: 100, 
    type: '/location/location', 
    name: [{ 
     value: null, 
     lang: { 
      name: { 
       value: null, 
       lang: '/lang/en', 
      }, 
     } 
    }], 
}]; 

döner, o dilde o yerin adı. Sonuçlar dile göre düzenlenmiştir. no-programlama çözüm için

    { 
         'lang': { 
            'name': { 
               'lang': '/lang/en', 
               'value': 'Russian' 
              } 
           }, 
         'value': 'Сан-Франциско' 
        }, 
        { 
         'lang': { 
            'name': { 
               'lang': '/lang/en', 
               'value': 'Swedish' 
              } 
           }, 
         'value': 'San Francisco' 
        }, 
        { 
         'lang': { 
            'name': { 
               'lang': '/lang/en', 
               'value': 'Portuguese' 
              } 
           }, 
         'value': 'São Francisco (Califórnia)' 
        }, 

, bir HTML dosyasına aşağıdaki kopyalayıp yapıştırın ve tarayıcısıyla açın:

<html><head> 
<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script> 
</head> 
<body onload="mjt.run()"> 
<div mjt.task="q"> 
    mjt.freebase.MqlRead([{ 
    limit: 10, 
    type: '/location/location', 
    name: [{ 
     value:null, 
     lang:{ 
      name:{ 
      value:null, 
      lang:'/lang/en', 
      }, 
     } 
    }], 
    }])  
</div> 

<table><tr mjt.for="topic in q.result"><td> 
<table><tr mjt.for="(var rowi = 0; rowi &lt; topic.name.length; rowi++)" 
    mjt.if="rowi &lt; topic.name.length" style="padding-left:2em"><td> 
    <pre mjt.script=""> 
    var name = topic.name[rowi]; 
    </pre> 
    ${(name.lang['q:name']||name.lang.name).value}: 
</td><td>$name.value</td></tr></table></td></tr></table></body></html> 
Örneğin, aşağıda dönüş değeri bir çok küçük segment

Elbette, bu sadece ilk 10 sonucu içerecektir. Daha fazlasını istiyorsanız yukarıdaki limiti yukarı kaldırın. (Bu arada, sadece Freebase cool değil, bu yüzden bu mjt templating language!)

4

Gönderdiğiniz bağlantı, Freebase için tasarlanmış bir javascript çerçeve olan mjt kullanıyor.

Kullandıkları sorgu.

mjt.freebase.MqlRead([{ 
    limit: 100, 
    id:qid, 
    /* allow fuzzy matches in the value for more results... */ 
    /* 'q:name': {'value~=': qname, value:null, lang: '/lang/'+qlang}, */ 
    'q:name': {value: qname, lang: '/lang/'+qlang}, 

    type: '/common/topic', 
    name: [{ 
     value:null, 
     lang:{ 
      id:null, 
      name:{ 
       value:null, 
       lang:'/lang/en', 
       optional:true 
      }, 
      'q:name':{ 
       value:null, 
       lang:'/lang/'+qlang, 
       optional:true 
      } 
     } 
    }], 
    article: [{id:null, limit:1}], 
    image: [{id:null, limit:1, optional:true}], 
    creator: null, 
    timestamp:null 
    }])  

Nerede: qlang - Çok çevirmek istediğiniz dildir. qname - sorgulama yeridir.

İstediğiniz bağlantıyı almak için, API gerekir ve yukarıdaki sorguyu çevrilen dizeyi içeren bir JSON nesnesini döndürecek bir bağlantıya dönüştürebilirsiniz. her yer ve her dil için

İlgili konular