多SPARQL“地方插入”查询,在单个请求(Multiple SPARQL “INSERT WHER

2019-09-16 11:03发布

我的问题是类似于被要求在此线程是否有可能合并的2 SPARQL INSERT成一个?

我想有多个INSERT语句的WHERE查询中,但对于不同的主题。 我会想测试一个特定的值(“testValueN”),如果目前想插入一个新的三联供这个问题。

它的一个例子是,

PREFIX Sensor: <http://example.com/Equipment.owl#> 
{
    INSERT { 
        ?subject1 Sensor:test2 'newValue1' . 
           }
    WHERE {
        ?subject1 Sensor:test1  'testValue1' . 
          }
};
{
    INSERT { 
        ?subject2 Sensor:test2 'newValue2' . 
           }
    WHERE {
        ?subject2 Sensor:test1  'testValue2' . 
          }
};

我知道上面的查询是错误的。 我想知道,如果类似的事情在SPARQL是可能的。

Answer 1:

是的,这是可能的。 事实上,你的例子是几乎完全没事,只是失去每次插入周围的括号:

PREFIX Sensor: <http://example.com/Equipment.owl#> 
INSERT { 
    ?subject1 Sensor:test2 'newValue1' . 
}
WHERE {
    ?subject1 Sensor:test1  'testValue1' . 
};
INSERT { 
   ?subject2 Sensor:test2 'newValue2' . 
}
WHERE {
   ?subject2 Sensor:test1  'testValue2' . 
}

是一个有效的SPARQL更新序列。



Answer 2:

我想有多个INSERT语句的WHERE查询中,但对于不同的主题。 我会想测试一个特定的值(“testValueN”),如果目前想插入一个新的三联供这个问题。

为此,您可以用来指定你想要的属性oldValue / NEWVALUE对,而且只需要一个插件 。 它还范围更加完善,重视对新的,因为你只需要一行添加到查询。

PREFIX Sensor: <http://example.com/Equipment.owl#> 
INSERT { 
    ?subject Sensor:test2 ?newValue 
}
WHERE {
    values (?oldValue ?newValue) { 
        ('testValue1' 'newValue1')
        ('testValue2' 'newValue2')
    }
    ?subject Sensor:test1 ?oldValue
}


文章来源: Multiple SPARQL “INSERT WHERE” queries in a single request
标签: rdf sparql