在sparql中将两个单词匹配在一起
如何列出贡献描述(诺贝尔奖:动机)中包含“人类”和“和平”两个词(即两个词都必须存在)的获奖者奖(由其标签给出) 我已经从中使用了bds:search名称空间。 访问此链接后,我编写了此查询在sparql中将两个单词匹配在一起,sparql,rdf,semantic-web,ontology,rdfs,Sparql,Rdf,Semantic Web,Ontology,Rdfs,如何列出贡献描述(诺贝尔奖:动机)中包含“人类”和“和平”两个词(即两个词都必须存在)的获奖者奖(由其标签给出) 我已经从中使用了bds:search名称空间。 访问此链接后,我编写了此查询 前缀rdfs: 前缀bds: 前缀nobel: 选择?奖励?说明 何处{ ?实体RDF:标签?奖励。 ?诺贝尔实体:动机?描述。 过滤器(bds:搜索(?说明、“人类”和“和平”)) } 此查询在执行时返回以下错误,如图所示。 如何更正此查询并获得所需的结果? 您可以查看此数据集的规范或下载 使用bds
前缀rdfs:
前缀bds:
前缀nobel:
选择?奖励?说明
何处{
?实体RDF:标签?奖励。
?诺贝尔实体:动机?描述。
过滤器(bds:搜索(?说明、“人类”和“和平”))
}
此查询在执行时返回以下错误,如图所示。
如何更正此查询并获得所需的结果?
您可以查看此数据集的规范或下载
使用bds:search搜索“人类”类别。然后对“和平”应用筛选和包含功能
前缀rdfs:
前缀bds:
前缀nobel:
前缀bif:
选择?奖励?说明
何处{
?实体RDF:标签?奖励。
?诺贝尔实体:动机?描述。
?说明bds:搜索“人”。
过滤器(包含(?说明,“和平”))
}
ehm,您的第二个链接只显示了Virtuoso triple store的解决方案,但您有Blazegraph。这是行不通的,全文搜索在SPARQL中是不标准的,所以每个三元组存储都有自己的语法。Blazegraph中的引擎基于Lucene,因此您应该尝试它们的语法。如果布尔查询不受支持,您可以通过执行?description bds:search“human”来重写它?描述bds:搜索“和平”
我不明白?为什么不使用两倍的全文索引呢?
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bds: <http://www.bigdata.com/rdf/search#>
PREFIX nobel: <http://data.nobelprize.org/terms/>
SELECT ?awards ?description
WHERE {
?entity rdfs:label ?awards .
?entity nobel:motivation ?description .
FILTER ( bds:search ( ?description, '"human" AND "peace"' ) )
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX bds: <http://www.bigdata.com/rdf/search#>
PREFIX nobel: <http://data.nobelprize.org/terms/>
PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
SELECT ?awards ?description
WHERE {
?entity rdfs:label ?awards .
?entity nobel:motivation ?description .
?description bds:search "human" .
FILTER (CONTAINS(?description, "peace"))
}