【问题标题】:Parse error when using sgvizler使用 sgvizler 时解析错误
【发布时间】:2017-10-24 18:59:02
【问题描述】:

我正在尝试使用 SGvizler 制作一张桌子。但是,当我尝试创建表时,出现以下错误:

3.084s: loadGVizScript: loading packages: sgvizler.js:952 
3.087s: loadGVizScript: loading packages: table sgvizler.js:952 
4.742s: Error: A 'parsererror' occurred in Query.saveQueryResults() sgvizler.js:952 
5.049s: loadGVizScript: packages LOADED: sgvizler.js:952 
5.052s: loadGVizScript: packages LOADED: table

我使用的代码如下:

  <script>
  var boatValue;
  $("#res").click(function() {
  var boat = document.getElementById('boat');
  if (boat.checked)
  {
  boatValue = boat.value;
  }
  else
  {
  boatValue = "speedboat";
  }
  console.log(boatValue)

  $("#query").click(function() 
  {var Q = new sgvizler.Query();
  Q.query(`SELECT ?boat WHERE { ?boat s:BoatorNoat s:`+boatValue+` .}`)                                              
  .endpointURL("http://localhost/query/")                                                 
  .endpointOutputFormat("json")                                                 
  .chartFunction("google.visualization.Table")
  .draw("myElementID");
</script>

我重复了 varboatValue 几次,所以浏览器的内存/使用可能存在问题,但不幸的是我对此并不熟悉。希望有人能告诉我如何解决这个问题。

干杯!

【问题讨论】:

    标签: javascript jquery sparql sgvizler


    【解决方案1】:

    根据我能找到的文档,您的语法在这里看起来不正确:

    Q.query(`SELECT ?boat WHERE { ?boat s:BoatorNoat s:`+boatValue+` .}`)

    我认为你需要像这样使用双引号:

    Q.query("SELECT ?boat WHERE { ?boat s:BoatorNoat s:" + boatValue + ".}")

    在下面添加了一些我认为会有所帮助的代码。由于没有发布 HTML,因此不确定您拥有的所有点击处理程序是什么:

    $("#query").click(function() {
      var boat = document.getElementById('boat');
      if (boat.checked) {
        boatValue = boat.value;
      } else {
        boatValue = "speedboat";
      }
    
      var query = "SELECT ?boat WHERE { ?boat s:BoatorNoat s:" +
        boatValue + ".}";
    
      console.log(query);
      /*Plug into your code below*/
      /*var Q = new sgvizler.Query();
      Q.query(query)
        .endpointURL("http://localhost/query/")
        .endpointOutputFormat("json")
        .chartFunction("google.visualization.Table")
        .draw("myElementID");*/
    
    
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="checkbox" id="boat" value="someOtherKindOfBoat">
    <input type="button" id="query" value="See Query">

    【讨论】:

    • 不幸的是,这并不能解决问题。 +boatValue+ 这个词现在在查询中,并且不再链接到变量boatValue。
    • 问题是它在控制台中对我有用,但当我尝试使用 sgvizler 从中创建表格时却不行。然后仍然是上面提到的错误。
    • 说实话,您发布的代码充满了语法错误。例如,第一个单击处理程序从未关闭。可能需要所有代码来追踪确切原因。
    • 在构建查询字符串后打印出查询并检查。请注意,boatValue 必须是前缀名称的合法本地部分,而不是任何字符串。
    【解决方案2】:

    前缀“s:”未定义。这是 SPARQL 中的解析错误。

    【讨论】:

    • 我在我的 localhost (stardog) 数据库和 html 文件中定义了它,所以我认为这不是问题。
    • 也得到了这个响应:{消息:“前缀's'的多个前缀声明”,代码:“MalformedQuery”} 代码:“MalformedQuery”消息:“前缀's'的多个前缀声明”
    • 刚刚通过删除一个前缀解决了这个问题,但主要问题仍然存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2013-01-08
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多