【问题标题】:Querying polymorphism in RDF database using SPARQL使用 SPARQL 查询 RDF 数据库中的多态性
【发布时间】:2016-12-24 08:35:34
【问题描述】:

我有一个关于 RDF 模式中的多态性的问题。

我创建了一个类“MobilePhone”:

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <http://schema.org/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix my: <http://localhost/> .

my:MobilePhone rdf:type rdfs:Class .
my:MobilePhone rdfs:subClassOf schema:Product .
my:MobilePhone rdfs:label "MobilePhone" .

然后我执行了两个查询:

PREFIX : <http://schema.org/>
PREFIX my: <http://localhost/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?instance
WHERE {
    ?instance a my:MobilePhone . 
      }

PREFIX : <http://schema.org/>
PREFIX my: <http://localhost/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?instance
WHERE {
    ?instance a :Product . 
      }

我希望第二个查询检索所有产品。甚至是“手机”产品。但那并没有发生。我不得不使用:

PREFIX : <http://schema.org/>
PREFIX my: <http://localhost/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

SELECT ?instance
WHERE {
    ?class rdfs:subClassOf* :Product .
    ?instance rdf:type ?class .
}

有谁知道是否可以更新我的架构,以便搜索所有产品的第一个查询有效?

【问题讨论】:

    标签: sparql rdf


    【解决方案1】:

    可以通过“前向链接”更新您的 数据(不是您的架构 [或本体])以提供所需的结果 - 即,通过明确包含每个实体的声明a my:MobilePhone 也是 a :Product

    也可以使用“反向链接”来提供所需的结果;具体情况会因您的三重/四重商店和其他软件而异。 (My employer 的解决方案 Virtuoso 使用 DEFINE input:inference 编译指示到 activate an inference rule set for each query。)

    这两者都可以被认为是“推理”或“推理”,尽管常见用法通常将这些术语仅适用于动态操作 - 这发生在“反向链接”中的每个查询中,并且一次,预查询,通常在数据加载期间,在“前向链接”中。

    【讨论】:

    • 一种有点奇怪的表达方式。 “前向链接”和“后向链接”是两种推理形式。
    • 从某种意义上说,你是对的。我通常不认为“查询静态数据”是“使用推理”,即使推理用于生成静态数据。根据我的经验,常见用法与我的想法一致。您的里程可能会有所不同......可能还值得一提的是,这两个选项都不是“更新 [@Mayda's] 架构”。
    • 鉴于此处描述的广泛差异,似乎最可靠、跨系统兼容的选择是使用rdfs:subClassOf* SPARQL 查询。
    • Ted,在您的回答中,您将前向链接与物化混淆了。尽管使用前向链接进行物化是相当普遍的,但情况并非如此。也可以通过反向链接来实现您所推断的内容。这相当于缓存推理。在推断数据的大小比显式事实大得多的情况下(例如,大几个数量级),具体化是不切实际的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多