2008-08-28 2 views
3

freebase 개의 this use을 보았습니다. 실제로 발견 된 이름의 번역에 깊은 인상을 받았습니다. IE Rome, Roma, Rom, Rzym, Rooma, 로마, 罗马 市. 이것은 약 5000 개 이상의 위치 이름의 데이터베이스가 있고이 영어 이름에 대해 모든 프랑스어, 독일어 또는 한국어 번역을 매우 좋아하기 때문입니다.freebase.com에서 장소 이름의 번역을 내보낼 수 있습니까

문제는 약 2 시간 동안 freebase를 클릭하는 데 소요 된 시간이며 영어로 매핑 된 다른 언어로 도시/위치 이름을 볼 방법이 없습니다. 그래서 Freebase이 무엇인지, 그리고 그것이 어떻게 구성되어 있는지를 이해하는 누군가가 이론적으로 내가 내보낼 수있는 뷰에 대한 링크를 얻을 수 있다면 그것을 좋아할 것입니다.

또한 나는이 질문을 전적으로 공유하고 싶습니다. 왜냐하면 나는 완전히 freebase에 감명 받았고, 사람들이 그것을 보지 않는다고 생각하기 때문입니다.

답변

4

쿼리

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

반환, 그 언어로 해당 위치의 이름. 결과는 언어별로 정리됩니다. 노 프로그래밍 솔루션에 대한

    { 
         '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)' 
        }, 

, HTML 파일에 다음을 복사 - 붙여 넣기하여 브라우저를 엽니 다 :

<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> 
예를 들어, 다음은 반환 값의 매우 작은 세그먼트입니다

물론 처음 10 개 결과 만 포함됩니다. 당신이 더 원하면 위의 한도를 올리십시오. (그런데, Freebase는 멋지다뿐만 아니라,이 mjt 템플릿 언어도 있습니다!)

4

게시 한 링크는 Freebase 용으로 설계된 자바 스크립트 프레임 워크 인 mjt를 사용합니다.

그들이 사용하는 쿼리.

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 
    }])  

여기서 qlang이 - 너무 번역 원하는 언어입니다. qname - is는 쿼리 할 위치입니다.

원하는 링크를 얻으려면 API이 필요하며 위 쿼리를 변환 된 문자열이 포함 된 JSON 객체를 반환하는 링크로 변환 할 수 있습니다. 모든 위치와 모든 언어에 대한