私はSPARQLWrapperでpythonを使用しています。これまでのところ動作しました。新しいSPARQLオブジェクトを結果に追加できません。私はより多くの結果を追加しようとしている初心者のpython結果のバインディング質問
else:
for result in results["results"]["bindings"]:
project = result["project"]["value"].encode('utf-8')
filename = result["filename"]["value"].encode('utf-8')
keywords = result["keywords"]["value"].encode('utf-8')
url = result["url"]["value"].encode('utf-8')
url = result["url"]["value"].encode('utf-8')
print "<p class=\"results\"><span>Project</span>: %s</p><p class=\"indent\"><span>Filename</span>: %s</p><p class=\"indent\"><span>URL</span>:<a href=\"%s\">%s</a></p><p class=\"indent-bottom\"><span>Keywords</span>: %s</p> " % \
(project,filename,url,url,keywords)
:
は、ここに私の作業スニペットです。私はスクリプトに追加されたSPARQLクエリをテストしました。クエリのオブジェクト( "parameter")をRESULTSとBINDINGSのペアとして追加し、%sを追加して結果の名前を印刷の下の括弧に追加しますコマンド(その領域を何に呼び出すべきかわからない)。この結果を追加するために前に行ったことを実行した後、私は死の白い画面が表示されます。ページのヘッダーのみが書き出され、ApacheエラーログにはKeyError、project = result ["project"] ["" value "]。encode( 'utf-8')。
else:
print "<h1>ASDC RDF Search Results</h1>"
print "<p class=\"newsearch\"><a href=\"/asdc.html\">new search | <a href=\"http://localhost/asdc.html\">About this project</a></p><div style=\"clear:both;\"</div>"
for result in results["results"]["bindings"]:
project = result["project"]["value"].encode('utf-8')
filename = result["filename"]["value"].encode('utf-8')
url = result["url"]["value"].encode('utf-8')
url = result["url"]["value"].encode('utf-8')
keywords = result["keywords"]["value"].encode('utf-8')
parameter = result["parameter"]["value"].encode('utf-8')
print "<p class=\"results\"><span>Project</span>: %s</p><p class=\"indent\"><span>Filename</span>: %s</p><p class=\"indent\"><span>URL</span>:<a href=\"%s\">%s</a></p><p class=\"indent\"><span>Keywords</span>: %s</p><p class=\"indent-bottom\"><span>Parameter</span>: %s</p> " % \
(project,filename,url,url,keywords,parameter)
ので、2つの質問:ここで
は、スクリプトを壊し追加された要素の一例である誤りは明白ですか?私は新しい行を追加するときに何らかの形でキーの書式設定をねじっていますか?また、Pythonはログにエラーを書き込むのですか、それとも有効にできますか?おかげで...
編集:ここでは、パラメータを含むクエリです(それが動作、布石UIに直接テスト)
PREFIX e1: <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/>
SELECT ?url ?filename ?keywords ?project ?parameter
WHERE {
?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/url> ?url.
?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/filename> ?filename.
OPTIONAL {
?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/keywords> ?keywords.
?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/project> ?project.
?s <http://data.gov/source/work/dataset/gov/vocab/enhancement/1/parameter> ?parameter.
}
FILTER (regex(?keywords, "FILTER-STRING", "i") || regex(?url, "FILTER-STRING", "i") || regex(?filename, "FILTER-STRING", "i")) .
}
最初のクエリは、同様のマイナスパラメータですか。 FILTER-STRINGは私のCGIフォームから来ます。
あなたがRANをしたSPARQLクエリは、それらの名前すなわちのバインディングを持っていないように私には思えますそれらの名前は 'SELECT'にリストされていません。 'results'とsparqlクエリを生成するコードを表示し、' result'を出力してそれらの名前が疑わしいと思われないかどうかを確認してください。 –
私は質問を...あなたの返答のために追加しました。最初のクエリが機能するので、プロジェクト/値のバインディングは問題にはならないようです。一番下に新しいバインディングを追加すると、 "for result"ブロックの先頭にエラーが報告されます。私は何とかフォーマットを混乱させていると思う。私はどのように結果を印刷するのかわかりません、私はpythonにまったく新しいです - 私のコードはWebページを生成し、壊れている場合は結果を見ることができません。結果を印刷するにはどうすればよいですか(スクリプトのhtml出力を取り除く)? – chuckfinley