考虑以下 SPARQL 更新:
INSERT {
?performance
mo:performer ?performer ; # optional
mo:singer ?singer ; # optional
mo:performance_of [
dc:title ?title ; # mandatory
mo:composed_in [ a mo:Composition ;
mo:composer ?composer # optional
]
]
}
WHERE {}
如果我不提供值(例如,在 Jena 的ParameterizedSparqlString.setIri()
for ?performer
、?singer
或?composer
中,此更新将不会插入带有相应对象的语句,这是预期的。
[] a mo:Composition
但是,如果?composer
丢失,我该如何压制。在第二个 INSERT 中创建它,其 WHERE 过滤器ISIRI(?composer)
似乎不是一个选项,因为该 INSERT 不会知道第一个已经创建的空白节点。
那么如何在单个 SPARQL 更新中支持这种可选参数呢?例如,有没有办法在两个 INSERT 之间“存储”空白节点?