【问题标题】:how to query Dbpedia in Javascript如何在 Javascript 中查询 Dbpedia
【发布时间】:2014-03-31 18:46:48
【问题描述】:

我想用 Javascript 从 Dbdepdia 获取土木工程英文文章的摘要。这是我尝试过的,但失败了。

<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 进行编码以将其传递给 ajaxx 的方式

 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>

【问题讨论】:

  • the JavaScript console in your web browser 是否显示任何未解决的错误?
  • 没有。它显示空白页
  • 你确定 SPARQL 是有效的,是吗?
  • 这是我的问题。那是我正在寻求帮助的地方,可能是我错了

标签: javascript sparql semantic-web dbpedia spotlight-dbpedia


【解决方案1】:

我对多行字符串使用不同的方法,我直接将它用于针对 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";

【讨论】:

    【解决方案2】:

    编码似乎没问题,但您原来的 SPARQL / JavaScript 对我来说看起来不太好。

    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\ 
     }";
    

    不会产生有效的 JavaScript 字符串,因为 '?abstract\' 之后有一个空格,这意味着您正在转义一个空格字符。查看这个与多行 JavaScript 字符串有关的问题:Creating multiline strings in JavaScript

    此外,目前 SPARQL 查询是完全错误的。尝试构建它并首先对其进行测试here 并查看the spec

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多