[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: HM.applications-Profiling-Level of Details/Abstraction
Just as a side-note, following what's been happening in the SOAP arena, the mustUnderstand attribute has proved to be contentious at best. In this case it is denoting whether a given node in a SOAP network understands a sufficient amount of the SOAP message coming in to process it, but this raises all types of issues such as, "If a node does not understand a block and its not a terminus in the transaction, should it perceive it as an error or send it on?", "What specifically is meant by understanding? The ability to process?", Especially before we get into a semantical quagmire, we should be reasonably confident ourselves about what the term "understand" means with both machine and human agents. Now back to your regularly scheduled program ----- Original Message ----- From: "Sean B. Palmer" <sean@mysterylights.com> To: "Bullard, Claude L (Len)" <clbullar@ingr.com>; "Rex Brooks" <rexb@starbourne.com>; "Ranjeeth Kumar Thunga" <rkthunga@humanmarkup.org>; <humanmarkup-comment@lists.oasis-open.org>; <www-archive@w3.org> Sent: Friday, September 07, 2001 9:15 AM Subject: Re: HM.applications-Profiling-Level of Details/Abstraction > [Len's parts are either prefixed per-line with "> ", or wrapped in "[[[" > and "]]]" and not given a source. Anything else wrapped in those delimiters > is quoteed material, and a source given.] > > > Sean, how would RDF represent this? Then we should inquire > > as to how a human object uses the knowledge base. > > Interestingly, this example reminded me very much of the one in the > Notation3/SW Primer:- > > [[[ > A simple rule, then, is, > > { sensor:thermostat math:greaterThan "30" . } log:implies { > control:furnace control:setTo "1" . } . > If a system is built which understands all the parts, this would allow it, > give > > sensor:thermostat math:greaterThan "30" . > to conclude > > control:furnace control:setTo "1" > ]]] - http://www.w3.org/2000/10/swap/Primer > $Id: Primer.html,v 1.9 2001/01/05 14:22:22 timbl Exp $ > > anyway, that's just a digression. The best I can do with representing your > code in RDF is:- > > [[[ > Given > > Episodic fact: (this.action(push red button) -> this.state(heater.On) -> > Result = "hot" ) > Context fact: (blue = "cold") > ]]] > > @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . > @prefix daml: <http://www.daml.org/2001/03/daml+oil#> . > @prefix log: <http://www.w3.org/2000/10/swap/log#> . > @prefix : <http://infomesh.net/2001/09/humltest/ont#> . > @prefix x: <http://infomesh.net/2001/09/humltest/#> . > > :Button a :Mechanism . > :Blue a :Class; rdfs:comment "the class of things which are blue"; > rdfs:label "Blue Thing" . > :Red a :Class; rdfs:comment "the class of things which are red"; > rdfs:label "Red Thing" . > x:BlueButton a [ daml:intersectionOf (:Button :Blue) ] . > x:RedButton a [ daml:intersectionOf (:Button :Red) ] . > x:Heater a :Heater . > x:AirConditioner a :AirConditioner . > > :Push a :Action; :performedBy :Humans; :to :Activate . > :Activated a rdfs:Class; rdfs:comment """the class of things > which have been activated, possibly by pushing""" . > # I'm not sure if one can use compliments in this way, but... > :NotActivated daml:complimentOf :Activated; > rdfs:comment "the class of thing that are not activated" . > > { { x:RedButton a :Activated } > log:implies > { x:Heater a :Activated . } } a log:Truth . > > { { x:RedButton a :NotActivated } > log:implies > { x:Heater a :NotActivated . } } a log:Truth . > > { { x:BlueButton a :Activated } > log:implies > { x:AirConditioner a :Activated } } a log:Truth . > > { { x:BlueButton a :NotActivated } > log:implies > { x:AirConditioner a :NotActivated } } a log:Truth . > > [[[ > Learns: > > - rules for learning > (this.action (this.object(controls) -> this.state(system.on)) > ]]] > > Hmm... perhaps it is fair to say:- > > { { { :x a :Activated } log:implies { :y a :Activated } . > { :x a :NotActivated } log:implies { :y a :NotActivated } } > log:implies > { :x :activates :y } } a log:Truth . > > however, if the air conditioner is not activated, that does imply that the > switch is not activated, but it doesn't imply that the air conditioner > actives the switch. Ah, there is a delay in the timing mechanism from the > switch going on to the thing being activated... so the log:implies > predicate isn't quite right here. I'll invent a new one "oftenPrecludes":- > > { x:RedButton a :Activated } > :oftenPrecludes > { x:Heater a :Activated } . > > { x:RedButton a :NotActivated } > :oftenPrecludes > { x:Heater a :NotActivated } . > > { x:BlueButton a :Activated } > :oftenPrecludes > { x:AirConditioner a :Activated } . > > { x:BlueButton a :NotActivated } > :oftenPrecludes > { x:AirConditioner a :NotActivated } . > > and hence the following rule works:- > > { { { :x a :Activated } :oftenPrecludes { :y a :Activated } . > { :x a :NotActivated } :oftenPrecludes { :y a :NotActivated } } > log:implies > { :x :activates :y } } a log:Truth; log:forAll :x , :y . > > let's feed all that junk into CWM and get it to think about it... aha, it > concluded (correctly):- > > x:BlueButton a [ > daml:intersectionOf ( > :Button > :Blue ) ]; > :activates x:AirConditioner . > > x:RedButton a [ > daml:intersectionOf ( > :Button > :Red ) ]; > :activates x:Heater . > > Neat. > > [[[ > - rules for specific results > (this.action (push blue button) -> this.state (airConditioner.on) -> > Result="cold") > ]]] > > Hmm... for that, we probably need:- > > # Just accept this for now > { { :x :oftenPrecludes :y } log:implies { :x log:implies :y } } > a log:Truth; log:forAll :x , :y . > > then we have the action itself:- > > x:BlueButton a :Activated . > > and then we need some rules that explain that when the air conditioner is > on, it is cold:- > > { { :x a :AirConditioner; a :Activated } > log:implies > { x:RoomTemperature :level :Cool } } > a log:Truth; log:forAll :x . > > { { :x a :Heater; a :Activated } > log:implies > { x:RoomTemperature :level :Warm } } > a log:Truth; log:forAll :x . > > of course, if both are on, then the room temperature is warm and cold... I > couldn't be bothered to account for the fact that they aren't boolean > states (I think CWM can deal with analogues, but it would be beyond the > scope of a mere example). Anyway, let's feed all this new junk into CWM, > get it to -think, and find out what it gives us. Remember, all we have said > is that the blue button is pushed on, and then given it a set of rules to > say that if the blue button is on, then the air conditioner is on, and so > the room temperature is cool. Hooray, it did it:- > > x:RoomTemperature :level :Cool . > > result! Let's convert the entire Notation3 output into XML RDF, just for a > laugh:- > > <!-- Processed by Id: cwm.py,v 1.59 2001/07/03 16:55:52 connolly Exp --> > <!-- using base file:C:\WINDOWS\DESKTOP\BLARGH~1.N3--> > > <rdf:RDF xmlns="http://infomesh.net/2001/09/humltest/ont#" > xmlns:daml="http://www.daml.org/2001/03/daml+oil#" > xmlns:log="http://www.w3.org/2000/10/swap/log#" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > xmlns:x="http://infomesh.net/2001/09/humltest/#"> > > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#BlueButton"> > </Activated> > </log:is> > <oftenPrecludes rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#AirConditioner"> > </Activated> > </oftenPrecludes> > </rdf:Description> > > <rdf:Description rdf:about="#_g10"> > <log:implies rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#AirConditioner"> > </Activated> > </log:implies> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#BlueButton"> > </NotActivated> > </log:is> > <oftenPrecludes rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#AirConditioner"> > </NotActivated> > </oftenPrecludes> > </rdf:Description> > <rdf:Description rdf:about="#_g13"> > <log:implies rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#AirConditioner"> > </NotActivated> > </log:implies> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > </Activated> > </log:is> > <oftenPrecludes rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/ont#y"> > </Activated> > </oftenPrecludes> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > </NotActivated> > </log:is> > <oftenPrecludes > rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/ont#y"> > </NotActivated> > </oftenPrecludes> > </rdf:Description> > </rdf:Description> > <log:implies rdf:parseType="log:Quote"> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > <activates > rdf:resource="http://infomesh.net/2001/09/humltest/ont#y"/> > </rdf:Description> > </log:implies> > </log:is> > </rdf:Description> > <rdf:type > rdf:resource="http://www.w3.org/2000/10/swap/log#Truth"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#x"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#y"/> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > <oftenPrecludes > rdf:resource="http://infomesh.net/2001/09/humltest/ont#y"/> > </rdf:Description> > </log:is> > <log:implies rdf:parseType="log:Quote"> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > <log:implies > rdf:resource="http://infomesh.net/2001/09/humltest/ont#y"/> > </rdf:Description> > </log:implies> > </rdf:Description> > </log:is> > <rdf:type > rdf:resource="http://www.w3.org/2000/10/swap/log#Truth"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#x"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#y"/> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > <rdf:type > rdf:resource="http://infomesh.net/2001/09/humltest/ont#AirConditioner"/> > </Activated> > </log:is> > <log:implies rdf:parseType="log:Quote"> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/#RoomTemperature"> > <level > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Cool"/> > </rdf:Description> > </log:implies> > </rdf:Description> > </log:is> > <rdf:type > rdf:resource="http://www.w3.org/2000/10/swap/log#Truth"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#x"/> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/ont#x"> > <rdf:type > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Heater"/> > </Activated> > </log:is> > <log:implies > rdf:parseType="log:Quote"> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/#RoomTemperature"> > <level > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Warm"/> > </rdf:Description> > </log:implies> > </rdf:Description> > </log:is> > <rdf:type > rdf:resource="http://www.w3.org/2000/10/swap/log#Truth"/> > <log:forAll > rdf:resource="http://infomesh.net/2001/09/humltest/ont#x"/> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#RedButton"> > </Activated> > </log:is> > <oftenPrecludes > rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#Heater"> > </Activated> > </oftenPrecludes> > </rdf:Description> > <rdf:Description rdf:about="#_g32"> > <log:implies rdf:parseType="log:Quote"> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#Heater"> > </Activated> > </log:implies> > <rdf:Description> > <log:is rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#RedButton"> > </NotActivated> > </log:is> > <oftenPrecludes > rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#Heater"> > </NotActivated> > </oftenPrecludes> > </rdf:Description> > <rdf:Description rdf:about="#_g35"> > <log:implies > rdf:parseType="log:Quote"> > <NotActivated > rdf:about="http://infomesh.net/2001/09/humltest/#Heater"> > </NotActivated> > </log:implies> > </rdf:Description> > <Activated > rdf:about="http://infomesh.net/2001/09/humltest/#AirConditioner"> > <rdf:type > rdf:resource="http://infomesh.net/2001/09/humltest/ont#AirConditioner"/> > </Activated> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/#BlueButton"> > <rdf:type rdf:parseType="Resource"> > <daml:intersectionOf > rdf:parseType="Resource"> > <daml:first > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Button"/> > <daml:rest > rdf:parseType="Resource"> > <daml:first > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Blue"/> > <daml:rest > rdf:resource="http://www.daml.org/2001/03/daml+oil#nil"/> > </daml:rest> > </daml:intersectionOf> > </rdf:type> > <rdf:type > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Activated"/> > <activates > rdf:resource="http://infomesh.net/2001/09/humltest/#AirConditioner"/> > </rdf:Description> > <Heater > rdf:about="http://infomesh.net/2001/09/humltest/#Heater"> > </Heater> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/#RedButton"> > <rdf:type rdf:parseType="Resource"> > <daml:intersectionOf > rdf:parseType="Resource"> > <daml:first > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Button"/> > <daml:rest > rdf:parseType="Resource"> > <daml:first > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Red"/> > <daml:rest > rdf:resource="http://www.daml.org/2001/03/daml+oil#nil"/> > </daml:rest> > </daml:intersectionOf> > </rdf:type> > <activates > rdf:resource="http://infomesh.net/2001/09/humltest/#Heater"/> > </rdf:Description> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/#RoomTemperature"> > <level > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Cool"/> > </rdf:Description> > <rdfs:Class > rdf:about="http://infomesh.net/2001/09/humltest/ont#Activated"> > <rdfs:comment>the class of things > which have been activated, possibly by pushing</rdfs:comment> > </rdfs:Class> > <Class > rdf:about="http://infomesh.net/2001/09/humltest/ont#Blue"> > <rdfs:comment>the class of things > which are blue</rdfs:comment> > <rdfs:label>Blue Thing</rdfs:label> > </Class> > <Mechanism > rdf:about="http://infomesh.net/2001/09/humltest/ont#Button"> > </Mechanism> > <rdf:Description > rdf:about="http://infomesh.net/2001/09/humltest/ont#NotActivated"> > <daml:complimentOf > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Activated"/> > <rdfs:comment>the class of thing > that are not activated</rdfs:comment> > </rdf:Description> > <Action > rdf:about="http://infomesh.net/2001/09/humltest/ont#Push"> > <performedBy > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Humans"/> > <to > rdf:resource="http://infomesh.net/2001/09/humltest/ont#Activate"/> > </Action> > <Class > rdf:about="http://infomesh.net/2001/09/humltest/ont#Red"> > <rdfs:comment>the class of things > which are red</rdfs:comment> > <rdfs:label>Red Thing</rdfs:label> > </Class> > </rdf:Description> > </rdf:Description> > </rdf:Description> > </rdf:Description> > </log:is> > </rdf:Description> > </rdf:Description> > </rdf:Description> > </rdf:RDF> > > There's a wonderful amount of CWM syntactic junk in there, but you get the > idea that XML RDF is a bit unweildy when it comes to expressing FOPL-type > logical statements (implications). > > Cheers, > > -- > Kindest Regards, > Sean B. Palmer > @prefix : <http://webns.net/roughterms/> . > :Sean :hasHomepage <http://purl.org/net/sbp/> . > > > ---------------------------------------------------------------- > To subscribe or unsubscribe from this elist use the subscription > manager: <http://lists.oasis-open.org/ob/adm.pl> >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC