如何在dbpedia中使用SPARQL搜索与给定术语部分匹配的rdfs:label?

如何在dbpedia中使用SPARQL搜索与给定术语部分匹配的rdfs:label?,sparql,semantic-web,dbpedia,rdfs,sparqlwrapper,Sparql,Semantic Web,Dbpedia,Rdfs,Sparqlwrapper,我使用此查询搜索包含单词“Medi”的所有标签 然而,一旦我把“医疗保险”这个词从“医疗保险”改为“医疗保险”,它就不起作用了,而且超时了。如何让它与Medicare这样的较长单词一起工作,即提取包含Medicare一词的所有标签。您的查询必须迭代DBpedia中的所有标签(这是一个相当大的数字),然后应用字符串包含检查。这确实很贵 即使是计数查询也会导致“估计超时错误”: 选择计数(?标签),其中 { ?概念RDF:标签?标签 过滤器(正则表达式(str(?label),“Medi”))

我使用此查询搜索包含单词“Medi”的所有标签


然而,一旦我把“医疗保险”这个词从“医疗保险”改为“医疗保险”,它就不起作用了,而且超时了。如何让它与Medicare这样的较长单词一起工作,即提取包含Medicare一词的所有标签。

您的查询必须迭代DBpedia中的所有标签(这是一个相当大的数字),然后应用字符串包含检查。这确实很贵

即使是计数查询也会导致“估计超时错误”:

选择计数(?标签),其中
{ 
?概念RDF:标签?标签
过滤器(正则表达式(str(?label),“Medi”))
过滤器(langMatches(lang(?标签),“en”))
}
两种选择:

  • Virtuoso提供了一些全文搜索支持:

    选择不同的标签,其中{
    ?概念RDF:标签?标签。
    ?bif标签:包含“医疗保险”
    过滤器(langMatches(lang(?标签),“en”))
    }
    
  • 由于公共DBpedia端点是一个共享端点,因此解决方案是将DBpedia数据集加载到您自己的三重存储中,例如Virtuoso。您可以在此处调整最大估计执行超时参数

  • 您好,我实际上是在本地服务器上运行dbpedia。我更喜欢一个更快的解决方案,因为速度慢意味着糟糕的用户体验。所以,我复制粘贴了你的选项#1。得到了以下信息:
    Virtuoso 37000错误SP030:SPARQL编译器,第5行:“?label”在“bif:contains”之前的语法错误SPARQL查询:定义sql:big data const 0#输出格式:text/html定义sql:signal void variables 1选择DISTINCT?label其中{?concept rdfs:label?label?label?label bif:包含“Medicare”过滤器(langMatches)(lang(?label),“en”)}
    你能帮我调试一下吗:)啊,对不起,我忘了第一个三重模式后面的点。现在应该可以工作了。
    select distinct ?label where 
    { 
        ?concept rdfs:label  ?label 
        filter contains(?label,"Medi") 
        filter(langMatches(lang(?label),"en")) 
    }