- From: Sandro Hawke <sandro@w3.org>
- Date: Fri, 06 Apr 2001 09:17:22 -0400
- To: www-rdf-logic@w3.org
> Peter F. Patel-Schneider <pfps@research.bell-labs.com> wrote: > > Aaron Swartz <aswartz@swartzfam.com> wrote: > > > > I don't believe anyone ever said syntax should be coded as reification. > > Merely that reification had a precise meaning ("I'm not saying this -- I'm > > talking about it") and that it could be used to encode logical constructs > > without necessarily bringing them into RDF Core. > > I, for one, would be very interested in hearing the precise meaning of > reification, particularly reification in RDF. Let me offer an answer. I don't think it's in RDF M&S 1.0, but I think it's consistent with the framers' intent and with general practice. In the RDF model, the act of "reification" is the act of identification by sufficient description. You reify an object as some term by creating a logical formula (also called the reification) which, being true, constrains the term to denote something which is indistinguishable from the thing denoted by any other term which identifies the same object. The reification formula, I believe, must contain only prearranged vocabulary terms, the term for the object, and variables. (In RDF, IMHO, a logical formula is a set of RDF sentences. The formula is true if and only if every sentence is true. A sentence is true if and only if the relationship named by the predicate does in fact exist between the subject term and the object term. Note that most current RDF predicate definitions implicitely dereference their terms and describe a relationship between the things denoted by the terms, but that's a different topic.) For example, you can reify a list L by creating a set of RDF sentences (given here in Subject (has) Predicate (which is) Object order) like L list:head ListItem1 L list:tail Tail1 Tail1 list:head ListItem2 Tail1 list:tail Tail2 ... Tailn list:tail list:TheEmptyList because (using the conventional meaning of these terms) there can be only one list L for which all these sentences are true. You can reify an integer N using a vocabulary of int:zero and int:succ as (for I=3): int:zero int:succ tmp1 tmp1 int:succ tmp2 tmp2 int:succ N You can reify an RDF Sentence using rdf:subject, rdf:predicate, and rdf:object. If the sentence is "A B C" in the syntax I'm using in this message, the reification is these three triples: S rdf:subject A S rdf:predicate B S rdf:object C You could use other vocabularies for reifying RDF Sentences. One alternative is S rdfalt:list_of_terms_in_pred_subj_obj_order LS LS list:head B LS list:tail LS2 LS2 list:head A LS2 list:tail LS3 LS3 list:head C LS3 list:tail list:TheEmptyList I find it interesting to apply reification beyond these kinds of objects with relatively formal definitions. I once wrote code to reify arbitrary Java objects. (I called it "describing" or "deconstructing" at the time.) Talking with Dave Becket about this, he just calls it "parsing" or "parsing to triples," which I like. The inverse operation (which I used to call "recognition" or "reconstruction") is then logically called "generation". Now I'm wondering if it makes perfect sense to say we reify a person, or other non-data object when we give a sufficent description to uniquely identify it. It's hard to know exactly what vocabulary is sufficient for people, though. Maybe some of the foaf stuff. -- sandro
Received on Friday, 6 April 2001 09:17:32 UTC