- From: Sandro Hawke <sandro@w3.org>
- Date: Sun, 22 Feb 2009 02:36:06 -0500
- To: kifer@cs.sunysb.edu
- cc: public-rif-wg@w3.org
> Good progress. Sorry I could not attend the telecon.
> But I do have a number of comments, below.
> michael
>
> On Fri, 20 Feb 2009 13:21:42 -0500
> Sandro Hawke <sandro@w3.org> wrote:
>
> >
> > IRC log: http://www.w3.org/2009/02/20-rif-irc
> > Present: Harold, Chris, Sandro
> > Agenda: http://lists.w3.org/Archives/Public/public-rif-wg/2009Feb/0113
> >
> > (Here's what I think we agreed. Chris and Harold, correct as desired.)
> >
> > Conclusions on presentation syntax issues:
> >
> > -- We agreed that "pd" in the metadata of example 4 of BLD was an
> > error and should be "_pd" or "pd"^^<rif:local>
> >
> > At some point we might allow a declaration ("local(pd)") which
> > would allow one to use "pd" like that.
> >
> > -- We agreed to add separators to the syntax, making it more like
> > other languages with infix operators, so that:
> > Group(p(a b (c+d) e(c+d) f (c+d)) q(a))
> > would instead be written something like:
> > Group(p(a, b, c+d, e(c+d), f, c+d); q(a))
> >
> > This will alas require transforming all existing test cases and
> > examples; Sandro will investigate automating that transforming,
> > or simply saying those are written in a different PS.
> >
> > (I'm not really happy about this, but have no better idea.)
> >
> > -- We agreed that CURIES and bare IRIs which do not contain
> > delimiters (but do contain operators) could be allowed. As a
> > consequence, infix operators like "-" and "+" will have to be
> > surrounded by whitespace.
> > f(my:max-width - 12) has a subtraction
> > f(my:max-width-12) has no subtraction
> > f(4-12) is disallowed, to keep people using spaces
> >
> > (I'm not really happy about this, but have no better idea.)
> >
> > -- String literals can have escapes (like \") as in turtle
> > http://www.w3.org/TeamSubmission/turtle/#sec-strings
> > (except the \>, which isn't needed since in RIF you can always
> > use rif:iri instead of <foo:bar>)
> >
> > -- We'll allow C++ syntax comments as a shortcut
> > for (* _some_new_term[rdfs:comment->"...stuff..." *)
> > if Sandro can come up with a decent way to parse & attach them
> > (Actually we said comments starting with "#", but in typing this
> > I realized that conflicts with InstanceOf)
> >
> > Actually does it need to be
> > (* _some_new_term _some_new_term[rdfs:comment->"...stuff..." *)
> > ? I can't tell from the spec.
>
> I don't really understand how you are planning to do that without requiring
> some kind of structure in those C++ comments.
Let me back up a little.
- I said, I really need a simple comment syntax. It's crazy
to be writing in some language and not be able to to make
comments (without the incredibly painful syntax seen above).
I just wanted some syntax that the parser would strip.
- Chris said that we agreed comments should be carried through as
metadata.
- I said, well, yeah, I guess I my parser could gather up the comment
strings and -- instead of throwing them away -- insert them as
rdfs:comment metadata. The hardest part is probably knowing what
node in the AST to attache the comment to -- but maybe it doesn't
matter too much.
Does that make more sense? Something else you COULD do:
//Author: Sandro Hawke
as a shortcut for some dc:creator metadata -- but that's NOT what I'm
looking for here an now. I want to be able to comment out code, to have
half-written code, to have little notes to myself, etc.
> >
> > -- Regarding literals like 123.456, we'll require a suffix to tell us
> > which datatype to use:
> > 123.456d ==> "123.456"^^<xs:decimal>
> > 123.456e ==> "123.456"^^<xs:double> (as in Java/C)
> > 123.456f ==> "123.456"^^<xs:float> (as in Java/C)
> > (123.456e+02 and 123.456f+02 are double and float, as usual)
> >
> > -- We'll allow formulas as terms in the general grammar
> > eg: p(1, 2, (p(1) :- q(2)), 3)
> > since some dialects might use them
>
> This is allowed in FLD, yes. The formula is treated as being reified.
But what if we require braces, as below...?
> > -- Responding to Chris's strong dislike of "->" as very confusing in
> > a logic language, we finally settled on "::" to replace it in NAU
> > and frames.
> > eg: p(b :: 1, bb :: f[my:color :: your:red])
>
> I can't imagine anything uglier than this particular choice.
Yeah, Harold said you probably wouldn't like it.
Do you have any suggestions for what we could use other than "->", which
Chris objects to on the grounds that it looks an awful lot like like the
"implies" arrow?
For my part, I don't mind the arrow too much. I've spend some months
here and there using Otter -- for which it is the implication operator
-- but I spent much more time using C and C++ for which it is the
"member by pointer" operator. That usage is kind of like this F-Logic
usage, and yet quite different....
Some other options we talking about:
-- nothing (whitespace), which we might be able to parse, but
could still get confusing
object[property value]
-- single colon, which is perhaps my favorite, but runs more risk
of being confused with namespace stuff (even if we require
whitespace):
object[property : value]
[For myself, I think the namespace separator ought to be
underscore instead of colon, or cleverly dot (as in python),
but I guess I'm too late on that one.]
-- colon-equals, suggesting the value is assigned to this property
object[property := value]
-- equals, which we could parse (I think) if we require formulas
inside terms to be wrapped in bracess
object[property = value]
Anything else? There are things I like and dislike about all these
options.
> > Conclusions on other issues:
> >
> > -- It would be nice to anonymous frames. In PS, the syntax could be
> > _[attr->value] (or _[attr :: value])
>
> There is more to anonymous frames than that. What is needed is a general synt
> ax
> for skolem functions/constants. The anonymous frame is just a special case of
> that. In FLORA-2, there are two kinds of symbols for Skolem symbols: _# and
> _#<number> (ie, _#1, _#2, etc.). This allows skolems to be cross-referenced
> within the same formula (eg., when you skolemize an existential var, which
> occurs in several places in the same formula).
Why not just use existential vars, and let systems Skolemize if they
need to? (And then an anonymous frame is just a frame whose object is
an existential variable, implicitely scoped at the innermost containing
formula.)
> > -- It would be nice to have nested frames, and more generally frames
> > in terms. Can we please add them back? They're just syntactic
> > sugar (unless you have anonymous frames).
>
> In FLD, a nested formula is not syntactic sugar. It is a reified formula.
> To distinguish syntactic sugar from reification, some syntax is needed.
> For instance, a[b->{c[d->e]}].
Oh! I thought (perhaps wishfully?) that in F-Logic you could write:
sandros_car[color->green, maker->honda[located_in->Japan]]
and if it occured as a formula, it was syntactic sugar for:
sandros_car[color->green, maker->honda] and honda[located_in->Japan]
I also thought you could do the same sort of thing in a term, so
p(x) and q(sandros_car[color->green])
was syntactic sugar for:
p(x) and q(sandros_car) and sandros_car[color->green]
Have I been wrong about these?
- Sandro
Received on Sunday, 22 February 2009 07:36:27 UTC