我想開發一個使用protege,fuseki服務器和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 :hasType "EnvironmentalDescriptors" .
:PlantDescriptor :hasAttribute :TOC .
:PlantDescriptor :hasTOC "July" .
:TOC rdfs:subClassOf :Attribute .
其中PlantDescriptor和屬性是本體的概念。
我想從用戶輸入的屬性「TOC」,我想匹配它是否是「七月」或不;如果它與7月相匹配,那麼它將返回疾病名稱Diaporthe-stem-canker。
字符串部分用於將用戶輸入文本與值「July」匹配。這就是爲什麼我將它用作SPARQL Query中的一個php變量。
,我在我的查詢引擎使用的查詢是這樣的:
PREFIX : <http://localhost/soy_test1#>
select distinct ?P ?X ?Time
where {?PlantDescriptor :hasType ?P .
?PlantDescriptor :hasAttribute ?X.
?X :hasTOC "July" .
?X :hasTOC ?Time .}
返回值「七月」下時間,網址爲屬性概念和PlantDescriptor的對應屬性的類型? 。
希望我已經明確了我的觀點。
在此先感謝。
1.請在這裏展示真實的SPARQL查詢,它不是在目前的可讀這是一種特定於編程語言的形式一些字符串操作,我不習慣。 2.提供樣本數據3.提供您期望的內容以及您當前從查詢中獲得的內容。 – AKSW
感謝您的回覆,我已發佈編輯,將不勝感激。對不起,我忘了提及我目前得到的輸出......它顯示了我提供的任何東西的輸入名稱。 – user1790
從你最初的例子中,你可以設置TOC的值,它是一個來自用戶輸入的PHP變量,對嗎?如果這是真的,則第二個三重模式從相同的文字開始,這是第一個文字的對象。在RDF三元組中不允許字母位置的文字。 – AKSW