2017-03-24 82 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

相关问题