0

オントロジーに対して Jena フレームワークの SPARQL で次のクエリを実行しました (wasBornIn 述語はオントロジーに存在します)。

select ?p where 
  {
   ?s ?p ?o FILTER NOT EXISTS { ?s :wasBornIn ?o }
  }

select ?p where 
  { 
   { ?s ?p ?o } MINUS { ?s :wasBornIn ?o } 
  }

最初のクエリでは、次のエラーが発生します。

null
Error: Lexical error at line 7, column 21.  Encountered: " " (32), after : "NOT"

null
Error: Encountered "<EOF>" at line 5, column 16.
Was expecting:
"{" ...

2 番目のクエリでも、同様のエラーが発生します。

null
Error: Lexical error at line 5, column 38.  Encountered: " " (32), after : "MINUS"

両方のクエリは正しいようですが、なぜこれらのエラーが発生するのかわかりません。

4

1 に答える 1

3

:最初と 2 番目のクエリ (プレフィックスが定義されていると仮定) は有効です。sparql.org の query validatorで確認できます。たとえば、これらは両方とも合法です。

prefix : <>

select ?p where 
  {
   ?s ?p ?o FILTER NOT EXISTS { ?s :wasBornIn ?o }
  }
prefix : <>

select ?p where 
  { 
   { ?s ?p ?o } MINUS { ?s :wasBornIn ?o } 
  }

ただし、あなたが私たちに見せていないものがあります。7 行目 (最初の行) にエラーがあると言っていますが、表示されたクエリには 7 行がありません。それだけでなく、どうすれば 5 行目で EOF に遭遇し、7 行目で別のエラーが発生するのかわかりません。おそらく、実際にクエリを作成しているコードに何か違いがあるのでしょう。多分あなたはこのようなものを持っています:

"?s ?p ?o" + 
"FILTER NOT EXISTS { ?s :wasBornIn ?o }"

その場合、あなたはで終わるだろう

?s ?p ?oFILTER NOT EXISTS { … }

(つまり、 という名前の変数を使用?oFILTER)。ただし、コードを見なければ、これを診断するのは困難です。どういうわけか、クエリを正しく解析していない可能性もあります。

于 2014-04-02T18:48:48.063 に答える