在 SPARQL中aQuadPattern
定义为
QuadPattern ::= '{' Quads '}'
Quads ::= TriplesTemplate? ( QuadsNotTriples '.'? TriplesTemplate? )*
由此我了解到 aQuadPattern
可以为空。但我无法理解原因。空的目的是什么QuadPattern
?
正如@Antoine Zimmermann 指出的那样,仅仅因为语法允许它并不意味着它是有意义的。
在这种情况下,我相信这样做是为了将语法保持在一定的约束范围内并简化它。如果您不允许Quads
为空,则必须重新定义QuadPattern
规则:
QuadPattern ::= '{' '}' | '{' Quads '}'
这只会增加不必要的复杂性,尤其是在您使用解析器生成器时
例如,使用空的四边形图案,您可以完全删除默认图形:
DELETE WHERE { }
但是语法允许某些东西的事实并不一定意味着有一个故意的选择来允许特定的模式。在某些情况下,以更通用的方式定义事物可能更方便。