SPARQL选择剩余的三元组

SPARQL选择剩余的三元组,sparql,rdf,Sparql,Rdf,我有一个RDF图,其中包含使用不同本体(如VCARD和FOAF)描述的数据 现在,为了简化查询,我想构建一个新的图,其中我将一个本体映射到另一个本体,以便在一个本体中描述数据 我已经找到了映射部分,但我要寻找的是一种选择“剩余三元组”的方法,即那些已经在正确的本体中的三元组 因为映射后这些应该保持不变 我想应该有一种方法通过否定来做到这一点,但我似乎无法理解 例如,假设我有以下RDF图: @prefix foaf: <http://xmlns.com/foaf/0.1/> . @pr

我有一个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的情况下描述数据


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

正如@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]

我不完全理解,但筛选器不存在,或者使用与映射相同的模式使用减号,并且将其放入构造查询或插入可以工作。很明显,用一个最小的例子+一个映射查询+预期结果会更简单。与此同时,我找到了一种方法来实现这一点,但它很麻烦:1。我查询要翻译的三元组。2.我对general?x?y?z进行第二次查询。并对我在第一个查询中使用的每个语句使用一个筛选器。3.我把两者结合起来。是的,这正是我评论的意思。重复你自己的映射部分,但把它放入过滤器不存在-这是常见的方法好吧,我希望有一个更优雅的解决方案,但如果它工作它的工作。我将添加一个答案供将来参考。