sparql - dbpedia 中的自由文本搜索
问题描述
我想对 dbpedia 使用自由文本搜索,我正在尝试在 W3C 网站上找到的查询:https ://www.w3.org/2009/Talks/0615-qbe/
如果我通过将其注释掉来尝试不带 bif: 前缀的查询,则会收到查询下方显示的错误:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
# PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
SELECT ?lbl ?est
WHERE {
?country rdfs:label ?lbl .
FILTER(bif:contains(?lbl, "Republic")) .
?country a type:Country108544813 ;
prop:establishedDate ?est .
FILTER(?est < "1920-01-01"^^xsd:date) .
}
错误:第 9 行,解析错误:扩展 QName“bif:contains”时未定义“bif”的命名空间映射。[条件类型:sparql-lexer-error-namespace-mapping-not-defined]
好吧:这是有道理的,你确实需要定义你的命名空间。因此,让我再次使用我在 Virtuoso 网站(以及其他各种地方)上找到的 bif: 前缀进行相同的查询
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX type: <http://dbpedia.org/class/yago/>
PREFIX prop: <http://dbpedia.org/property/>
PREFIX bif: <http://www.openlinksw.com/schemas/bif#>
SELECT ?lbl ?est
WHERE {
?country rdfs:label ?lbl .
FILTER(bif:contains(?lbl, "Republic")) .
?country a type:Country108544813 ;
prop:establishedDate ?est .
FILTER(?est < "1920-01-01"^^xsd:date) .
}
现在我得到一个不同的错误:似乎 bif: 命名空间是 Virtuoso 的受保护名称
所以看来我不能忍受bif:或没有:bif。有没有人见过这个错误?谢谢。
顺便说一句:我真的不太关心 bif:我真正想要的是对 dbpedia 进行自由文本查询。因此,欢迎任何替代方案。是的:关于 SO 有较早的问题,但请注意,这些答案中的每一个都包含 bif: 以及。
稍后添加:所以只是为了确保我将 bif: 更改为 bof: 现在我收到一个新错误,表明 contains 不再是有效的运算符。见下文。所以无论如何:我想我从这里开始唯一关心的是:你如何对 dbpedia 进行自由文本查询:-)
解决方案
bif:
是 Virtuoso 内置的,用于“内置功能”。
您正在使用某种 SPARQL 预解析器,而不是直接针对 SPARQL 端点,因此您确实需要在查询中定义前缀。大多数这样的预解析器都会做正确的事情,如果你只是——
PREFIX bif: <bif:>
或者,您可以使用以下bif:contains
功能更改您的查询 -
FILTER(bif:contains(?lbl, "Republic"))
-- 使用 SPARQL 正则表达式 --
FILTER regex(?lbl, "Republic")
推荐阅读
- javascript - 禁用 Chrome 69 自动填充
- php - Woocommerce 分页仅适用于商店主页
- r - R Shiny 在每一步将日志写入 ui
- docker - Kubernetes 暴露多个 pod
- asp.net - 我无法将外键保存到一对多表 asp.net 但可以插入数据 asp.net mvc 5
- c++ - 使用私有派生类的构造函数初始化基类的数据成员
- c++ - 示例中重载的 new 运算符如何在不传递要分配的内存大小的情况下工作?
- vmware-clarity - 如何在 Clarity Datagrid 列的默认过滤器中添加标签名称
- android - 需要更新我的 apk 不是从谷歌播放
- ruby-on-rails - Rails 5.2.1:文件输入被文本输入替换 - ActiveAdmin 嵌套属性表单