<rdf:RDF
    xmlns:iw="http://inferenceweb.stanford.edu/2004/07/iw.owl#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:owl="http://www.w3.org/2002/07/owl#"
    xmlns:daml="http://www.daml.org/2001/03/daml+oil#"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
  <owl:Class rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#Source"/>
  <owl:Class rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#DeclarativeRule"/>
  <owl:Class rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#Team"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#firstSubmissionDate"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#name"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#lastSubmissionDate"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#hasSource"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#submitter"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#englishExample"/>
  <rdf:Property rdf:about="http://inferenceweb.stanford.edu/2004/07/iw.owl#englishDescription"/>
  <iw:Source rdf:about="http://inferenceweb.stanford.edu/registry/ORG/KSL.owl#KSL"/>
  <iw:Team rdf:about="http://inferenceweb.stanford.edu/registry/TM/IW-TEAM.owl#IW-TEAM"/>
  <iw:DeclarativeRule rdf:about="http://inferenceweb.stanford.edu/registry/DPR/VCListenerCreationReasoningStep.owl#VCListenerCreationReasoningStep">
    <iw:submitter rdf:resource="http://inferenceweb.stanford.edu/registry/TM/IW-TEAM.owl#IW-TEAM"/>
    <iw:hasSource rdf:parseType="Collection">
      <iw:Source rdf:about="http://inferenceweb.stanford.edu/registry/ORG/KSL.owl#KSL"/>
    </iw:hasSource>
    <iw:name>Value Collection Listener Creation</iw:name>
    <iw:lastSubmissionDate>20060105102912</iw:lastSubmissionDate>
    <iw:firstSubmissionDate>20051128143726</iw:firstSubmissionDate>
    <iw:englishDescription>&lt;p>
This proof step is a forward-chaining resolution reasoning step implemented with Value Collections and listeners in JTP's frame system.
&lt;p>
Given a Horn clause with one positive literal and N>=3 negative literals, and given another positive triple P that unifies with one of the negative literals in the Horn clause, derive a shorter Horn clause with N-1 negative literals as would occur in a resolution step.  
&lt;p>
Note: some implementation detail is useful here to motivate the name of the rule.  Negative literals in the clause that are triples with one unbound variable correspond to Value Collections in JTP's frame system.  Recall that a Value Collection can be viewed as the set of values of &lt;code>?x&lt;/code> that satisfy a triple of the form &lt;code>(property subject ?x)&lt;/code>, or of the form &lt;code>(property ?x value)&lt;/code>.  A listener is created for one of those Value Collections to await new values, so that when one arrives (represented by triple P in the description above), this triggers the creation of new Value Collection listeners that correspond to triples with one unbound variable in the resultant shorter clause, thereby enabling future resolution involving the shorter clause.
&lt;p>
Note: regarding the restriction to N>=3 above, note that when N=2 the resulting clause would have only one antecedent and can be viewed as a Value Link between the Value Collections corresponding to its positive and negative triples, so the Value Link Creation proof step would instead be invoked to create such a Value Link.  For more information refer to the Value Link Creation rule description.</iw:englishDescription>
    <iw:englishExample>&lt;p>
Example 1:
&lt;p>
Given the horn clause corresponding to a Value Collection Listener Creation step:
&lt;pre>
  (&lt;= (holds ?prop ?w ?x) 
      (and (type ?prop TransitiveProperty) 
           (holds ?prop ?w ?y) 
           (holds ?prop ?y ?x)))
&lt;/pre>
wherein a listener has been set up awaiting new values for the Value Collection &lt;code>(type ?prop TransitiveProperty)&lt;/code>, and given the triple &lt;code>(type subClassOf TransitiveProperty)&lt;/code>, derive a new horn clause
&lt;pre>
  (&lt;= (subClassOf ?w ?x) 
      (and (subClassOf ?w ?y) 
           (subClassOf ?y ?x)))
&lt;/pre>
with variable binding &lt;code>?prop=subClassOf&lt;/code>, and create a listener for Value Collection &lt;code>(:has-slot ?z subClassOf)&lt;/code> to enable future resolution; this is what happens when the resultant clause has no literals corresponding to Value Collections.
&lt;p>
Example 2:
&lt;p>
Given the resultant clause above, and the triple &lt;code>(:has-slot CRAB subClassOf)&lt;/code>, derive a new clause:
&lt;pre>
  (&lt;= (subClassOf CRAB ?x) 
      (and (subClassOf CRAB ?y) (subClassOf ?y ?x)))
&lt;/pre>
with variable binding &lt;code>?w=CRAB&lt;/code>, and create a listener for Value Collection &lt;code>(subClassOf CRAB ?y)&lt;/code> to enable future resolution.
&lt;p></iw:englishExample>
  </iw:DeclarativeRule>
</rdf:RDF>
