2017-03-24 79 views
-1

我想開發一個使用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的對應屬性的類型? 。

希望我已經明確了我的觀點。

在此先感謝。

+0

1.請在這裏展示真實的SPARQL查詢,它不是在目前的可讀這是一種特定於編程語言的形式一些字符串操作,我不習慣。 2.提供樣本數據3.提供您期望的內容以及您當前從查詢中獲得的內容。 – AKSW

+0

感謝您的回覆,我已發佈編輯,將不勝感激。對不起,我忘了提及我目前得到的輸出......它顯示了我提供的任何東西的輸入名稱。 – user1790

+0

從你最初的例子中,你可以設置TOC的值,它是一個來自用戶輸入的PHP變量,對嗎?如果這是真的,則第二個三重模式從相同的文字開始,這是第一個文字的對象。在RDF三元組中不允許字母位置的文字。 – AKSW

回答

0

該示例並不完全清楚,因爲您說您正在搜索Diaporthe-stem-canker,但這不在您的示例數據中。假設Diaporthe-stem-cankerPlantDescriptor,下面的查詢可以得到你所需要的:

SELECT ?disease 
WHERE { 
    ?disease :hasTOC "July" . 
} 

而在你的情況下,「七五」字符串插入到字符串,所以你可以,如果你使用有類似如下PHP(不知道你的語法是什麼(:

$sparql = "PREFIX : <http://localhost/soy_test1#> 
    select ?disease where {?disease :hasTOC " . $date . " . }" 

...其中$date勢必「七月」等

+0

在SPARQL中,你並不總是需要在示例數據中有一個事實...請檢查本教程http://www.semantic-web-journal.net/ system/files/swj1004.pdf。我的本體有點類似於這個例子。 – user1790

+0

恩,我只是在談論有一個好的數據集來幫助回答你的問題。 – scotthenninger

+0

好吧,我自己現在清楚我實際上在尋找什麼...如何在SPARQL代碼塊中包含$ _POST ['some_variable']?我想使用SPARQL檢查通過php中的表單提交的值。 – user1790

相關問題