我想开发一个使用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