Algorithm 本体查询的搜索算法选项?

Algorithm 本体查询的搜索算法选项?,algorithm,sparql,owl,ontology,fuzzy-search,Algorithm,Sparql,Owl,Ontology,Fuzzy Search,我开发了一个工具,可以搜索我编写的本体。它将搜索作为SPARQL查询提交 我收到了一些反馈,我的搜索实现是全部或无,或“二进制”。换句话说,如果用户的输入与本体中的一个术语不完全匹配,那么他们就不会受到任何影响 我被要求添加一些更灵活的,或“高级”搜索算法。建议使用索引和词袋搜索 有人能给出一些在不需要文本匹配的本体上实现搜索方法的示例吗?首先,您要匹配什么类型的实体(文本或URI的字符串转换?),以及您现在正在运行什么类型的SPARQL查询?像这样的 ?term ?predicate "use

我开发了一个工具,可以搜索我编写的本体。它将搜索作为SPARQL查询提交

我收到了一些反馈,我的搜索实现是全部或无,或“二进制”。换句话说,如果用户的输入与本体中的一个术语不完全匹配,那么他们就不会受到任何影响

我被要求添加一些更灵活的,或“高级”搜索算法。建议使用索引和词袋搜索


有人能给出一些在不需要文本匹配的本体上实现搜索方法的示例吗?

首先,您要匹配什么类型的实体(文本或URI的字符串转换?),以及您现在正在运行什么类型的SPARQL查询?像这样的

?term ?predicate "user input" .
如果正在跨文本进行搜索,则可以通过使用不区分大小写的正则表达式筛选,立即使搜索更加灵活,尽管这可能会使搜索速度变慢,并且不会捕获某些单词标记以不同顺序出现的情况。在下面的示例中,您可能应该首先约束
?term
?predicate
的类型,或者甚至在userInput上过滤字符串数据类型

?term ?predicate ?someLiteral .
FILTER(regex(?someLiteral), "user input", "i"))
几个TripleStore支持全文搜索和结果评分。这些通常是SPARQL语言的扩展

例如,Virtuoso和其他一些提供了一个
bif:contains
谓词。Virtuoso还提供了(我想还有一项服务。)我对BlazegraphStardog中基于web的全文搜索感到满意,但我现在不能说将它们与SPARQL查询结合使用来获得搜索模式的分数。一些(GraphDB)甚至支持与Lucene或Solr*的显式集成,因此您可以利用它们的搜索语言

最后。。。您是否使用类似于owlapiRDF4J的库来访问您的本体?如果是这样,您当然可以将术语和任何文本之间的关系保存在Java原生数据结构中,然后直接使用模糊搜索组件(如Lucene)将每个文本索引为“文档”,然后在索引中搜索用户输入

为什么不发布你的本体,并给出一个你想以非二进制方式进行搜索的示例。我(或其他人)可以尝试向您展示一个最小的实现。


*Solr集成似乎仅在商业许可版本的GraphDB中提供

提出此类问题的平台错误@AKSW你是什么意思?Stackoverflow是针对特定的编码问题,你实际上什么都没有显示,问题太高了。然后,我们如何解释我们不知道的事情。看见你应该和你的主管进行沟通,以获得澄清。我记下了一些笔记让你开始,但正如@AKSW所说,你确实需要展示一些你当前的工作。