2009-07-07 18 views
0

私はクエリフォームを作成し、フォームからキーワードを入力させます。次に、クエリフォームは、次のページに移動します。ここで、クエリフォームで作成された変数を次のページに移動します。新しいページの抜粋コードは次のとおりです。PHPを使用してSPARQLクエリに変数を含める方法

//received variable 
$abc1=$_POST['querykeyword']; 

$querystring = ' 
Prefix try <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
SELECT ?name ?age 
WHERE 
    {  ?url try:has-name ${"abc1"} ?name 
     ?url try:has-age ?age }'; 

ただし、出力結果は表示されませんでした。誰でも助けることができますか?

+0

私はあなたが私たちにあなたが照会されているRDFのサンプル、およびテストする使用しているの$ ABC1の価値を提供する必要がありますより多くの有用な答えを得ると思います。 使用しているRDFストレージエンジンまたはSPARQLクエリエンジンを(ご存知の場合)指定することもできます。 – tialaramex

答えて

0

クエリには多くの構文問題があるようです。 try:has-nameプロパティにはおそらくリテラルドメインがあります。だからあなたはリテラルを引用符で囲むべきです。また、グラフパターンといくつかの他のいくつかは、stackoverflowの非コードテキストの書式設定(質問を再フォーマットして修正)に関連する.がありません。しかし、この方法を試してください。

$querystring = ' 
    PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
    SELECT ?name ?age { 
    ?url try:has-name ?name . 
    ?url try:has-age ?age . 
    FILTER(?name = \"${"abc1"}\") 
    }'; 

PREFIX文がtry名前空間接頭辞を宣言します。次に、2つの変数nameageを選択するSELECT節があります。 WHEREはオプションです。 2つのグラフパターンは両方のパターンに一致するトリプルを選択し、FILTERnameの一致基準を満たすトリプルのみを保持します。あなたがすでに名前を知っているので、@ tialaramexの解決策はおそらくあなたのために働くだろう。私はこれを編集しています。将来的にはより複雑なフィルタリング操作を使用したい場合に備えて、少し違う解決策にしてください。

+0

@Prefixはタートル機能です。これはSPARQLです。 @Prefixではなく、SPARQLの単なるPREFIXです。 – tialaramex

+0

@tialaramex:もう一度ありがとう。一定。次回にクエリを解析します:) – laalto

+0

私はこの方法を試しましたが、結果はブラウザに「一致しない」と表示されました。しかし、私はそれが私にHTMLテーブルの名前と年齢を与えるべきであることを知っています。 –

1

質問とlaaltoの回答の両方が有効なSPARQLではありませんが、laaltoが近づいています。

Ismetが?name変数を固定値に置き換えたかったようです。その場合は、?name変数をSELECTおよびクエリ本体から削除する必要があります。そうしないと、解析してはなりません。使用されたPHPもT_VARIABLEの間違ったエスケープを持ちますが、PREFIXにはSPARQL構文ルールで必要なコロンがありませんでした。

試してみてください。

$querystring = " 
    PREFIX try: <http://www.semanticweb.org/ontologies/2009/5/test.owl#> 
    SELECT ?age 
    WHERE { 
    ?url try:has-name \"${abc1}\" . 
    ?url try:has-age ?age 
    }"; 

これは、少なくともあなたの変数を含む構文的に正しいSPARQLクエリを放出しなければなりません。

+0

@tialaramex:気づいてくれてありがとう、私の答えを今修正しました。 – laalto

+0

私はそれを試みたが、私はまだ私に出力を与えていない。 –

+0

希望するクエリを手動で実行して実際に動作することを確認しましたか? – tialaramex

0

古い質問ですが、FWIW: フレネルを使うことをお勧めします。これは最初はもっと仕事ですが、柔軟性があり、すでに苦労しています。フレネルは、RDFを表示する方法を記述するためのRDFプレゼンテーションボキャブラリーです。 SPARQL CONSTRUCTクエリを使用してデータを収集し、それをFresnelエンジンに渡して、パフォーマンスのために中間にキャッシュレイヤーを持つHTMLを生成することができます。

一部フレネルエンジンの実装では、あなたがPHPで作業している、特に以来ホルスを参照してください。

  • SIMILEのフレネルエンジン。 Java、Mavenリポジトリで利用可能

  • EmmanuelのIsaViz(部分的に;完全にFSLを実装); Java、SIMILEエンジンを利用する可能性が高い

  • FreieUniversitätBerlin Horus; (不明)PHP

  • OlinCollege

+0

こんにちは、偶然がもう生きていないようです。あなたが推薦できる他のフレネルエンジンを知っていますか? –

関連する問題