- From: Jos de Bruijn <debruijn@inf.unibz.it>
- Date: Fri, 29 Feb 2008 09:23:59 +0100
- To: Gary Hallmark <gary.hallmark@oracle.com>
- CC: RIF <public-rif-wg@w3.org>
- Message-ID: <47C7C11F.9080606@inf.unibz.it>
Gary Hallmark wrote: > Looks ok. I'd suggest > > RULECONTENT ::= 'Forall' Var+ '(' FREECONTENT ')' | GROUNDCONTENT > > GROUNDCONTENT ::= FREECONTENT > > FREECONTENT ::= ATOMIC (':-' CONDITION)? > > This forbids nested Forall and gives a place to explain that ground > content is syntactically the same as free content but has no free > variables, and a place to explain that the Var+ of the Forall should > name exactly the free variables in FREECONTENT. agreed. It was an error in the BNF that nesting is allowed. > > Further, to dramatically improve readability of examples and test cases, > I'd suggest > > Const ::= LITERAL '^^' SYMSPACE | NUMERIC | ALPHANUMERIC > > where the last 2 options are sugar that allows one to omit any enclosing > "" or trailing ^^xsd:decimal or ^^rif:local. I agree that we want to improve readability of examples. incidentally, I think it is much more convenient to abbreviate IRIs rather than local symbols, since local symbols will not be used very often (I think): the names of local symbols are not accessible outside the rule set. However, I'm not sure this BNF is the place. I think we can just say something like: For readability, in the examples throughout this document and in other documents we use the following abbreviations: * "ns#localname"^^rif:iri as compact URIs of the form prefix:localname * "numeric+(.numeric+)?"^^xsd:decimal as numbers numeric+(.numeric+)? best, Jos > > I.e Ruleset(Rule(p(1)) is syntactically correct. > > > Jos de Bruijn wrote: >> Dear all, >> >> At the face-to-face I agreed to create a grammar for the presentation >> syntax of FLD [2] which acknowledges the difference between atomic >> formulas and terms in the productions, as well as a grammar for BLD >> [3] that is a restriction of the FLD grammar. >> >> When writing the grammar I came across a number of issues, which I >> mention below. >> >> Incidentally, I think there is a problem with the syntax for rules, as >> specified in FLD. Namely, a rule is an implication phi :- psi; no >> quantification seems to be allowed. In the grammar below I also >> allowed rules with universal quantification. >> >> I included the noncontroversial part of the metadata proposal and the >> built-ins. The production absolute-IRI is defined in [1]. >> Incidentally, I also removed the Implies production, because I did not >> really understand what it is for. >> >> Ruleset ::= 'Ruleset( ' absolute-IRI? Metadata* Rule* ' ) ' >> Rule ::= 'Rule( ' absolute-IRI? Metadata* RULECONTENT ' ) ' >> RULECONTENT ::= 'Forall' Var+ '(' RULECONTENT ')' | CONDITION >> (':-' CONDITION)? >> >> UNITERM ::= TERM '(' (TERM* | (Const '->' TERM)*) ')' >> >> CONDITION ::= 'And' '(' CONDITION* ')' | >> 'Or' '(' CONDITION* ')' | >> 'Exists' Var+ '(' CONDITION ')' | >> 'Forall' Var+ '(' CONDITION ')' | >> 'Neg' CONDITION | >> 'Naf' CONDITION | >> ATOMIC >> ATOMIC ::= Predicate | Equal | Member | Subclass | Frame >> Predicate ::= UNITERM | 'Builtin ( ' UNITERM ' ) ' >> Equal ::= TERM '=' TERM >> Member ::= TERM '#' TERM >> Subclass ::= TERM '##' TERM >> Frame ::= TERM '[' (TERM '->' TERM)* ']' >> >> TERM ::= Const | Var | Function| Equal | Member | Subclass >> | Frame >> Const ::= LITERAL '^^' SYMSPACE >> Var ::= '?' VARNAME >> Function ::= UNITERM | 'Builtin ( ' UNITERM ' ) ' >> >> Metadata ::= ' Metadata ( ' METADATALIST ' ) ' >> METADATALIST ::= absolute-IRI MetadataValue | METADATALIST ' ; ' >> METADATALIST >> METADATAVALUE ::= Const | ' [] ' | ' [ ' METADATALIST ' ] ' >> >> >> SYMSPACE ::= absolute-IRI >> >> >> I suppose that in the textual description which say that LITERAL and >> VARNAME are sequences of Unicode characters. >> Actually, I would propose to make VARNAME just a sequence of >> alphanumeric characters and to always delimit LITERAL with double quotes. >> >> Then, it is not really clear from [2] what the syntax is of the names >> in named-argument predicates and functions. I would propose these >> names to be absolute IRIs. >> >> >> Below is diagram restricted to the case of BLD. Only three >> restrictions were necessary: >> - a rule head may only be an atomic formula, not arbitrary condition >> - conditions may not contain negation universal quantification >> - function and predicate identifiers may not be terms >> >> >> Ruleset ::= 'Ruleset( ' absolute-IRI? Metadata* Rule* ' ) ' >> Rule ::= 'Rule( ' absolute-IRI? Metadata* RULECONTENT ' ) ' >> RULECONTENT ::= 'Forall' Var+ '(' RULECONTENT ')' | ATOMIC (':-' >> CONDITION)? >> >> UNITERM ::= Const '(' (TERM* | (Const '->' TERM)*) ')' >> >> CONDITION ::= 'And' '(' CONDITION* ')' | >> 'Or' '(' CONDITION* ')' | >> 'Exists' Var+ '(' CONDITION ')' | >> ATOMIC >> ATOMIC ::= Predicate | Equal | Member | Subclass | Frame >> Predicate ::= UNITERM | 'Builtin ( ' UNITERM ' ) ' >> Equal ::= TERM '=' TERM >> Member ::= TERM '#' TERM >> Subclass ::= TERM '##' TERM >> Frame ::= TERM '[' (TERM '->' TERM)* ']' >> >> TERM ::= Const | Var | Function >> Const ::= LITERAL '^^' SYMSPACE >> Var ::= '?' VARNAME >> Function ::= UNITERM | 'Builtin ( ' UNITERM ' ) ' >> >> Metadata ::= ' Metadata ( ' METADATALIST ' ) ' >> METADATALIST ::= absolute-IRI METADATAVALUE | METADATALIST ' ; ' >> METADATALIST >> METADATAVALUE ::= Const | ' [] ' | ' [ ' METADATALIST ' ] ' >> >> >> SYMSPACE ::= absolute-IRI >> >> >> Another thing: why do we allow nesting of Forall statements in rules >> if one can already specify multiple variables? >> I would propose to either remove the nesting or only allow mentioning >> of 1 variable. I would prefer the former. >> >> >> best, Jos >> >> >> [1] Internationalized Resource Identifiers. RFC 3987. >> http://www.ietf.org/rfc/rfc3987.txt >> [2] FLD editors draft. >> http://www.w3.org/2005/rules/wg/draft/ED-rif-fld-20080219/ >> [3] BLD editors draft. >> http://www.w3.org/2005/rules/wg/draft/ED-rif-bld-20080219/ >> >> > -- debruijn@inf.unibz.it Jos de Bruijn, http://www.debruijn.net/ ---------------------------------------------- One man that has a mind and knows it can always beat ten men who haven't and don't. -- George Bernard Shaw
Received on Friday, 29 February 2008 08:24:28 UTC