【问题标题】:SPARQL select remaining triplesSPARQL 选择剩余的三元组
【发布时间】:2020-12-16 01:41:40
【问题描述】:

我有一个 RDF 图,其中包含使用不同本体描述的数据(想想 VCARD 和 FOAF)。

现在,为了让我的查询更简单,我想构建一个新图,在其中我将一个本体映射到另一个本体上,以便在一个本体中描述数据。

我已经弄清楚了映射部分,但我正在寻找一种选择“剩余三元组”的方法,即那些已经在正确本体中的 (因为这些在映射后应该保持不变)。

我认为应该有一种方法可以通过否定来做到这一点,但我似乎无法弄清楚。

例如,假设我有以下 RDF 图:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@base <http://example.org/>

<somePerson>
    a foaf:Person .
<someOtherPerson>
    a vcard:Individual .
# [Some more triples]

我想把它映射到:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@base <http://example.org/>

<somePerson>
    a foaf:Person .
<someOtherPerson>
    a foaf:Person.
# [Some more triples]

在不使用 VCARD 的情况下描述数据。

从第一个到第二个的映射很简单,但我正在寻找一种简单的方法来保持其他三元组不变。 (基本上将它们复制到输出中)。

【问题讨论】:

  • 我不完全理解,但 FILTER NOT EXISTS(或使用 MINUS)与您用于映射的模式相同,这放入 CONSTRUCT 查询(或 INSERT 可以工作。显然,它使用最小示例 + 映射查询 + 预期结果会更容易。
  • 感谢您的回复,为了清楚起见,我添加了一个示例。与此同时,我找到了一种方法来实现这一点,但这很麻烦: 1. 我查询要翻译的三元组。 2. 我对一般?x ?y ?z . 进行第二次查询,并为我在第一次查询中使用的每个语句使用FILTER NOT EXISTS。 3.我采取两者的结合。
  • 是的,这正是我的评论的意思。重复映射部分,但将其放入FILTER NOT EXISTS - 这是常见的方式
  • 好的,我希望可能有一个更优雅的解决方案,但如果它有效的话。我将添加一个答案以供将来参考。

标签: sparql rdf


【解决方案1】:

正如@UninformedUser 建议的那样,这个查询结构可以解决问题。

prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix vcard: <http://www.w3.org/2006/vcard/ns#>
CONSTRUCT {
    ?name rdf:type foaf:Person .
    ?x ?y ?z .
}
WHERE {
    {
        {
            ?x ?y ?z .
        }
        FILTER NOT EXISTS
        {
            ?x rdf:type vcard:Individual .
        }
    }
    UNION
    {
        ?name rdf:type vcard:Individual .
    }
}

从这里出发:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
@base <http://example.org/>

<somePerson>
    a foaf:Person .
<someOtherPerson>
    a vcard:Individual .
[Some more triples]

到这里:

@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@base <http://example.org/>

<somePerson>
    a foaf:Person .
<someOtherPerson>
    a foaf:Person.
[Some more triples]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多