搜索容器作为sparql查询的输入

时间:2014-10-12 13:32:54

标签: string variables search sparql sgvizler

我有一个SPARQL查询,我使用sgvizlers drucalagraph进行可视化。我希望有一个搜索容器,用户可以在其中输入音乐艺术家。在查询中,此时用户无法进入音乐艺术家。我想要这个部分:

  

?song dbpedia-owl:writer dbpedia:Eric_Clapton。

用户输入的变量而不是dbpedia:Eric_Clapton就像目前一样。我该怎么做呢?到目前为止,这是我的代码:

<div id="ex"
     data-sgvizler-endpoint="http://live.dbpedia.org/sparql" 
     data-sgvizler-query="

        SELECT ?song_label ?artist_label ?writer ?producer
WHERE {
       ?song dbpedia-owl:writer dbpedia:Eric_Clapton. ?song rdfs:label ?song_label . 
  OPTIONAL {{?song dbpedia-owl:artist ?artist} UNION {?song dbpedia-owl:musicalArtist ?artist.}}
  {?song dbpedia-owl:writer ?writer. }
  {?song dbpedia-owl:producer ?producer. } 
  {?artist rdfs:label ?artist_label .}

  #FILTER (?writer&&?artist!=dbpedia:Eric_Clapton)

  }  limit 100"
     data-sgvizler-chart="sgvizler.visualization.DraculaGraph"
    // data-sgvizler-chart-options="maxnodesize: 15; minnodesize: 2"
     style="width:100%; height:100%; border:1px solid black; display: inline-block;">

</div>

1 个答案:

答案 0 :(得分:0)

通过使用资源的rdfs:标签作为查询的输入来解决问题:

SELECT distinct ?clapton ?clapton_label ?artist ?artistlabel where {
{
  {?artist dbpedia-owl:associatedBand ?clapton} 
UNION 
  {?artist dbpedia-owl:associatedMusicalArtist ?clapton} 
} 
?clapton rdfs:label '<?= ucwords($_GET['query']) ?>'@en. 
?clapton rdfs:label ?clapton_label . 
?artist rdfs:label ?artistlabel . 
} limit 100