SPARQL 查询根据语句的顺序返回不同的结果

2024-02-01

我有一个 SPARQL 查询,它返回两个资源的最具体的常见类。

当我尝试运行它时https://dbpedia.org/sparql https://dbpedia.org/sparql,有时它什么也不返回,有时它返回我想要的类。

我注意到它与查询中语句的顺序有关。

这不是理想的行为,因为当我执行查询时,我希望无论输入资源 URI 的顺序如何,它都会得到相同的结果。

有没有人遇到过这个问题并找到解决方案?

Queries

以下查询工作正常,返回http://dbpedia.org/ontology/Film http://dbpedia.org/ontology/Film and http://dbpedia.org/ontology/Wikidata:Q11424 http://dbpedia.org/ontology/Wikidata:Q11424结果:

SELECT ?lcs
WHERE
{
  <http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class1 .
  ?class1 rdfs:subClassOf* ?lcs .
  <http://dbpedia.org/resource/Finding_Nemo> a ?class2 .
  ?class2 rdfs:subClassOf* ?lcs .

  FILTER NOT EXISTS {
    <http://dbpedia.org/resource/Finding_Nemo> a ?class3 .
    ?class3 rdfs:subClassOf* ?sublcs .
    <http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class4 .
    ?class4 rdfs:subClassOf* ?sublcs .
    ?sublcs  rdfs:subClassOf ?lcs
  }

  FILTER strstarts(str(?lcs), "http://dbpedia.org/ontology")
}

但是,以下查询不返回任何内容:

SELECT ?lcs
WHERE
{
  <http://dbpedia.org/resource/Finding_Nemo> a ?class1 .
  ?class1 rdfs:subClassOf* ?lcs .
  <http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class2 .
  ?class2 rdfs:subClassOf* ?lcs .

  FILTER NOT EXISTS {
    <http://dbpedia.org/resource/Finding_Nemo> a ?class3 .
    ?class3 rdfs:subClassOf* ?sublcs .
    <http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class4 .
    ?class4 rdfs:subClassOf* ?sublcs .
    ?sublcs  rdfs:subClassOf ?lcs
  }

  FILTER strstarts(str(?lcs), "http://dbpedia.org/ontology")
}

  1. 您在公共端点上运行查询,该端点具有多种自我保护设置。这意味着昂贵的查询可能会产生部分结果或不产生结果,而廉价的查询可能会产生完整的结果。您可以设置自己的镜像端点(在 Amazon EC2 上快速轻松 https://aws.amazon.com/marketplace/pp/B012DSCFEK)没有这样的保护,并且您应该从等效查询中看到等效结果。

  2. @AKSW 对您的查询进行了调整,可以快速生成完整的结果 -

    add FILTER strstarts(str(?sublcs), "http://dbpedia.org/ontology") to the NOT EXISTS part

    (参见 and )

    SELECT ?lcs
    WHERE
    {
      <http://dbpedia.org/resource/Finding_Nemo>  a  ?class1  .
      ?class1  rdfs:subClassOf*  ?lcs  .
      <http://dbpedia.org/resource/Ice_Age_(2002_film)>  a  ?class2  .
      ?class2  rdfs:subClassOf*  ?lcs  .
    
      FILTER NOT EXISTS {
        <http://dbpedia.org/resource/Finding_Nemo>  a  ?class3  .
        ?class3  rdfs:subClassOf*  ?sublcs  .
        <http://dbpedia.org/resource/Ice_Age_(2002_film)>  a  ?class4  .
        ?class4  rdfs:subClassOf*  ?sublcs .
        ?sublcs  rdfs:subClassOf  ?lcs 
        FILTER strstarts( str(?sublcs), "http://dbpedia.org/ontology" )
      }
    
      FILTER strstarts( str(?lcs), "http://dbpedia.org/ontology" )
    }
    

(观察免责声明:开放链接软件 https://www.openlinksw.com/产生Virtuoso https://virtuoso.openlinksw.com/,它为 DBpedia 端点提供支持,并且上面提到的 AMI https://aws.amazon.com/marketplace/pp/B012DSCFEK。他们也雇用我。)

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

SPARQL 查询根据语句的顺序返回不同的结果 的相关文章

随机推荐

  • Knockout 将键值对象绑定到下拉菜单

    我有以下型号 var allCategories id 1 name Red id 5 name Blue function model self this self name ko observable self categoryId k
  • 如何从 Google Play 开发者控制台删除草稿?

    我在 Google Play 开发者控制台上有一个测试草案 它是空的 没有 apk 文件 也没有描述 我只是创建它来检查一些东西 现在草稿就在这里 我找不到删除它的按钮 我怎样才能删除该草稿 我找不到任何有关它的文档 Thanks 1 if
  • 如何设置条件编译变量?

    在 C C 中 您可以在代码中定义宏 如下所示 define OLD WAY 1 尽管我从未这样做过 但我认为 C 中也可以实现同样的功能 更重要的是 在 C C 中 可以通过执行以下操作来执行一些条件编译逻辑 if OLD WAY 1 i
  • 多个 svn 项目合并到一个 git 存储库中?

    我已经开始使用 git svn 来完成我的一些工作 以便能够进行本地提交 这对于使用标准 svn 布局的项目非常有用 最近 我开始开发一个 Java 项目 该项目分为多个连接的模块 20 25 每个模块在同一个 svn 存储库中都有自己的根
  • 我怎样才能让 Decimal.TryParse 解析 0.0?

    有没有办法让 Decimal TryParse 将字符串值 0 0 或 00 00 或 000 000 解析为 0 我尝试将 NumberStyles 设置为 Any 使用 InvariantCulture decimal TryParse
  • 如何忽略 Subclipse 中的构建目录?

    构建后 我在自动生成的构建目录中得到了大量的类文件 我不想提交它们 所以我尝试使用忽略它们Team gt Add to svn ignore 但它们已经变灰了 我尝试删除构建目录Project gt Clean 但有趣的是 当我尝试提交时
  • new String(char[]) 和 char[].toString 之间的区别

    Java 中以下两个代码块的输出是不同的 我试图理解为什么 private String sortChars String s char arr s toCharArray creating new char Arrays sort arr
  • Resteasy一般启用GZIP

    我有一个 RestEasy Java EE 应用程序 当我将 GZIP 添加到组件类时 如果客户端发送 accepts gzip 则服务器答案将被压缩 有没有办法为所有组件普遍启用 gzip 我不喜欢为每个类添加注释 我正在使用 RestE
  • 十六进制增量/循环直到 FFF

    我有一个包含十六进制数字的字符串 我想增加该十六进制数字 直到达到最大数字 FFF 我如何循环才能获得起始十六进制和 FFF 之间的每个数字 我尝试将字符串转换为字节数组 但之后陷入困境 string stringHex 7A string
  • 使用 BigQuery 获取 Firebase Analytics 历史数据

    我已将 firebase 分析应用程序链接到 BigQuery 并在 app events 和 app events intraday 表下获取原始数据 使用 BigQuery 的主要要求是获取在 Firebase 分析仪表板下获得的分析数
  • 如何将Gitlab项目复制到另一个Gitlab存储库?

    我想将 GitLab 项目复制到另一个存储库 该存储库应该是完全独立来自原始项目 为此 我尝试将原来的项目fork到另一个项目中 但在原始项目中 维护者仍然可以看到分叉列表 并知道其他分叉的维护位置 我想要一个完整的副本 没有任何到主项目的
  • WinSCP .NET 程序集拒绝 RSA/DSA 密钥指纹

    我正在尝试使用 WinSCP NET 程序集连接到 WinSCP 服务器 我遇到的问题是它会轰炸检查主机密钥指纹 我已经创建了 RSA 密钥 我的代码如下 var server new WinSCP SessionOptions serve
  • 将某些指标与 Google Analytics API v4 中的会话和产品相关联

    我在 GA api 中需要获取一些非常具体类型的指标 站点级别 使用购物车进行的站点访问添加 这是会话次数的计数 发生在会话中发生购物车添加的时间范围内 产品视图的站点访问 这是对在会话中出现产品详细信息视图的时间范围内发生的会话数量的计数
  • 材质按钮在预览中未正确显示

    这个问题与我的另一个问题相关 材质按钮 样式应用不正确 丑陋极了 https stackoverflow com questions 53224903 material button styles not being applied cor
  • TFS 2010:当我可以使用 XamlReader 进行反序列化时,为什么无法使用 XamlWriter.Save 反序列化 Dictionary

    public static string GetXml Dictionary
  • Python ctypes 可以在 x86-64 上加载 32 位 C 库吗?

    我有一台安装了 32 位库的 64 位 RHEL 主机 一个供应商有 32 位 所以我想使用 ctypes 加载到 Python 中 from ctypes import CDLL CDLL 32bitdinosaur so OSError
  • 运行应用程序期间的 Grails 警告/错误

    目前 当我尝试在 Eclipse 中运行我的 Google App Engine Grails 测试应用程序时 我看到了以下警告 警告 目标导致名称覆盖 startLogging 警告 找不到 C Users Some Person gra
  • 如何知道子列表中某个元素的索引

    如何知道子列表中元素的索引 类似的问题在这里被问到 https stackoverflow com questions 176918 finding the index of an item given a list containing
  • UIAutomator Facebook 登录

    我为我的应用程序创建了一个 UIAutomator 登录测试 它适用于某些模拟器 问题是 它并不适用于所有人 UiObject input mDevice findObject new UiSelector instance 0 class
  • SPARQL 查询根据语句的顺序返回不同的结果

    我有一个 SPARQL 查询 它返回两个资源的最具体的常见类 当我尝试运行它时https dbpedia org sparql https dbpedia org sparql 有时它什么也不返回 有时它返回我想要的类 我注意到它与查询中语