【发布时间】:2011-03-21 08:10:19
【问题描述】:
我的应用程序需要匹配正确的单词,例如 C 或 C++ 与 SPARQL。我有以下 SPARQL 查询
String prolog = "PREFIX kb: <" + VBOOK.getURI() + ">";
String queryString = prolog
+ "\n"
+ "SELECT * "
+ "WHERE {?x kb:Price ?price. ?x kb:Currency ?currency. ?x kb:Title ?title. ?x kb:Count ?count. "
+ "OPTIONAL {?x kb:Description ?description}."
+ "FILTER regex(?title, \"" +title + "\")}";
这符合我所有的书,甚至包括 C++、C# 和诸如 -Real Concepts in Embedded Systems 之类的书(因为“概念”这个词有“C”)。
如果我将最后一行更改为
+ "FILTER regex(?title, \"" +"^"+title + "\")}";
如果书名是“C”,那么我的查询只匹配那些书名以字母“C”开头的书。因此,不会选择“ANSI C 编程”之类的书。
我也尝试在最后一行进行以下更改
+ "FILTER regex(str(?title), \"" +title + "\")}";
即使这对我没有多大帮助。
即使书名不以 C 开头,我如何修改以获得与“C”相关的书籍?
问候, 阿卡那。
【问题讨论】: