【问题标题】:SPARQL - Get asserted class when reasoning is enabledSPARQL - 启用推理时获取断言类
【发布时间】:2016-04-13 17:43:27
【问题描述】:

在三元存储中激活推理时,以下查询

SELECT ?classiri
WHERE {
    ex:myElement rdf:type ?classiri
}

会产生这样的结果:

owl:Thing
ex:Animal
ex:Human
ex:MaleHuman

有没有办法只得到明确断言的公理作为结果? (在这种情况下,显然是ex:MaleHuman

请注意,除其他原因外,不能关闭推理,因为上述是需要推理的更复杂查询的一部分。

【问题讨论】:

    标签: sparql rdf owl reasoning


    【解决方案1】:

    您无法确定它是实际断言结果还是推断结果,但您可以通过如下查询获得最具体的实例:

    select ?class {
      :instance a ?class
      filter not exists {
        ?subclass rdfs:subClassOf ?class .
        filter (?subclass != ?class)
      }
    }
    

    这表示要获取 ?class 的值,这样就没有 ?subclass 的值(除了 ?class 本身) :instance 也属于的 ?class 的子类。

    相关

    【讨论】:

    • 我认为您在 FILTER 中缺少“:instance a ?subclass”,这可能吗?这个解决方案的问题在于,由于某种原因,它在时间方面的表现非常糟糕。在我的情况下不可接受
    • @user1156544 是的,错过了“实例子类”。我有点惊讶这表现得很糟糕:你已经能够让类扩大实例所属的范围,所以这不应该太多。也许寻找其他可能的课程更昂贵。糟糕的性能是在子查询中具有“实例子类”的固定版本,对吧?
    • @user1156544 既然你说这对你不起作用,我重新打开了这个问题,因为其他答案似乎对你不起作用。不过,您可能希望用这种方法遇到的一些性能问题来更新问题,否则其他人晚上会推荐相同的解决方案。
    • 谢谢。我将进行更多测试并获得更具体的结果并编辑问题。是的,它是固定版本,否则我没有结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    相关资源
    最近更新 更多