2016-04-28 5 views
1

sparqlを使用してセサミワークベンチにURLとしてパラメータを送信しようとしています。どうやってやるの?sparqlクエリ:パラメータとしてのURL、PythonとSesame-Workbenchで使用する

具体的には、私のコードの作業サンプルは、次のとおりです。述語'価格' のオブジェクトが'http://something.com/OSPF' で出力で

p="OSPF" queryString = (""" PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> PREFIX : <http://something.com> INSERT DATA { : rdf:type FOAF:productdetails ; FOAF:price :%s . }""")% p 

。オブジェクトとしてwww.myurl.comが必要です。

+0

脇に:Sesame _Workbench_にプログラムでクエリを送信しないでください。 Workbenchは単なるクライアントUIです。代わりに実際のSesame Serverにクエリを送信してください。 –

+0

@JeenBroekstraどうすればいいですか?それから終わりの点は何ですか? – Aravind

+0

典型的には 'http:// /openrdf-sesame/repositories/'のようなものです –

答えて

0

私はPythonプログラマーではありませんが、文字列フォーマット(%演算子付き)を使用してSPARQLクエリに値を挿入しているようです。この場合、p( "OSPF")の値が文字列に挿入され、%sの代わりに使用されます。だから、これの結果は次のとおりです。

FOAF:price :OSPF . 

OSPFの前で:は、デフォルトの接頭辞で、ここに接頭辞名を使用していることを意味します。

PREFIX : <http://something.com> 

これはあなたのSPARQLクエリビーイングに挿入された最終的なURIにつながる:あなたは別のURLを使用する場合は

FOAF:price <http://something.comOSPF> . 

は、あなたが変更する必要がデフォルトの接頭辞は次のようにあなたの名前空間宣言で定義されていますこれは代用されます。 1つの解決策は、完全なURIをpの値として持つことです。その後、%sから先頭のコロンを削除し、代わりに(それは完全なURIです示すために)角括弧で囲む必要があります。

p = "http://www.myurl.com/OSPF" 
    queryString = (""" 
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX : <http://something.com> 

    INSERT DATA { 
    : rdf:type FOAF:productdetails ; 
     FOAF:price <%s> . 
    }""")% p 

別のオプションは、あなたのSPARQLクエリで別の名前空間宣言を導入し、中にそれを使用することですフロントは%sです。例:

p = "OSPF" 
    queryString = (""" 
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
    PREFIX FOAF: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX my: <http://www.myurl.com/> 
    PREFIX : <http://something.com> 

    INSERT DATA { 
    : rdf:type FOAF:productdetails ; 
     FOAF:price my:%s . 
    }""")% p 
+0

あなたの最初の説明が何を意味するか分かりません。あなたの質問に欠けているものがある場合は、それを編集して必要な情報を含めることができますか? –

+0

編集:2つの説明; 1。クエリ内に<%s>を使用している場合、トリプレット出力のオブジェクト部分(セサミワークベンチの直接クエリ機能を持つ 'SELECT * where {?a?b?c}'の出力を表示しているとき) のような角括弧どうすればそれを取り除くことができますか? _さらに多くのことがあります。私はいくつかの特殊文字(特にスペース)を含む変数を渡したいのですが、それを行う方法は?前もって感謝します。 – Aravind

+0

それは本当に別の質問のように聞こえる。新しい質問がある場合は別の新しい質問*として投稿してください。コンテキストを提供するのに役立つ場合は、この質問に戻るリンクを提供することができます。 –

関連する問題