2014-03-31 1 views
3

나는 Jbascript로 Dbdepdia에서 토목 공학의 영어 기사를 얻고 싶다. 이것은 내가 시도했지만 실패합니다. 자바 스크립트에서 Dbpedia를 쿼리하는 방법

<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<style type="text/css"> 

</style> 
</head> 
    <script type="text/javascript"> 
    var url = "http://dbpedia.org/sparql"; 
    var query = "\ 
    PREFIX dbpedia2: <http://dbpedia.org/resource/>\ 
    PREFIX Abs: <http://dbpedia.org/ontology/>\ 
    SELECT ?abstract\ 
    WHERE {\ 
      ?s dbpedia2:Civil_engineeringe\"@en;\ Abs:abstract ?abstract\ 
    }"; 

내가 URL을 인코딩하는 방법이 그것이 인코딩이 좋아 보인다

var queryUrl = encodeURI(url+"?query="+query+"&format=json"); 
    $.ajax({ 
     dataType: "jsonp", 
     url: queryUrl, 
     success: function(_data) { 
      var results = _data.results.bindings; 
      for (var i in results) { 
       var res = results[i].abstract.value; 
       alert(res); 
      } 
     } 
    }); 
</script> 
    <body></body> 

</html> 
+0

합니까 [웹 브라우저에서 자바 스크립트 콘솔 (http://webmasters.stackexchange.com/questions/8525/how-to-open-the-javascript -console-in-different-browsers)는 미해결 오류를 표시합니까? – summea

+0

아니요 빈 페이지가 표시됩니다 – user3335188

+0

그리고 SPARQL이 유효하다고 확신합니까? 내 질문은 – summea

답변

0

ajaxx에 전달하지만, 원래 SPARQL/자바 스크립트 나에게 좋아 보이지 않는다. 이후 '? 추상적 인 \'공백 당신이 공백 문자를 탈출하고 의미있는 한

var query = "\ 
PREFIX dbpedia2: <http://dbpedia.org/resource/>\ 
PREFIX Abs: <http://dbpedia.org/ontology/>\ 
SELECT ?abstract\ 
WHERE {\ 
     ?s dbpedia2:Civil_engineeringe\"@en;\ Abs:abstract ?abstract\ 
}"; 

유효한 자바 스크립트 문자열을 초래하지 않습니다. 여러 줄의 자바 스크립트 문자열 ( Creating multiline strings in JavaScript)과 관련된이 질문을 확인하십시오.

또한 SPARQL 쿼리는 현재 잘못된 것입니다. 빌드를 시도하고 먼저 here을 테스트하고 the spec을 살펴보십시오.

5

여러 줄 문자열에 다른 접근 방식을 사용하고 DBPedia에 대한 SPARQL 쿼리 작성을 위해 직접 사용합니다.

var query = [ 
"PREFIX dbpedia2: <http://dbpedia.org/resource/>", 
"PREFIX Abs: <http://dbpedia.org/ontology/>", 
"SELECT ?abstract", 
"WHERE {", 
    "?s dbpedia2:Civil_engineeringe\"@en;", 
    "Abs:abstract ?abstract", 
"}" 
].join(" "); 

그 인코딩 문제가 발생하는 경우 나 라인 구분을 조정할 수 있기 때문에 나는 그것을 이런 식으로 수행하고 또한 필요한 경우 나 쉽게 줄을 주석 할 수 있습니다.

이제 쿼리를 실행해야 할 때 쿼리 자체를 인코딩하고 URL에 추가합니다.

키, 값 및 등호를 이스케이프 문자로 인코딩 할 수 있으므로 전체 쿼리 문자열을 래핑하는 방법에주의하십시오.

내가 이런 식으로 수행

var queryUrl = url+"?query="+ encodeURIComponent(query) +"&format=json"; 
관련 문제