私は、プロテジェ、フセキサーバー、およびPHPを使用して大豆病気分析の意思決定支援システムを開発しようとしています。私はユーザーからの入力を受け取り、リテラルの照合に基づいて病名を返すことを望みます。私がしようとしているクエリは次のとおりです。ユーザー入力をtripplestoreデータと一致させる
$sparql = "PREFIX : <http://localhost/soy_test1#>
select ?Diaporthe_stem_canker where {?Diaporthe_stem_canker :hasTOC ' . TOC . ' . ' . TOC .' :hasTOC 'July'}";
それは、常に関係なく入力が何であるかDiaporthe_stem_cankerを返しません。私は、sparqlクエリのエラーを見つけることを試みています。どんな助けもありがとう。
ありがとうございました。
編集
次のように私が持っているオントロジーは以下のとおりです。
植物の大豆は、いくつかの植物の記述子によって記述されています。植物記述子には、いくつかの属性値を持ついくつかのタイプがあります。
例:PlantDescriptorと属性がオントロジーの概念である
:PlantDescriptor :hasType "EnvironmentalDescriptors" .
:PlantDescriptor :hasAttribute :TOC .
:PlantDescriptor :hasTOC "July" .
:TOC rdfs:subClassOf :Attribute .
。
"TOC"という属性の入力をユーザーから受けようとしていますが、これは "7月"かどうかを一致させたいものです。それが7月と一致すれば病名Diaporthe-stem-cankerを返します。
文字列部分は、ユーザー入力テキストを値「7月」と照合するための部分です。だから私はSPARQL Queryの中でPHP変数として使ってきました。
私は私のクエリエンジンで使用されるクエリは、このようなものです:
時間、属性の概念とそれに対応する属性のPlantDescriptorの種類のURLの下に値「7月」を返しPREFIX : <http://localhost/soy_test1#>
select distinct ?P ?X ?Time
where {?PlantDescriptor :hasType ?P .
?PlantDescriptor :hasAttribute ?X.
?X :hasTOC "July" .
?X :hasTOC ?Time .}
? 。
希望私はより明確な点を述べました。
ありがとうございます。
1.それが現在では読めないですが、ここでは実際のSPARQLクエリを表示してください:PHP(あなたの構文が何であるか全く分かりません(プログラミング言語固有のフォーム私が慣れていないいくつかのString操作。 2.サンプルデータを提供する3.あなたが期待しているものと、現在クエリーから得たものを提供します。 – AKSW
あなたの応答をありがとう、私は編集を投稿した、どんな助けていただければ幸いです。申し訳ありませんが、現在私が得ている出力について言及するのを忘れていました...それは、入力として提供するすべてのもののためのdiease名を示しています。 – user1790
最初の例では、TOCの値を設定しています。そうであれば、2番目のトリプルパターンは同じリテラルで始まります。これは最初のリテラルのオブジェクトです。 RDFトリプルでは、件名のリテラルは使用できません。 – AKSW