Sgvizler:为空结果创建空 table

Sgvizler: Create empty table for empty result

当我使用 Sgvizler 0.6 创建 sgvizler.visualization.Table 并且 SPARQL 查询没有结果时,Sgvizler 不绘制任何东西,甚至 table header 也不绘制。这可能会使用户感到困惑,他们可能认为结果仍在计算中或脚本已崩溃。如何配置 Sgvizler 绘制 table header 即使结果为空?

最小工作示例

    <!doctype html>
    <html>
    <head>
     <meta charset="utf-8"/>
     <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.js"></script>
     <script type="text/javascript" src="https://www.google.com/jsapi"></script>
     <script type="text/javascript" src="http://mgskjaeveland.github.io/sgvizler/v/0.6/sgvizler.js"></script>
     <script>
     sgvizler
     .defaultEndpointURL("https://dbpedia.org/sparql")
     .defaultChartFunction("sgvizler.visualization.Table")
     .defaultChartWidth(1000);
     $(document).ready(function (){ sgvizler.containerDrawAll(); });
     </script>
    </head>
    <body>
      <h2>First Table</h2>
     <div id="results"
     data-sgvizler-query="
     select distinct ?class
     {
      ?class rdfs:subClassOf dbo:Animal.
     }
     ">
      </div>
      <h2>Second Table</h2>
     <div id="noresults"
     data-sgvizler-query="
     select distinct ?class
     {
      ?class rdfs:subClassOf dbo:Unicorn.
     }
     ">
    </div>
    
    </body>
    </html>

这是解析器中的一个错误,它只查看第一行结果来构建 google.visualization.DataTable 对象接受的 JSON。

解决方案是重写解析器以检查 SPARQL 结果集的 "column headers"。

解析器在这里:https://github.com/mgskjaeveland/sgvizler/blob/master/src/parser.js