将文本搜索 where 子句添加到 SPARQL 查询

2023-12-23

我得到了一个我认为是简单的任务 - 获取现有的 SPARQL 查询并调整 WHERE 子句以将结果限制为特定文本字段包含特定搜索词的实体。

但是,我对 SPARQL 语言完全陌生,我尝试过的任何方法都不起作用。看来我需要使用text:query (rdfs:label 'word' 10)语法,但我还没有成功地将其集成到下面的查询中。

我需要的是进一步过滤以下查询的结果,其中 rdfs:label 三元组的值包含搜索词。如果你们中的任何人可以提供有关我需要如何更改查询的指导,我将非常感激。

SELECT DISTINCT * WHERE 
{
  { SELECT  ?object ?label ?accessionNumber ?image  WHERE {
      ?object a my:Object .
      ?object my:accessionNumber ?accessionNumber .
      ?object  rdfs:label ?label .
      ?object my:maker <http://id.my.org.uk/agent/1234> .  
  }}  

  OPTIONAL  { 
    ?object my:preferredAsset ?asset .
    ?asset a my:Asset .
    ?asset dcterms:hasVersion ?image .
    ?image my:role 'thumbnail' .  
  }  
} 

提前致谢。


近似匹配

字符串匹配

约书亚·泰勒 https://stackoverflow.com/users/1281433/joshua-taylor的评论指出了一个出色而优雅的解决方案,可以完全满足您的要求:

filter contains( lcase(?label), "word").

您还可以通过以下方式使用正则表达式REGEX过滤功能 http://www.w3.org/TR/sparql11-query/#func-regex。您只需向查询添加一个额外的过滤器,例如:

FILTER regex(?label, "*word*", "i") .

这将允许您检索包含以下内容的所有标签word(不区分大小写)。

耶拿文本

语法text:query (rdfs:label 'word' 10)你提到的是的一部分jena-text项目。请注意,您必须配置 jena 文本 http://jena.apache.org/documentation/query/text-query.html#configuration让它发挥作用。您想要使用的第一次是如果您想要执行近似文本匹配,即:如果可以接受搜索word并取回类似的东西words or wordpress etc.

精确匹配

另一种选择是精确匹配。您可以通过指定初始绑定或直接修改查询来完成此操作。

查询修改

修改您的查询将产生多种变体之一。并非所有这些变体都被视为相同(普通文字/语言文字/类型化文字),因此在搜索时需要小心以确保数据匹配。

 ?object  rdfs:label "word" .
 ?object  rdfs:label '''word''' .
 ?object  rdfs:label "word"@en .
 ?object  rdfs:label "word"^^xsd:string .

装订规格

构造初始绑定通常看起来像这样(伪代码):

final QuerySolutionMap initialBinding = new QuerySolutionMap(){{
     this.add("?label", model.createTypedLiteral(someString));
}};
final QueryExecution e = 
         QueryExecutionFactory.create(query,model,initialBinding);

请注意,第二个参数add与查询修改具有相同的选择。您可以创建语言文字或普通文字而不是类型文字。同样,它需要与您的基础数据相匹配。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文本搜索 where 子句添加到 SPARQL 查询 的相关文章

  • 使用 SPARQL 仅对一个值进行 DISTINCT

    我想使用 SPARQL 检索人口超过 10 万的意大利城市列表 我使用以下查询 PREFIX dbo
  • 数据导入期间超出 Fuseki GC 开销限制

    我正在尝试在启动时将 LinkedMDB 610 万个三元组 导入到我的本地版本的 jena fuseki 中 path to fuseki server file path to linkedmdb nt ds 它运行了一分钟 然后因以下
  • 基于 SParQL 中的 URI 进行过滤 [重复]

    这个问题在这里已经有答案了 您可以在以下位置运行以下查询链接 MDB SPARQL 资源管理器 http www linkedmdb org snorql 的价值观 imdbID 最后一个变量 包含来自三个可能域 freebase com
  • 如何在任意长度的sparql路径中使用Union/or?

    我使用下面的查询从 DBPedia 本体中查找具有城市域 或城市超类 或国家范围 或国家超类 的所有属性 当我使用固定长度的路径时没有问题但是当我把 要定义任意长度的路径 我收到此错误 Virtuoso 37000 错误 SP031 SPA
  • 如何将 SPARQL 发布到 Virtuoso?

    我正在使用两种不同的HTTP POST公用事业 poster https addons mozilla org en US firefox addon poster 从 Firefox 以及Python requests http docs
  • 从 dbpedia 获取改编成电影的书籍列表

    我正在尝试获取改编自 dbpedia 书籍的美国电影列表 这是我到目前为止所拥有的 PREFIX onto
  • 如何在 TDB TripleStore 中加载模型

    我有一个问题问你 我想在我的 Jena TDB TripleStore 上加载一个文件 我的文件很大 大约80Mb 大约700000个三倍RDF 当我尝试加载它时 执行停止工作或需要很长时间 我正在使用在 Web 服务上运行的代码 Stri
  • 如何获取维基百科根类别的终端叶子

    我只想获取维基百科类别的叶子 但不知道如何获取 我可以得到所有的叶子 SELECT subcat WHERE subcat skos broader category Buildings and structures in France b
  • 在 sparql IN 子句中使用另一个 sparql

    我正在使用 SPARQL 我想知道是否可以在 in 子句中放入 sparql 更具体地说 我需要获取具有此 sparql 查询特定条件的实体 s1 s2 s1 在某个字段上的聚合值大于 5 select s1 x s2 WHERE s1 r
  • Sparql 查询永远运行

    我在耶拿执行 SPARQL 查询时遇到了困难 结果导致了我无法理解的行为 我正在尝试查询 Esco 本体 https ec europa eu esco download https ec europa eu esco download 我
  • SPARQL递归祖先查询

    我被 SPARQL 中的递归查询困住了 我无法理解它 我想获得一个实例的所有祖先 a a hasParent b b hasParent c c hasParent d 所以结果将是 b c and d 如果实例是 a 有什么想法如何构造父
  • RDF 读取/解析错误

    我有一些 RDF 文件 我想将其导入到 tripplestore AllegroGraph 中 但在第一个文件中 我收到 SAX 解析器错误 指出存在无法识别的字符 删除有问题的行后 一切都很好 然后我尝试使用 W3C RDF 验证器和带有
  • Jena 桌面 SPARQL 客户端 (TDB)?

    我正在开发一个使用 Jena 进行存储 带有 TDB 后端 的应用程序 我正在寻找类似 Squirrel 的东西 它可以让我看到正在存储的内容 运行查询等 这似乎是一个明显需要的东西 但我的 可能措辞不好 谷歌查询没有出现任何有希望的东西
  • 在 Protege 中使用 SPARQL 推断数据

    我正在尝试推断 RDF 数据 假设我有这些三元组 RDF Turtle 是我使用 Protege 创建的 prefix owl
  • 使用 SPARQL 提取 dbpedia 实体的层次结构

    我正在尝试使用以下方法提取 DBpedia 资源的 Wikipedia 类别或 Yago 分类的层次结构SPARQL端点 http dbpedia org sparql 例如 我想以实体的分层形式找出所有可能的类别和类 例如 http db
  • 通过SPARQL UPDATE从本体中删除空白节点

    我在 SPARQL UPDATE 插入 操作的帮助下将一些数据存储在 protege 中制作的本体模型中 以下是更新查询 PREFIX test
  • 根据 URI 前缀从 DBpedia SPARQL 查询中排除结果

    使用时如何排除一组概念DBpedia SPARQL 端点 http dbpedia org sparql 我使用以下基本查询来获取概念列表 SELECT DISTINCT concept WHERE x a concept LIMIT 10
  • 如何从维基数据属性中获取最新值?

    假设我想获取每个国家 Q6256 及其最近记录的人类发展指数 P1081 值的列表 该国家 地区的人类发展指数属性包含在不同时间点获取的数据点列表 但我只关心最新的数据 此查询不起作用 因为它会为每个国家 地区获取多个结果 每个人类发展指数
  • SPARQL 查询以获取定义了命名空间前缀的所有类标签

    我想获取存储在芝麻存储库中的所有类 这是我的查询 SELECT class classLabel WHERE class rdf type rdfs Class class rdfs label classLabel 它返回带有标签的类的所
  • 在 dotNETRDF 中使用 SPARQL 列表 - 列表的交集

    我正在使用 dotNetRDF 并且很难理解如何使用提供的列表助手 目前我没有使用列表 只使用一个项目 如下所示 paramString SetParameter nickname g CreateLiteralNode nicknameS

随机推荐

  • 如何将图像和文本添加到 QLabel

    我有一个带有 QLabel 的 QHBoxLayout 我试图在 QLabel 中获取图标和窗口标题文本 那可能吗 或者甚至将图标直接添加到 QHBoxLayout 以便放置在窗口标题文本之前 这是我的代码 class MyBar QWid
  • 如何将参数从 CDI 中的另一个类传递给注入的类?

    我是 CDI 新手 试图找到这个问题的解决方案 但是找不到任何解决方案 问题是假设我有一个正在注入的类 A 其中注入了一些值 toPass 现在我想将这个相同的值 toPass 传递给B类 B类是从A类注入的 public class A
  • 将索引(数字 ID)列添加到大型数据框[重复]

    这个问题在这里已经有答案了 我将大型 csv 文件读取到数据框中 csv 文件中的数据来自多个表示用户信息的网站 例如 这里是数据帧的结构 user id number of logins number of images web 001
  • 遇到 java.net.BindException:服务器客户端套接字应用程序上的地址已在使用(绑定失败)

    我在服务器客户端套接字应用程序上遇到 java net BindException 地址已在使用 绑定失败 我正在尝试使用 Youtube 教程作为参考来了解 Java 套接字 我的代码似乎与视频中的所有内容匹配 变量名称除外 但是 当尝试
  • 创建和更新 Zend_Search_Lucene 索引

    我正在使用 Zend Search Lucene 创建文章索引 以便可以在我的网站上搜索它们 每当管理员在管理区域中更新 创建 删除文章时 都会重建索引 config Zend Registry get config cache confi
  • 比较 Python 类型的类型

    我有一个函数接受另一个用类型提示注释的 Python 函数 annotations 我想使用这些提示在运行时进行一些类型检查 问题是来自输入模块的类型类似乎不太容易使用 没有 isinstance 没有 issubclass 所以 我想知道
  • backbone.js:调用 collection.reset() 是否也会删除模型?

    我在主干文档中读到调用collection reset 清除集合 我想知道它是否也会删除模型 或者它们是否继续存在于内存中 如果没有删除它们 是否有一种更简单的方法可以删除集合中的所有模型 而无需迭代模型并调用model remove 你可
  • Powershell 脚本可以在 Powershell 中运行,但不能在 VB.Net 中运行

    我有一个简单的 powershell 脚本来启用 Exchange 中名为 test ps1 的邮箱 这是脚本 添加 pssnapin microsoft exchange management powershell admin 启用邮箱
  • Typescript 的代码覆盖率 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们刚刚在 Typescript 中启动了一个项目 我们需要获取代码覆盖率数据 我们现有的 JavaS
  • 成功的 MySQL DELETE 返回什么?如何检查DELETE是否成功?

    使用 PHP 我尝试删除一条记录 但我想检查它是否成功 成功后是否返回任何内容DELETE FROM foo where bar stuff 或者 您知道其他方法来检查删除是否成功吗 或者我最好在删除它之前确保该行存在 如果可能的话 我试图
  • Kendo Grid:当行更改时如何从代码更新数据源

    这是我之前几篇关于更新剑道网格数据源的文章的延续 我想做的最后一件事是当用户转到新行时发生这种情况 感谢 Lars 迄今为止提供的令人印象深刻的帮助 我通过检测行更改 碰巧在指令中执行此操作 并回调网格控制器来执行此操作 在网格控制器中我在
  • WSL2 上的 Ubuntu 18.04:“登录失败:尚未授予用户在此计算机上请求的登录类型。”

    重新启动 Windows 计算机后 我在尝试打开 Ubuntu 18 04 WSL2 实例时收到此错误 Logon failure the user has not been granted the requested logon type
  • MongoDB 投影参数在 findOne() 中不起作用

    我试图在 findOne 上使用投影参数从文档 统计信息 中提取单个字段 但它似乎只是返回整个文档 我在 Node js 中使用版本 mongodb 3 4 1 这是文档结构 id 5e563015fa9a1a0134cac3cb user
  • javascript图形库[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个不错的 JavaScript 图形库 它可以处理以下类型的图形 折线图 直方图 散点图 动态图表 我已经尝试过 Google
  • 防止伪元素自行断行

    我有一个链接样式 可以使用以下命令在链接末尾添加 SVG 箭头 after 问题是 当视口改变大小时 有时只有 SVG 会断线 我怎样才能设置它 以便 SVG 总是用最后一个单词来换行 a tag txtbtn font size 1 12
  • PHP预防xss

    Is htmlentitiesPHP 中防止 XSS 的最佳解决方案 我也想允许简单的标签 比如b i a and img 实现这一点的最佳解决方案是什么 我确实考虑过 bbcode 但发现如果没有正确实现我也会遇到 XSS 问题 我应该怎
  • 当我使用 document.execCommand("copy") 时,javascript 换行符不适用

    您好 我正在使用下面的代码构建一个字符串并复制它 但是在粘贴它时的输出中 换行符不适用 function copyToClipboardShipto var temp
  • 在 Orchard 中创建/编辑后清空内容项

    我正在使用在 Orchard 中创建 n to n 关系的指南 ocs orchardproject net Documentation Creating 1 n and n n relations 并进行一些细微的修改 虽然示例代码运行良
  • 移动语义和原始类型

    示例代码 int main std vector
  • 将文本搜索 where 子句添加到 SPARQL 查询

    我得到了一个我认为是简单的任务 获取现有的 SPARQL 查询并调整 WHERE 子句以将结果限制为特定文本字段包含特定搜索词的实体 但是 我对 SPARQL 语言完全陌生 我尝试过的任何方法都不起作用 看来我需要使用text query