- From: Dave Reynolds <der@hplb.hpl.hp.com>
- Date: Tue, 12 Dec 2006 18:40:55 +0000
- To: Michael Kifer <kifer@cs.sunysb.edu>
- CC: W3C RIF WG <public-rif-wg@w3.org>
Michael Kifer wrote:
>>> This kind of thing is done in every programming language to various
>>> degrees. For instance, in C, things that are sequences of digits belong to
>>> the sort of integers. Things that look like 123.456 are floats, "..." are
>>> strings. Alphanumeric things are variable names, type names, and procedure
>>> names. They are distinguished contextually by their declarations.
>> The notion of sorts of integers, strings etc and quantification over
>> sorts was at least somewhat familiar to me. It was the notion of
>> treating the variable names themselves as sorts, as opposed to
>> sorted-variables (i.e. where the variable is restricted to range over a
>> sort), that was a little surprising at first. Just ignorance on my part.
>
> Sorry, must be some misunderstanding. We are talking about sorted
> variables. Can you please point me to where it says (or implies) that
> variable names are sorts?
I read the text:
"Things that look like 123.456 are floats..."
as saying that there could be a sort of "floats" (no surprise!).
By analogy I took the following sentence :
"Alphanumeric things are variable names, type names, and procedure
names"
as meaning that there could be a sort of "variables" or "variable names".
My misunderstanding again.
This was at the heart of why I was confused first time around. To me
"webizing" is about how you spell things like variable-names and
procedure-names, and not to do with the type system that constrains the
types of variables or the signatures of procedures.
>>> Unfortunately, this syntax is UGLY. It also is not very flexible if we want
>>> some sorts to be non-disjoint (e.g., one to extend the other, which is very
>>> useful; such logics are called order-sorted).
>> Not sure I follow that. In RDF those datatypes include types which are
>> non-disjoint (xsd:decimal contains xsd:integer contains xsd:int etc). It
>> is true that a literal can only have a single explicit type and this is
>> a limitation but I don't think that limitation fundamentally stems from
>> that aspect of the syntax; non-literal individuals are not so restricted
>> or course.
>
> The problem is this. Suppose that sort A is a subset of sort B and we have
> a literal of sort A. We would write this literal as, say, foo^^A.
> On the other hand, the literals in B must look like foo^^B, which is different.
> Of course, we could start adjusting things and say that the literals of the
> sort B must have the form foo^^B or foo^^A or ........... (and the list
> goes on, as we have to include all the subsorts of A, etc.). This is
> particularly inconvenient if subsorts are going to be added by the various
> dialects.
OK.
I guess this isn't a problem in RDF because the interpretation of foo^A
and foo^B will be identical - the lexical-to-valuespace map will map
each onto the same valuespace element - and in RDF it's only the
interpretation we care about.
>>> Now, regarding the RDF instantiation, we could use
>>> &^$#$%%rdf(prop,object,subject), where &^$#$%%rdf is a special
>>> predicate symbol for RDF triples.
>>>
>>> The sort of the symbol &^$#$%%rdf would have to be the Boolean sort
>>>
>>> iri x iri x (iri+literal)
>>>
>>> where iri is a sort that contains all iri symbols and "literal" is a sort
>>> that contains all primitive data types. iri+literal is the least upper
>>> bound of the sorts iri and literal.
>> I realize this just an example but a direct mapping in which rdf
>> Properties can be treated as binary predicates (as in the UC8 example)
>> would be preferable, I think.
>
> If the Core will allow variables over predicate symbols like in HiLog then
> we could encode RDF directly as prop(object,subject).
Agreed.
>> That comment aside this example does reduce my uncertainty, thanks. So
>> the components of the boolean sort are what I would informally think of
>> as the syntactic entities like 'iri' (URIRefs in RDF-speak) rather than
>> the interpretation domain elements that they correspond to ('resources'
>> in RDF-speak). Makes sense.
>
> I am not sure I understand what you said.
>
> It may be that the name "Boolean sort" is not good, since one might think
> of a sort of {t,f} or a sort of truth values in general. What I meant was
> the sort sort1 x ..., sort_k -> Bool. Perhaps "predicate sort" is a better
> name. "Truth-valued arrow sort" is probably the most precise name.
I think I understood that and "boolean sort" is fine by me as a name.
What I was trying to do was clarify whether these sorts are sets of
syntactic elements or sets of domain elements (i.e. the things those
syntactic elements denote).
I interpreted the example to mean that they are sets of syntactic
elements, i.e. things like IRIs. One might contrast this with an
owl:Class like owl:Thing - the elements of (the extension of) owl:Thing
are the domain elements not the IRIs that denote them. In RDF those go
by the somewhat overloaded term "resource".
Though I suspect I'm just showing my ignorance again in thinking this is
a relevant or meaningful distinction :-(
Dave
Received on Tuesday, 12 December 2006 18:41:30 UTC