- From: Sandro Hawke <sandro@w3.org>
- Date: Thu, 25 Feb 2010 18:25:47 -0500
- To: Christian De Sainte Marie <csma@fr.ibm.com>
- cc: Gary Hallmark <gary.hallmark@oracle.com>, Axel Polleres <axel.polleres@deri.org>, kifer@cs.sunysb.edu, RIF <public-rif-wg@w3.org>, ivan@w3.org
> In PRD, ## can occur in conditions, but not in conclusions. That is > because we did not want a rule to be able to change the class hierarchy > (which RETE rule engine cannot do; at least not the OO ones). > > For the same reason, we did not want a rule to be able to change the class > of an object, which is why we restricted the use of # in conclusions to > New objects. > > The use of # or ## is not restricted in PRD conditions: so, I do not think > that PRD requirements are the reason why Core does not have ##, except if > ## would have been useful in Core only if allowed in the conclusion. But I > remember Dave being rather against ## (I was not so much in favor myself, > but that may have been for different reasons: from my -chair's hat off- OO > point of view, I do not see the use case for testing the class hierarchy). I check class membership all the time in my programming. (I know some people consider it bad OO practice, and I would never do it in C++, but in Python, or when doing doing hybrid stuff, like working with uncontrolled data, I think it's essential.) One of the issues I've been torn about in designing the mapping to RDF of the RIF syntax is whether to make class information a part of the mapping, so And and Or are only distinguished by the class, or to give their properties different names so that class information can be ignored. (I'm leaning, right now, toward keeping class information as essential, because it's closer to how the RIF syntax is currently conceived.) I think our decisions around # and ## were not done particularly well. I don't think we've ever had a clear story about when or how people should use them, especially in the presence of rdf:type and rdfs:subClassOf. I think, in the moment, some of us may have supported restrictions on their use in Core in order to essentially kill them, and force people to just use rdf:type and rdfs:subClassOf -- about which there is now a fair-sized body of experience and advice. (I wont quite confess to that particular motivation, since I don't actually remember what I was thinking at the time, but it seems plausible.) -- Sandro
Received on Thursday, 25 February 2010 23:25:49 UTC