【问题标题】:How to query DBPedia from JavaScript by resource URI?如何通过资源 URI 从 JavaScript 查询 DBPedia?
【发布时间】:2016-09-21 22:09:30
【问题描述】:

我尝试从 JavaScript 进行此查询

        var subject = document.getElementById("inputUri").value;
        var property = "?p";
        var object = "?o";
        var query = "\
        PREFIX dbpedia2: <http://dbpedia.org/property/>\
        PREFIX foaf: <http://xmlns.com/foaf/0.1/>\
        PREFIX : <http://dbpedia.org/resource/>\
        SELECT *    \
        WHERE {\
            "+ subject + property + object +".\
        }LIMIT 10";

我从输入表单中接收到变量 ?s,但是当我编写另一个变量名时,它不起作用。 结果代码如下:

$.ajax({
            dataType: "jsonp",  
            url: queryUrl,
            success: function( _data ) {
                var results = _data.results.bindings;
                var subject = document.getElementById("inputUri").value;
                for ( var i in results ) {
                    var subjectResult = results[i].s.value;
                    var objectResult = results[i].o.value;
                    var propertyResult = results[i].p.value;
                } 
            }
        });

var subjectResult = results[i].s.value;

是错误,但我不知道将输入文本中的值接收到 subjectResult 分配中。


我通过这种方式定义了从输入文本中接收任何变量名的变量:

var str = subject;
var res = str.replace("?", "");

然后在for循环中:

var subjectResult = results[i][res].value;

【问题讨论】:

  • 照常复制和粘贴错误。您从某个地方进行了查询,并从其他地方获取了代码而没有理解它。您的主题不是变量 ?s,而是绑定到特定的资源 URI - 正如您的问题标题所暗示的那样。

标签: javascript sparql semantic-web dbpedia


【解决方案1】:

您的查询中没有名为 ?s 的变量,因此您无法检索其值是有道理的。

根据您的代码结构,您应该可以直接使用subject 变量:

var subjectResult = subject;
var objectResult = results[i].o.value;
var propertyResult = results[i].p.value;

另一种选择是在查询中创建变量,使用 BIND:

"SELECT *\
WHERE {\
    BIND(" + subject + " AS ?s)\
    ?s ?p ?o .\
} LIMIT 10"

不确定您使用的是什么 SPARQL 服务器,但当我在 Virtuoso 上尝试此操作时,它失败并出现令人困惑的错误,尽管我认为它是有效的 SPARQL。

另请注意,从用户输入构建这样的查询会使您容易受到注入攻击。

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多