2017-10-18 94 views
0

我想使用dbpedia搜索结果作为源自动完成“SameAs”输入。 我完成了下一个JS代码。但我没有得到任何结果。使用JQuery UI自动完成与Dbpedia作为源

<script> 
    $(document).ready(function() { 
     $("#SameAs").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "http://lookup.dbpedia.org/api/search.asmx/PrefixSearch?QueryClass=place&MaxHits=20", 
        /*dataType: "json", 
        accepts: 'application/json',*/ 
        data: { 
         QueryString: request.term 
        }, 
        success: function (data) { 
         response(data); 
        } 
       }); 
      }, 
      minLength: 1, 
      select: function (event, ui) { 
       $("#SameAs").text(ui.item.Label); 
      } 
     }); 
    }); 
</script> 

的术语“柏林”,在DBpedia中会返回这样的结果:

<?xml version="1.0" encoding="utf-8"?> 
<ArrayOfResult 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://lookup.dbpedia.org/"> 
    <Result> 
     <Label>Berlin</Label> 
     <URI>http://dbpedia.org/resource/Berlin</URI> 
     <Description> 
      Berlin is the capital city of Germany and one of the 16 states of Germany. With a population of 3.5 million people, Berlin is Germany's largest city and is the second most populous city proper and the eighth most populous urban area in the European Union. Located in northeastern Germany, it is the center of the Berlin-Brandenburg Metropolitan Region, which has 5.9 million residents from over 190 nations. Located in the European Plains, Berlin is influenced by a temperate seasonal climate. 
     </Description> 
     <Classes> 
      <Class> 
       <Label>settlement</Label> 
       <URI>http://dbpedia.org/ontology/Settlement</URI> 
      </Class> 
      <Class> 
       <Label>place</Label> 
       <URI>http://dbpedia.org/ontology/Place</URI> 
      </Class> 
      <Class> 
       <Label>populated place</Label> 
       <URI>http://dbpedia.org/ontology/PopulatedPlace</URI> 
      </Class> 
      <Class> 
       <Label>city</Label> 
       <URI>http://schema.org/City</URI> 
      </Class> 
      <Class> 
       <Label>owl#Thing</Label> 
       <URI>http://www.w3.org/2002/07/owl#Thing</URI> 
      </Class> 
      <Class> 
       <Label>place</Label> 
       <URI>http://schema.org/Place</URI> 
      </Class> 
      <Class> 
       <Label>city</Label> 
       <URI>http://dbpedia.org/ontology/City</URI> 
      </Class> 
     </Classes> 
     <Categories> 
      <Category> 
       <Label>Populated places established in the 13th century</Label> 
       <URI>http://dbpedia.org/resource/Category:Populated_places_established_in_the_13th_century</URI> 
      </Category> 
      <Category> 
       <Label>European Capitals of Culture</Label> 
       <URI>http://dbpedia.org/resource/Category:European_Capitals_of_Culture</URI> 
      </Category> 
      <Category> 
       <Label>States of Germany</Label> 
       <URI>http://dbpedia.org/resource/Category:States_of_Germany</URI> 
      </Category> 
      <Category> 
       <Label>City-states</Label> 
       <URI>http://dbpedia.org/resource/Category:City-states</URI> 
      </Category> 
      <Category> 
       <Label>Host cities of the Summer Olympic Games</Label> 
       <URI>http://dbpedia.org/resource/Category:Host_cities_of_the_Summer_Olympic_Games</URI> 
      </Category> 
      <Category> 
       <Label>Members of the Hanseatic League</Label> 
       <URI>http://dbpedia.org/resource/Category:Members_of_the_Hanseatic_League</URI> 
      </Category> 
      <Category> 
       <Label>Capitals in Europe</Label> 
       <URI>http://dbpedia.org/resource/Category:Capitals_in_Europe</URI> 
      </Category> 
      <Category> 
       <Label>States and territories established in 1237</Label> 
       <URI>http://dbpedia.org/resource/Category:States_and_territories_established_in_1237</URI> 
      </Category> 
      <Category> 
       <Label>Berlin</Label> 
       <URI>http://dbpedia.org/resource/Category:Berlin</URI> 
      </Category> 
      <Category> 
       <Label>German state capitals</Label> 
       <URI>http://dbpedia.org/resource/Category:German_state_capitals</URI> 
      </Category> 
     </Categories> 
     <Templates></Templates> 
     <Redirects></Redirects> 
     <Refcount>18984</Refcount> 
    </Result> 
<Result> 
    <Label>Berlin Wall</Label> 
    <URI>http://dbpedia.org/resource/Berlin_Wall</URI> 
    <Description> 
     The Berlin Wall was a barrier constructed by the German Democratic Republic starting on 13 August 1961, that completely cut off West Berlin from surrounding East Germany and from East Berlin. The barrier included guard towers placed along large concrete walls, which circumscribed a wide area (later known as the &quot;death strip&quot;) that contained anti-vehicle trenches, &quot;fakir beds&quot; and other defenses. 
    </Description> 
    <Classes> 
     <Class> 
      <Label>architectural structure</Label> 
      <URI>http://dbpedia.org/ontology/ArchitecturalStructure</URI> 
     </Class> 
     <Class> 
      <Label>place</Label> 
      <URI>http://dbpedia.org/ontology/Place</URI> 
     </Class> 
     <Class> 
      <Label>building</Label> 
      <URI>http://dbpedia.org/ontology/Building</URI> 
     </Class> 
     <Class> 
      <Label>owl#Thing</Label> 
      <URI>http://www.w3.org/2002/07/owl#Thing</URI> 
     </Class> 
     <Class> 
      <Label>place</Label> 
      <URI>http://schema.org/Place</URI> 
     </Class> 
    </Classes> 
    <Categories> 
     <Category> 
      <Label>Former buildings and structures of Germany</Label> 
      <URI>http://dbpedia.org/resource/Category:Former_buildings_and_structures_of_Germany</URI> 
     </Category> 
     <Category> 
      <Label>Allied occupation of Germany</Label> 
      <URI>http://dbpedia.org/resource/Category:Allied_occupation_of_Germany</URI> 
     </Category> 
     <Category> 
      <Label>20th century in Germany</Label> 
      <URI>http://dbpedia.org/resource/Category:20th_century_in_Germany</URI> 
     </Category> 
     <Category> 
      <Label>Revolution landmarks</Label> 
      <URI>http://dbpedia.org/resource/Category:Revolution_landmarks</URI> 
     </Category> 
     <Category> 
      <Label>History of East Germany</Label> 
      <URI>http://dbpedia.org/resource/Category:History_of_East_Germany</URI> 
     </Category> 
     <Category> 
      <Label>Inner German border</Label> 
      <URI>http://dbpedia.org/resource/Category:Inner_German_border</URI> 
     </Category> 
     <Category> 
      <Label>Walls</Label> 
      <URI>http://dbpedia.org/resource/Category:Walls</URI> 
     </Category> 
     <Category> 
      <Label>Eastern Bloc</Label> 
      <URI>http://dbpedia.org/resource/Category:Eastern_Bloc</URI> 
     </Category> 
     <Category> 
      <Label>Anti-communism</Label> 
      <URI>http://dbpedia.org/resource/Category:Anti-communism</URI> 
     </Category> 
     <Category> 
      <Label>1961 in politics</Label> 
      <URI>http://dbpedia.org/resource/Category:1961_in_politics</URI> 
     </Category> 
     <Category> 
      <Label>1989 disestablishments</Label> 
      <URI>http://dbpedia.org/resource/Category:1989_disestablishments</URI> 
     </Category> 
     <Category> 
      <Label>1961 in military history</Label> 
      <URI>http://dbpedia.org/resource/Category:1961_in_military_history</URI> 
     </Category> 
     <Category> 
      <Label>1961 establishments</Label> 
      <URI>http://dbpedia.org/resource/Category:1961_establishments</URI> 
     </Category> 
     <Category> 
      <Label>Buildings and structures completed in 1961</Label> 
      <URI>http://dbpedia.org/resource/Category:Buildings_and_structures_completed_in_1961</URI> 
     </Category> 
     <Category> 
      <Label>Separation barriers</Label> 
      <URI>http://dbpedia.org/resource/Category:Separation_barriers</URI> 
     </Category> 
     <Category> 
      <Label>Destroyed landmarks</Label> 
      <URI>http://dbpedia.org/resource/Category:Destroyed_landmarks</URI> 
     </Category> 
     <Category> 
      <Label>Berlin Wall</Label> 
      <URI>http://dbpedia.org/resource/Category:Berlin_Wall</URI> 
     </Category> 
     <Category> 
      <Label>History of Berlin</Label> 
      <URI>http://dbpedia.org/resource/Category:History_of_Berlin</URI> 
     </Category> 
    </Categories> 
    <Templates></Templates> 
    <Redirects></Redirects> 
    <Refcount>1406</Refcount> 
</Result> 

我认为这个问题是自动完成不承认jQuery的XML结果。我需要的XML结果的主要项目是标签和URI。

+0

欢迎来到Stack Overflow。你在控制台中看到任何错误吗?你从AJAX看到的结果是什么?预期的结果是什么? – Twisty

+0

我已添加一些信息编辑帖子,没有控制台错误。自动完成应该弹出一个来自dbpedia的标签列表。谢谢 – Wisamx

+0

是的,我建议你调整'dataType'到'xml'。然后,您需要将结果解析为结果数组或自动完成可以使用的对象数组。 – Twisty

回答

0

基于此发现的所有细节:https://github.com/dbpedia/lookup我建议以下代码:

$(function() { 
    $("#SameAs").autocomplete({ 
    source: function(request, response) { 
     console.log("Making request of dbpedia:" + request.term); 
     $.ajax({ 
     url: "http://lookup.dbpedia.org/api/search/PrefixSearch", 
     dataType: "json", 
     data: { 
      QueryClass: "place", 
      MaxHits: 20, 
      QueryString: request.term 
     }, 
     headers: { 
      Accept: "application/json" 
     }, 
     method: "get", 
     success: function(data) { 
      console.log("Successful", data); 
      response(data.results); 
     } 
     }); 
    }, 
    minLength: 1, 
    select: function(event, ui) { 
     $("#SameAs").text(ui.item.Label); 
    } 
    }); 
}); 

基础上的文档,您所使用的网址是不正确的。它应该是:http://lookup.dbpedia.org/api/search/PrefixSearch。它还提到:

默认情况下,所有数据以XML格式返回,服务也retuns JSON到包括Accept: application/json头的任何请求。

因此,我在AJAX参数中添加了headers选项。

进一步的测试显示一个对象以results作为元素返回。你会想要返回data.resultsresponse()