<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-438</id>
	<title>Nabble - PowerLoom</title>
	<updated>2009-10-20T06:23:22Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/PowerLoom-f438.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PowerLoom-f438.html" />
	<subtitle type="html">PowerLoom knowledge representation system</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-25975097</id>
	<title>Dear powerloom-forum@nitro.isi.edu 52% 0FF on Pfizer !</title>
	<published>2009-10-20T06:23:22Z</published>
	<updated>2009-10-20T06:23:22Z</updated>
	<author>
		<name>PowerLoom mailing list</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;
&lt;head&gt;
  &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
 &lt;/head&gt;
        &lt;html&gt;
&lt;body&gt;
&lt;img src=&quot;MailScannerWebBug&quot; width=&quot;0&quot; height=&quot;0&quot; alt=&quot;Web Bug from MailScannerWebBug&quot; /&gt;
&lt;table cellpadding=0 cellspacing=0 width=600 align=center&gt;
     &lt;tr&gt;
          &lt;td class=EC_container bgcolor=&quot;#F2F2F2&quot;&gt;
               &lt;table cellpadding=0 cellspacing=0 width=&quot;100%&quot;&gt;
                    &lt;tr&gt;
                         &lt;td&gt;
                                                                                       
                                                &lt;div align=center&gt; &lt;a href=&quot;http://www.rxappreciating.cn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://mediapix.ru/pics/c556bf4f887c4b3b915a46116ecbccfb.jpg&quot; border=0 alt=&quot;Can't See Images? Click here! &quot;&gt;&lt;/a&gt; &lt;/div&gt;
                                             &lt;/td&gt;
                    &lt;/tr&gt;
                    &lt;tr&gt;
                         &lt;td class=EC_legal&gt;
                         &lt;strong&gt;About this mailing: &lt;/strong&gt;&lt;br&gt;
You are receiving this e-mail because you subscribed to MSN Featured Offers.  respects your privacy. If you do not wish to receive this MSN Featured Offers e-mail, please click the &quot;Unsubscribe&quot; link below. This will not unsubscribe 
you from e-mail communications from third-party advertisers that may appear in MSN Feature Offers. This shall not constitute an offer by MSN. MSN shall not be responsible or liable for the advertisers' content nor any of the goods or service
 advertised. Prices and item availability subject to change without notice.&lt;br&gt;&lt;br&gt;

          2009 aeun INC | &lt;a href=&quot;http://www.rxappreciating.cn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Unsubscribe&lt;/a&gt; | &lt;a href=&quot;http://www.rxappreciating.cn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;More Newsletters&lt;/a&gt; | &lt;a href=&quot;http://www.rxappreciating.cn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Privacy&lt;/a&gt;&lt;br&gt;&lt;br&gt;
         

                

                         &lt;/td&gt;
                    &lt;/tr&gt;
               &lt;/table&gt;
          &lt;/td&gt;
     &lt;/tr&gt;
&lt;/table&gt;



        &lt;/div&gt;
    &lt;/div&gt;

          &lt;/div&gt;
    
    &lt;/body&gt;
&lt;/html&gt;

&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25975097&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Dear-powerloom-forum%40nitro.isi.edu-52--0FF-on-Pfizer-%21-tp25975097p25975097.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25691440</id>
	<title>Iteration question</title>
	<published>2009-09-30T17:23:39Z</published>
	<updated>2009-09-30T17:23:39Z</updated>
	<author>
		<name>bobcgausa</name>
	</author>
	<content type="html">As a PowerLoom newbie, I started with the logic problem posted at &lt;a href=&quot;http://pages.prodigy.net/spencejk/jan2000.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://pages.prodigy.net/spencejk/jan2000.html&lt;/a&gt;&lt;br&gt;Basically it's a matching problem with people and car colors.
&lt;br&gt;I made no progress at all so reduced problem to 2 people and 2 colors.
&lt;br&gt;(defconcept car (?c) :&amp;lt;=&amp;gt; (member-of ?c (setof G P)))
&lt;br&gt;(defconcept person (?c) :&amp;lt;=&amp;gt; (member-of ?c (setof Plum Green)))
&lt;br&gt;(defrelation drives ((?p person) (?c car)))
&lt;br&gt;(assert (or (drives Plum P) (drives Plum G)))
&lt;br&gt;(assert (or (drives Green P) (drives Green G)))
&lt;br&gt;(assert (not (drives Plum P)))
&lt;br&gt;(retrieve all (?x ?y) &amp;nbsp;(and (member-of ?x (setof Plum Green)) (drives ?x ?y)))
&lt;br&gt;&lt;br&gt;The output is Plum G only?
&lt;br&gt;How can I get PowerLoom to iterate so that the first solution is added as a new fact that enables the second &amp;nbsp;solution and so on?
&lt;br&gt;Thanks
&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Iteration-question-tp25691440p25691440.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-25088511</id>
	<title>PowerLoom Ontosaurus for Tomcat released.</title>
	<published>2009-08-21T15:47:48Z</published>
	<updated>2009-08-21T15:47:48Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">The PowerLoom team is pleased to announce the release of a current &amp;nbsp;
&lt;br&gt;version of the Ontosaurus browser for PowerLoom. &amp;nbsp;This is a Java-based &amp;nbsp;
&lt;br&gt;web server package that will operate with the Apache Tomcat web &amp;nbsp;
&lt;br&gt;server. &amp;nbsp;In addition to the Ontosaurus browser, there is also a &amp;nbsp;
&lt;br&gt;webservice for querying and modifying PowerLoom knowlege bases.
&lt;br&gt;&lt;br&gt;The download is available at
&lt;br&gt;&amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://www.isi.edu/isd/LOOM/PowerLoom/download.html#Ontosaurus&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/isd/LOOM/PowerLoom/download.html#Ontosaurus&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=25088511&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PowerLoom-Ontosaurus-for-Tomcat-released.-tp25088511p25088511.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23628471</id>
	<title>Re: Commercial use</title>
	<published>2009-05-19T20:36:29Z</published>
	<updated>2009-05-19T20:36:29Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">PowerLoom licensing is very liberal where you can pick from three
&lt;br&gt;alternative licensing schemes. &amp;nbsp;One of the available licenses is
&lt;br&gt;Mozilla MPL 1.1 which should satisfy most people who want to use it in
&lt;br&gt;a commercial setting (see top of
&lt;br&gt;&lt;a href=&quot;http://www.isi.edu/isd/LOOM/PowerLoom/download.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/isd/LOOM/PowerLoom/download.html&lt;/a&gt;).
&lt;br&gt;&lt;br&gt;Nothing much has happened on the persistence code, since the funding
&lt;br&gt;we were hoping to get for this disappeared in the general economic
&lt;br&gt;downturn. &amp;nbsp;There are some new funding developments that make me
&lt;br&gt;hopeful that we'll be able to pick this up again fairly soon, but we
&lt;br&gt;won't know until the fat lady sings.
&lt;br&gt;&lt;br&gt;For many situations it might be sufficient to use PowerLoom's RDBMS
&lt;br&gt;backend to get the persistence you need. &amp;nbsp;You often have a large
&lt;br&gt;amount of data that's flat and can be represented in a relatively
&lt;br&gt;small number of tables. &amp;nbsp;In that case, it's easy to offload that
&lt;br&gt;portion onto an RDBMS such as MySQL or Oracle and then query it
&lt;br&gt;relative to an ontology and other more complex but smaller scale
&lt;br&gt;knowledge loaded into PowerLoom from a file. I do that fairly often
&lt;br&gt;myself.
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;Hans Chalupsky, PhD &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USC Information Sciences Institute
&lt;br&gt;Project Leader, Loom KR&amp;R Group &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4676 Admiralty Way
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23628471&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Marina del Rey, CA 90292
&lt;br&gt;(310) 448-8745
&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Rangarajan Krishnamoorthy &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23628471&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;ranga@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; I am thinking of using power-loom in a commercial application. Since the KB
&lt;br&gt;&amp;gt; is likely to be large, it would be desirable to have a persistence
&lt;br&gt;&amp;gt; mechanism. I know you were working on this for sometime. Is it usable yet?
&lt;br&gt;&lt;br&gt;&amp;gt; Are there any license restrictions with respect to commercial deployment?
&lt;br&gt;&lt;br&gt;&amp;gt; I use LispWorks on Windows.
&lt;br&gt;&lt;br&gt;&amp;gt; Regards,
&lt;br&gt;&lt;br&gt;&amp;gt; Rangarajan
&lt;br&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23628471&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23628471&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Commercial-use-tp23613345p23628471.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23613345</id>
	<title>Commercial use</title>
	<published>2009-05-19T03:07:49Z</published>
	<updated>2009-05-19T03:07:49Z</updated>
	<author>
		<name>Rangarajan Krishnamoorthy</name>
	</author>
	<content type="html">&lt;html xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 11 (filtered medium)&quot;&gt;


&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=Section1&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Hi,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;I am thinking of using power-loom in a commercial
application. Since the KB is likely to be large, it would be desirable to have
a persistence mechanism. I know you were working on this for sometime. Is it
usable yet?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Are there any license restrictions with respect to
commercial deployment?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;I use LispWorks on Windows.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Regards,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;Rangarajan&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;
font-family:Arial'&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23613345&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23613345&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Commercial-use-tp23613345p23613345.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23405838</id>
	<title>R.A: Rate your Sexual Health!</title>
	<published>2009-05-06T05:35:22Z</published>
	<updated>2009-05-06T05:35:22Z</updated>
	<author>
		<name>PowerLoom mailing list</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Sleep Well Newsletter&lt;/TITLE&gt;

&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;TABLE style=&quot;BORDER-RIGHT: #d4d0c8 1px solid; BORDER-TOP: #d4d0c8 1px solid; BORDER-LEFT: #d4d0c8 1px solid; BORDER-BOTTOM: #d4d0c8 1px solid&quot; cellSpacing=0 cellPadding=0 width=619 border=0&gt;&lt;TR&gt;&lt;TD align=right bgColor=#f6f6f6 colSpan=2&gt;
&lt;DIV style=&quot;PADDING-RIGHT: 5px; FONT-SIZE: 11px; COLOR: #6a0035; LINE-HEIGHT: 16px; FONT-FAMILY: Arial, Helvetica, sans-serif&quot;&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;
&lt;TD vAlign=top colSpan=2&gt;
&lt;br&gt;
&lt;IMG height=22 alt=&quot;WebMD Newsletter&quot; src=&quot;https://img.webmd.com/sdc/newsletters/newsletter_signup_logo.gif&quot; width=193 border=0&gt;&lt;/A&gt;&lt;br&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD vAlign=top width=600&gt;
&lt;TABLE cellSpacing=0 cellPadding=5 width=&quot;100%&quot; border=0&gt;&lt;TR&gt;&lt;TD vAlign=top&gt;
&lt;!-- MAIN CONTENT CELL --&gt;
&lt;DIV style=&quot;FONT-SIZE: 13px; FONT-FAMILY: Arial, Helvetica, sans-serif&quot;&gt;
&lt;UL style=&quot;MARGIN: 0px 0px 0px 5px&quot;&gt;&lt;/SPAN&gt;&lt;DIV style=&quot;MARGIN: 0px 0px 14px 5px&quot;&gt;
&lt;BR&gt;
&lt;br&gt;
&lt;DIV style=&quot;PADDING-LEFT: 5px; FONT-WEIGHT: 500; FONT-SIZE: 11pt; PADDING-BOTTOM: 1px; COLOR: #FF6600; BORDER-BOTTOM: #FF6600 1px solid&quot;&gt;&lt;/DIV&lt;br&gt;
&lt;b&gt;WebMD's Most Popular Features &amp; Resources&lt;/b&gt;&lt;BR&gt;
&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;About erectile dysfunction (ED)&lt;/A&gt;&lt;/b&gt;&lt;br&gt;
&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt; Pfizer medicines&lt;/a&gt;&lt;/b&gt;&lt;br&gt;
&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Rate your sexual health&lt;/a&gt;&lt;/b&gt;&lt;br&gt;

&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;For Healthcare Providers&lt;/a&gt;&lt;/b&gt;&lt;br&gt;
&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Find a Doctor&lt;/a&gt;&lt;/b&gt;&lt;br&gt;

&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Personal Health Manager&lt;/a&gt;&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Quick Links to More Areas on WebMD&lt;/b&gt;&lt;br&gt;
&lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Home Page&lt;/A&gt;&lt;/b&gt; | &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;News Center&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Health Topics A - Z&lt;/A&gt;&lt;/b&gt; | &lt;b&gt;&lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Message Boards &amp; Blogs&lt;/A&gt;&lt;/b&gt;&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Helpful Tip:&lt;/b&gt; For a quick return, save links of interest to&lt;br&gt;
your list of Favorites (PC users) or to your Buddy List (Mac users).&lt;br&gt;
&lt;br&gt;
&lt;DIV style=&quot;PADDING-LEFT: 5px; FONT-WEIGHT: 500; FONT-SIZE: 11pt; PADDING-BOTTOM: 1px; COLOR: #FF6600; BORDER-BOTTOM: #FF6600 1px solid&quot;&gt;&lt;/DIV&gt;
&lt;br&gt;&lt;b&gt;You have never thought that meds ca make your bedroom life so different !&lt;/b&gt;&lt;br&gt;
&lt;div align=center&gt; &lt;a href=&quot;http://vufsaqeq.cn&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;img src=&quot;http://vufsaqeq.cn/9.gif&quot; width=&quot;500&quot; height=&quot;320&quot; alt=&quot;&quot; border=&quot;0&quot;&gt;&lt;br&gt;&lt;br&gt;

&lt;img src=&quot;http://a1977.g.akamai.net/f/1977/1448/1d/webmd.download.akamai.com/1448/newsletter/daily/orangearrow1.gif&quot;&gt; Click OK&lt;Br&gt;&lt;br&gt;
&lt;DIV style=&quot;PADDING-LEFT: 5px; FONT-WEIGHT: 500; FONT-SIZE: 11pt; PADDING-BOTTOM: 1px; COLOR: #FF6600; BORDER-BOTTOM: #FF6600 1px solid&quot;&gt;&lt;/DIV&gt;&lt;BR&gt;

&lt;b&gt;Other Questions About WebMD Newsletters? &lt;A HREF=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Contact Us&lt;/a&gt;&lt;/b&gt;&lt;br&gt;

&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;DIV style=&quot;MARGIN: 0px 0px 14px 20px&quot;&gt;

&lt;/DIV&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;!-- END MAIN CONTENT CELL --&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/TD&gt;
&lt;TD vAlign=top align=middle width=140&gt;
&lt;BR&gt;&lt;BR&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD vAlign=top colSpan=2&gt;
&lt;!-- BOTTOM CELL --&gt;
&lt;DIV style=&quot;FONT-SIZE: 11px; FONT-FAMILY: Arial, Helvetica, sans-serif; BACKGROUND-COLOR: #ececec; TEXT-ALIGN: center&quot;&gt;&lt;BR&gt;

&lt;A href=&quot;http://vufsaqeq.cn&quot; style=&quot;text-decoration:none;&quot; target=&quot;preview_new_link&quot; rel=&quot;nofollow&quot;&gt;WebMD Privacy Policy&lt;/A&gt;&lt;BR&gt;
WebMD Office of Privacy&lt;BR&gt;
1175 Peachtree Street, Suite 2400, Atlanta, GA 30361&lt;BR&gt;
© 2008 WebMD, LLC. All rights reserved.&lt;BR&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;!-- END BOTTOM CELL --&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;

&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23405838&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/R.A%3A-Rate-your-Sexual-Health%21-tp23405838p23405838.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-23109613</id>
	<title>One of a kind reps</title>
	<published>2009-04-17T22:43:16Z</published>
	<updated>2009-04-17T22:43:16Z</updated>
	<author>
		<name>Shipman Efrain</name>
	</author>
	<content type="html">Loving yourself is the first step in loving life. And what better way to do it, than by getting yourself a fine designer watch?
&lt;br&gt;&lt;a href=&quot;http://www.qayogozap.cn&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.qayogozap.cn&lt;/a&gt;&lt;br&gt;&lt;br&gt;Diam0nd Reps has it all: Rolex, Cartier, Tag Heuer, Breitling, and many more, for a fraction of the price of an original watch. And don't forget: when you order two watches, you get an extra 15 percent discount over our already low prices!
&lt;br&gt;&lt;a href=&quot;http://www.qayogozap.cn&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.qayogozap.cn&lt;/a&gt;&lt;br&gt;&lt;br&gt;Most experts couldn't tell our watches from the real thing, and neither will your friends, so impress them today get started with your watch shopping now!
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=23109613&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/One-of-a-kind-reps-tp23109613p23109613.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22335736</id>
	<title>Re: PowerLoom status</title>
	<published>2009-03-04T09:54:42Z</published>
	<updated>2009-03-04T09:54:42Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">Cameron,
&lt;br&gt;&lt;br&gt;answers in-line:
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Cameron Ross &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22335736&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cross@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; 1) Are there thoughts on how many active projects employ PowerLoom in a
&lt;br&gt;&amp;gt; significant way?
&lt;br&gt;&lt;br&gt;Unfortunately, I don't know. &amp;nbsp;My guess is that it is somewhere &amp;gt; 10
&lt;br&gt;and &amp;lt; 30. &amp;nbsp;All I know are the downloads which are over a 1000 or so
&lt;br&gt;plus occasional message flurries on the forum.
&lt;br&gt;&lt;br&gt;&amp;gt; 2) Are there currently any production-grade systems using PowerLoom?
&lt;br&gt;&lt;br&gt;Most probably not. &amp;nbsp;There are some projects that use it in
&lt;br&gt;client/server environments, but I think they are still in the
&lt;br&gt;demo/experimental stage.
&lt;br&gt;&lt;br&gt;&amp;gt; 3) Is PowerLoom ready for production use?
&lt;br&gt;&lt;br&gt;It depends on what exactly you need (or what you mean by &amp;quot;production
&lt;br&gt;use&amp;quot;). &amp;nbsp;I think if you can engineer the right environment around it,
&lt;br&gt;and if you have good control over what knowledge gets loaded and what
&lt;br&gt;queries will run, you can wind up with a system robust enough for
&lt;br&gt;production use. &amp;nbsp;If it is a very open-ended environment, e.g., where
&lt;br&gt;multiple users load their own KBs and ask their own queries, then
&lt;br&gt;you'll likely run into problems.
&lt;br&gt;&lt;br&gt;&amp;gt; 4) If not, what would be involved in bringing the codebase to such a state?
&lt;br&gt;&lt;br&gt;Again, it depends on what you need. &amp;nbsp;Major to dos are proper
&lt;br&gt;thread-safe multi-threading, completion of large-scale persistence,
&lt;br&gt;better support of standards such as Common Logic and OWL, rule
&lt;br&gt;compilation for better performance, various bugs and idiosyncrasies
&lt;br&gt;with our inference engine, improved/updated user interface, and
&lt;br&gt;testing testing testing.
&lt;br&gt;&lt;br&gt;&amp;gt; 5) Does a next generation follow-on project to PowerLoom make sense? &amp;nbsp;If so,
&lt;br&gt;&amp;gt; is one planned?
&lt;br&gt;&lt;br&gt;There is nothing planned at the moment. &amp;nbsp;The major driver for
&lt;br&gt;PowerLoom extensions are applications such as link discovery,
&lt;br&gt;information integration, probabilistic reasoning. &amp;nbsp;It is always
&lt;br&gt;tempting to start from scratch and do it all over again, cleaning it
&lt;br&gt;all up and extending it into new directions. &amp;nbsp;However, since you
&lt;br&gt;always need so much infrastructure for a full-function KR system,
&lt;br&gt;you'd have to reimplement a lot of stuff and make so many design
&lt;br&gt;decisions again before you get anywhere close to where PowerLoom is
&lt;br&gt;today. &amp;nbsp;So my tendency so far has been to try to extend PowerLoom
&lt;br&gt;incrementally wherever that's needed instead of doing a complete
&lt;br&gt;rewrite. &amp;nbsp;The major other stumbling block is research funding which is
&lt;br&gt;hard to impossible to get today for this kind of work.
&lt;br&gt;&lt;br&gt;&amp;gt; 6) What are the alternatives to using PowerLoom?
&lt;br&gt;&lt;br&gt;CLIPS, Jess, OpenCyc, Pellet, JTP, KM, Algernon, Allegro Graph,
&lt;br&gt;Prolog, Jena, etc., again depending on what you need and what you can
&lt;br&gt;tolerate. &amp;nbsp;I don't think there is a clear winner out there right now,
&lt;br&gt;say comparable to something like Oracle or MySQL in the database world.
&lt;br&gt;&lt;br&gt;Personally, I'd be very interested to move PowerLoom into a more
&lt;br&gt;commercial space, I just don't think there really is a market for it
&lt;br&gt;(yet).
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;Hans Chalupsky, PhD &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; USC Information Sciences Institute
&lt;br&gt;Project Leader, Loom KR&amp;R Group &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4676 Admiralty Way
&lt;br&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22335736&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Marina del Rey, CA 90292
&lt;br&gt;(310) 448-8745
&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22335736&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PowerLoom-status-tp22308682p22335736.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22321622</id>
	<title>Re: Plugging-in custom reasoners and computed predicates</title>
	<published>2009-03-03T17:06:45Z</published>
	<updated>2009-03-03T17:06:45Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Mar 3, 2009, at 5:27 AM, Cameron Ross wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The PowerLoom manual states that &amp;quot;the specialist architecture is &amp;nbsp;
&lt;br&gt;&amp;gt; extensible to allow users to plug-in their own reasoners or computed &amp;nbsp;
&lt;br&gt;&amp;gt; predicates&amp;quot;. &amp;nbsp;Just wondering if there is any documentation on how to &amp;nbsp;
&lt;br&gt;&amp;gt; plug-in custom reasoners or computed predicates?
&lt;br&gt;&lt;br&gt;We never produced any simple method of plug-in reasoners, although &amp;nbsp;
&lt;br&gt;there is some very rudimentary support through the use of strategies, &amp;nbsp;
&lt;br&gt;etc. &amp;nbsp;But that isn't something easy, and we don't have any particular &amp;nbsp;
&lt;br&gt;documentation prepared for that. &amp;nbsp;This would be hard for users to &amp;nbsp;
&lt;br&gt;actually do right now.
&lt;br&gt;&lt;br&gt;Adding computed predicates, on the other hand, can be a fairly &amp;nbsp;
&lt;br&gt;straightforward thing to do. &amp;nbsp;It is certainly well within the &amp;nbsp;
&lt;br&gt;capabilities of most users. &amp;nbsp;There are three methods that can be used &amp;nbsp;
&lt;br&gt;to achieve this.
&lt;br&gt;&lt;br&gt;(1) &amp;nbsp;Write your own specialist or computations in Stella, and use the &amp;nbsp;
&lt;br&gt;standard Stella loading system to load the files and appropriate &amp;nbsp;
&lt;br&gt;definitions.
&lt;br&gt;&lt;br&gt;(2) &amp;nbsp;Write your own specialist function and register them using &amp;nbsp;
&lt;br&gt;register-specialist-function, either directly or through the PLI &amp;nbsp;
&lt;br&gt;interface. &amp;nbsp;There is a short description of these functions in the on- 
&lt;br&gt;line PowerLoom manual, but no examples of use.
&lt;br&gt;&lt;br&gt;(3) &amp;nbsp;Write your own computation function and register it using &amp;nbsp;
&lt;br&gt;register-computation-function. &amp;nbsp;This is present in the latest &amp;nbsp;
&lt;br&gt;versions, but the manual has not been updated to a sufficiently recent &amp;nbsp;
&lt;br&gt;version to show them.
&lt;br&gt;&lt;br&gt;The main mechanism used by PowerLoom is the ability to trigger the &amp;nbsp;
&lt;br&gt;running of specialist code to compute the value of PowerLoom &amp;nbsp;
&lt;br&gt;relations. &amp;nbsp;The specialist functions provide the greatest flexibility, &amp;nbsp;
&lt;br&gt;but require more in-depth understanding of the reasoning architecture &amp;nbsp;
&lt;br&gt;of PowerLoom, since they can do anything they want as long as they &amp;nbsp;
&lt;br&gt;signal appropriately to the rest of the reasoning machinery.
&lt;br&gt;&lt;br&gt;Computation functions are more specialized, but much easier to write. &amp;nbsp; 
&lt;br&gt;They are also much closer to the surface syntax of relations, since &amp;nbsp;
&lt;br&gt;they take in a certain number of Stella objects as arguments and &amp;nbsp;
&lt;br&gt;return a single Stella object as the value. &amp;nbsp;So they can be a lot &amp;nbsp;
&lt;br&gt;easier to write.
&lt;br&gt;(Underneath the hood, there is a computation specialist that &amp;nbsp;
&lt;br&gt;understands how to apply this function to arguments and make use of &amp;nbsp;
&lt;br&gt;the return value, but that ends up being hidden by the computation &amp;nbsp;
&lt;br&gt;specialist.)
&lt;br&gt;&lt;br&gt;We have some examples of (1) and (3), but they aren't written up on- 
&lt;br&gt;line or in the standard release, but I can easily make them available &amp;nbsp;
&lt;br&gt;to you.
&lt;br&gt;&lt;br&gt;If this is something you are contemplating, I can see about doing a &amp;nbsp;
&lt;br&gt;short write-up to go along with the examples in the next few days. &amp;nbsp; 
&lt;br&gt;Let me know.
&lt;br&gt;&lt;br&gt;-Tom.
&lt;br&gt;&lt;br&gt;--
&lt;br&gt;Thomas A. Russ, Ph.D. &amp;nbsp;Senior Research Scientist &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22321622&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tar@...&lt;/a&gt;
&lt;br&gt;USC/Information Sciences Institute &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.isi.edu/~tar&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/~tar&lt;/a&gt;&lt;br&gt;4676 Admiralty Way, Marina del Rey, CA 90292 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(310) 448-8775
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22321622&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Plugging-in-custom-reasoners-and-computed-predicates-tp22308659p22321622.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22308682</id>
	<title>PowerLoom status</title>
	<published>2009-03-03T05:30:59Z</published>
	<updated>2009-03-03T05:30:59Z</updated>
	<author>
		<name>Cameron Ross</name>
	</author>
	<content type="html">Hello,&lt;br&gt;&lt;br&gt;I&amp;#39;m curious as to how active the PowerLoom community is.  Some questions follow:&lt;br&gt;&lt;br&gt;1) Are there thoughts on how many active projects employ PowerLoom in a significant way?  &lt;br&gt;2) Are there currently any production-grade systems using PowerLoom?  &lt;br&gt;
3) Is PowerLoom ready for production use?  &lt;br&gt;4) If not, what would be involved in bringing the codebase to such a state?  &lt;br&gt;5) Does a next generation follow-on project to PowerLoom make sense?  If so, is one planned?&lt;br&gt;
6) What are the alternatives to using PowerLoom?&lt;br&gt;
&lt;br&gt;Thanks much,&lt;br&gt;Cameron.&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22308682&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/PowerLoom-status-tp22308682p22308682.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22308659</id>
	<title>Plugging-in custom reasoners and computed predicates</title>
	<published>2009-03-03T05:27:38Z</published>
	<updated>2009-03-03T05:27:38Z</updated>
	<author>
		<name>Cameron Ross</name>
	</author>
	<content type="html">Hi,&lt;br&gt;&lt;br&gt;The PowerLoom manual states that &amp;quot;the
specialist architecture is extensible to allow users to plug-in their
own reasoners or computed predicates&amp;quot;.  Just wondering if there is any
documentation on how to plug-in custom reasoners or computed
predicates?  &lt;br&gt;
&lt;br clear=&quot;all&quot;&gt;Thanks much,&lt;br&gt;Cameron.&lt;br&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22308659&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Plugging-in-custom-reasoners-and-computed-predicates-tp22308659p22308659.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-22189347</id>
	<title>Re: Pharmacy Message SALE 50% OFF!</title>
	<published>2009-02-24T11:55:04Z</published>
	<updated>2009-02-24T11:55:04Z</updated>
	<author>
		<name>PowerLoom mailing list</name>
	</author>
	<content type="html">Dear &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22189347&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;, 24 Feb 2009 08:55:13 +0100 SALE 59% OFF!
&lt;br&gt;Want to be a perfect lover? Want to boost your sexual power twice?
&lt;br&gt;Discount price store: ID&amp; FqrpbwW
&lt;br&gt;&lt;a href=&quot;http://rbh.watgevim.cn?sp&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://rbh.watgevim.cn?sp&lt;/a&gt;&lt;br&gt;� 2001-2008 &amp;quot;Pfizer Inc&amp;quot;. All rights reserved.
&lt;br&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=22189347&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Pharmacy-Message-SALE-50--OFF%21-tp22189347p22189347.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20984527</id>
	<title>Re: Compile failure on SBCL 1.0.22</title>
	<published>2008-12-12T14:07:01Z</published>
	<updated>2008-12-12T14:07:01Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 12, 2008, at 12:28 PM, Keith James wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; On Friday 12 December 2008 18:03:52 Thomas Russ wrote:
&lt;br&gt;&amp;gt;&amp;gt; You should use the most recent snapshot. &amp;nbsp;A lot of bug fixes have &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; gone
&lt;br&gt;&amp;gt;&amp;gt; in since our last official release. &amp;nbsp;In particular, there were a
&lt;br&gt;&amp;gt;&amp;gt; number of changes to make PowerLoom work with the stricter type
&lt;br&gt;&amp;gt;&amp;gt; inference and enforcement of SBCL and CMUCL.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; The current snapshot compiles for me with SBCL 1.0.12 (I haven't
&lt;br&gt;&amp;gt;&amp;gt; upgraded in a while).
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; CL-USER&amp;gt; (list (lisp-implementation-version) (machine-type))
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; (&amp;quot;1.0.22&amp;quot; &amp;quot;X86&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for the quick reply. I experience the same errors with the &amp;nbsp;
&lt;br&gt;&amp;gt; 3.2.38
&lt;br&gt;&amp;gt; snapshot.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm unable to backup to an older SBCL, so I've set
&lt;br&gt;&amp;gt; *stella-compiler-optimization* to a higher debug level and rebuilt &amp;nbsp;
&lt;br&gt;&amp;gt; so that I
&lt;br&gt;&amp;gt; can have a look around.
&lt;/div&gt;&lt;br&gt;OK. &amp;nbsp;I downloaded the 1.0.22 version of SBCL and ran into the same &amp;nbsp;
&lt;br&gt;problem.
&lt;br&gt;There seems to be a bug in our translator, in that it isn't producing &amp;nbsp;
&lt;br&gt;the correct value.
&lt;br&gt;&lt;br&gt;For a quick workaround, locate the following file and make these &amp;nbsp;
&lt;br&gt;changes:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; native/lisp/stella/primal.lisp
&lt;br&gt;&lt;br&gt;Change
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;(CL:DEFVAR *HASH-BYTE-RANDOM-TABLE* :NULL_VALUE
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...)
&lt;br&gt;&lt;br&gt;&amp;nbsp; to
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;(CL:DEFVAR *HASH-BYTE-RANDOM-TABLE* #()
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; ...)
&lt;br&gt;&lt;br&gt;&lt;br&gt;We'll see about getting a corrected version out soon.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; (Incidentally, I get a clean build with CMUCL 19e.)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Keith
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20984527&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20984527&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compile-failure-on-SBCL-1.0.22-tp20977235p20984527.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20983170</id>
	<title>Re: Compile failure on SBCL 1.0.22</title>
	<published>2008-12-12T12:28:35Z</published>
	<updated>2008-12-12T12:28:35Z</updated>
	<author>
		<name>Keith James</name>
	</author>
	<content type="html">On Friday 12 December 2008 18:03:52 Thomas Russ wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; You should use the most recent snapshot. &amp;nbsp;A lot of bug fixes have gone
&lt;br&gt;&amp;gt; in since our last official release. &amp;nbsp;In particular, there were a
&lt;br&gt;&amp;gt; number of changes to make PowerLoom work with the stricter type
&lt;br&gt;&amp;gt; inference and enforcement of SBCL and CMUCL.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; The current snapshot compiles for me with SBCL 1.0.12 (I haven't
&lt;br&gt;&amp;gt; upgraded in a while).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; CL-USER&amp;gt; (list (lisp-implementation-version) (machine-type))
&lt;br&gt;&amp;gt; &amp;gt; (&amp;quot;1.0.22&amp;quot; &amp;quot;X86&amp;quot;)
&lt;/div&gt;&lt;br&gt;Thanks for the quick reply. I experience the same errors with the 3.2.38 
&lt;br&gt;snapshot.
&lt;br&gt;&lt;br&gt;I'm unable to backup to an older SBCL, so I've set 
&lt;br&gt;*stella-compiler-optimization* to a higher debug level and rebuilt so that I 
&lt;br&gt;can have a look around.
&lt;br&gt;&lt;br&gt;(Incidentally, I get a clean build with CMUCL 19e.)
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Keith
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20983170&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compile-failure-on-SBCL-1.0.22-tp20977235p20983170.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20980671</id>
	<title>Re: Compile failure on SBCL 1.0.22</title>
	<published>2008-12-12T10:03:52Z</published>
	<updated>2008-12-12T10:03:52Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Dec 12, 2008, at 6:54 AM, Keith James wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I'm looking at PowerLoom to provide ontology-based reasoning for my &amp;nbsp;
&lt;br&gt;&amp;gt; Common
&lt;br&gt;&amp;gt; Lisp bioinformatics applications. I'm getting a type error when &amp;nbsp;
&lt;br&gt;&amp;gt; compiling on
&lt;br&gt;&amp;gt; SBCL.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Powerloom 3.2.0
&lt;br&gt;&lt;br&gt;You should use the most recent snapshot. &amp;nbsp;A lot of bug fixes have gone &amp;nbsp;
&lt;br&gt;in since our last official release. &amp;nbsp;In particular, there were a &amp;nbsp;
&lt;br&gt;number of changes to make PowerLoom work with the stricter type &amp;nbsp;
&lt;br&gt;inference and enforcement of SBCL and CMUCL.
&lt;br&gt;&lt;br&gt;The current snapshot compiles for me with SBCL 1.0.12 (I haven't &amp;nbsp;
&lt;br&gt;upgraded in a while).
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; CL-USER&amp;gt; (list (lisp-implementation-version) (machine-type))
&lt;br&gt;&amp;gt; (&amp;quot;1.0.22&amp;quot; &amp;quot;X86&amp;quot;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In primal.lisp
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cannot set SYMBOL-VALUE of STELLA::*HASH-BYTE-RANDOM-TABLE* &amp;nbsp;
&lt;br&gt;&amp;gt; to :NULL_VALUE
&lt;br&gt;&amp;gt; (not of type SIMPLE-VECTOR.)
&lt;br&gt;&amp;gt; &amp;nbsp; [Condition of type SIMPLE-TYPE-ERROR]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Restarts:
&lt;br&gt;&amp;gt; 0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;gt; 1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;gt; 2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt; RUNNING
&lt;br&gt;&amp;gt; {AB670F9}&amp;gt;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Backtrace:
&lt;br&gt;&amp;gt; &amp;nbsp;0: (SB-INT:ABOUT-TO-MODIFY-SYMBOL-VALUE
&lt;br&gt;&amp;gt; STELLA::*HASH-BYTE-RANDOM-TABLE* &amp;quot;set SYMBOL-VALUE of ~S&amp;quot; :NULL_VALUE)
&lt;br&gt;&amp;gt; &amp;nbsp;1: (SET STELLA::*HASH-BYTE-RANDOM-TABLE* :NULL_VALUE)
&lt;br&gt;&amp;gt; &amp;nbsp;2: (SB-IMPL::%DEFVAR ..)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; In literals.lisp
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cannot set SYMBOL-VALUE of STELLA::*CHARACTER-TYPE-TABLE* &amp;nbsp;
&lt;br&gt;&amp;gt; to :NULL_VALUE (not
&lt;br&gt;&amp;gt; of type SIMPLE-VECTOR.)
&lt;br&gt;&amp;gt; &amp;nbsp; [Condition of type SIMPLE-TYPE-ERROR]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Restarts:
&lt;br&gt;&amp;gt; 0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;gt; 1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;gt; 2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt; RUNNING
&lt;br&gt;&amp;gt; {AB670F9}&amp;gt;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Backtrace:
&lt;br&gt;&amp;gt; &amp;nbsp;0: (SB-INT:ABOUT-TO-MODIFY-SYMBOL-VALUE STELLA::*CHARACTER-TYPE- 
&lt;br&gt;&amp;gt; TABLE* &amp;quot;set
&lt;br&gt;&amp;gt; SYMBOL-VALUE of ~S&amp;quot; :NULL_VALUE)
&lt;br&gt;&amp;gt; &amp;nbsp;1: (SET STELLA::*CHARACTER-TYPE-TABLE* :NULL_VALUE)
&lt;br&gt;&amp;gt; &amp;nbsp;2: (SB-IMPL::%DEFVAR ..)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think this is due to these specials being declaimed to be one type &amp;nbsp;
&lt;br&gt;&amp;gt; (vectors)
&lt;br&gt;&amp;gt; when already NULL. I hacked through these manually to allow &amp;nbsp;
&lt;br&gt;&amp;gt; compilation to
&lt;br&gt;&amp;gt; complete with many type warnings (all involving :NULL_VALUE as far &amp;nbsp;
&lt;br&gt;&amp;gt; as I can
&lt;br&gt;&amp;gt; see). Finally I get the following when
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (stella::make-system &amp;quot;powerloom&amp;quot; :common-lisp)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; is called, where the reader seems to choke:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Illegal read syntax: `&amp;quot; +---------------------------- BEGIN LICENSE
&lt;br&gt;&amp;gt; BLOCK ---------------------------+
&lt;br&gt;&amp;gt; | 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;gt; | Version: MPL 1.1/GPL 2.0/LGPL
&lt;br&gt;&amp;gt; 2.1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;gt; | 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;gt; | The contents of this file are subject to the Mozilla Public
&lt;br&gt;&amp;gt; License &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;gt; | Version 1.1 (the \&amp;quot;License\&amp;quot;); you may not use this file except
&lt;br&gt;&amp;gt; in &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;gt; | compliance with the License. You may obtain a copy of the License
&lt;br&gt;&amp;gt; at &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;gt; |
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://www.mozilla.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mozilla.org/&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;gt; MPL/ &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;gt; | 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;gt; | Software distributed under the License is distributed on an \&amp;quot;AS IS 
&lt;br&gt;&amp;gt; \&amp;quot;
&lt;br&gt;&amp;gt; basis, | ..
&lt;br&gt;&amp;gt; &amp;nbsp; [Condition of type STELLA::READ-EXCEPTION]
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Restarts:
&lt;br&gt;&amp;gt; 0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;gt; 1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;gt; 2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; &amp;nbsp;
&lt;br&gt;&amp;gt; RUNNING
&lt;br&gt;&amp;gt; {AB670F9}&amp;gt;)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Backtrace:
&lt;br&gt;&amp;gt; &amp;nbsp;0: (STELLA::TOKENIZE-S-EXPRESSION #&amp;lt;unavailable argument&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; #&amp;lt;unavailable
&lt;br&gt;&amp;gt; argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;1: (STELLA::READ-S-EXPRESSION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;2: ((SB-PCL::FAST-METHOD STELLA::NEXT? (STELLA::S-EXPRESSION- 
&lt;br&gt;&amp;gt; ITERATOR))
&lt;br&gt;&amp;gt; #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable &amp;nbsp;
&lt;br&gt;&amp;gt; argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;3: (STELLA::%LOAD-FILE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;4: (STELLA::GET-SYSTEM-DEFINITION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;5: (STELLA::DEFINE-SYSTEM #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable &amp;nbsp;
&lt;br&gt;&amp;gt; argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;6: (STELLA::EVALUATE-CONS-TREE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;7: (STELLA::%EVALUATE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;8: (STELLA::EVALUATE-COMMAND #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable
&lt;br&gt;&amp;gt; argument&amp;gt;)
&lt;br&gt;&amp;gt; &amp;nbsp;9: (STELLA::%LOAD-FILE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; 10: (STELLA::GET-SYSTEM-DEFINITION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; 11: (STELLA::%MAKE-SYSTEM #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable &amp;nbsp;
&lt;br&gt;&amp;gt; argument&amp;gt;
&lt;br&gt;&amp;gt; #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;gt; 12: (SB-INT:SIMPLE-EVAL-IN-LEXENV
&lt;br&gt;&amp;gt; (STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;gt; 13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN
&lt;br&gt;&amp;gt; (STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP)) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;gt; 14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (UNLESS (STELLA::SYSTEM-LOADED? &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;quot;logic&amp;quot;)
&lt;br&gt;&amp;gt; (STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP)) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;gt; 15: (SB-FASL::LOAD-AS-SOURCE #&amp;lt;SB-SYS:FD-STREAM
&lt;br&gt;&amp;gt; for &amp;quot;file /home/keith/lib/powerloom-3.2.0/load- 
&lt;br&gt;&amp;gt; powerloom.lisp&amp;quot; {AF0B879}&amp;gt; NIL
&lt;br&gt;&amp;gt; NIL)
&lt;br&gt;&amp;gt; 16: ((FLET SB-FASL::LOAD-STREAM) #&amp;lt;SB-SYS:FD-STREAM
&lt;br&gt;&amp;gt; for &amp;quot;file /home/keith/lib/powerloom-3.2.0/load- 
&lt;br&gt;&amp;gt; powerloom.lisp&amp;quot; {AF0B879}&amp;gt;)
&lt;br&gt;&amp;gt; 17: (LOAD &amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot;) 
&lt;br&gt;&amp;gt; [:EXTERNAL]
&lt;br&gt;&amp;gt; 18: (SB-INT:SIMPLE-EVAL-IN-LEXENV
&lt;br&gt;&amp;gt; (LOAD &amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot;) #&amp;lt;NULL- 
&lt;br&gt;&amp;gt; LEXENV&amp;gt;)
&lt;br&gt;&amp;gt; 19: (SWANK::EVAL-REGION &amp;quot;(load
&lt;br&gt;&amp;gt; \&amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp\&amp;quot;)\n&amp;quot;)
&lt;br&gt;&amp;gt; 20: ((LAMBDA ()))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Keith
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20980671&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;/div&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20980671&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compile-failure-on-SBCL-1.0.22-tp20977235p20980671.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20977235</id>
	<title>Compile failure on SBCL 1.0.22</title>
	<published>2008-12-12T06:54:29Z</published>
	<updated>2008-12-12T06:54:29Z</updated>
	<author>
		<name>Keith James</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;I'm looking at PowerLoom to provide ontology-based reasoning for my Common 
&lt;br&gt;Lisp bioinformatics applications. I'm getting a type error when compiling on 
&lt;br&gt;SBCL.
&lt;br&gt;&lt;br&gt;Powerloom 3.2.0
&lt;br&gt;&lt;br&gt;CL-USER&amp;gt; (list (lisp-implementation-version) (machine-type))
&lt;br&gt;(&amp;quot;1.0.22&amp;quot; &amp;quot;X86&amp;quot;)
&lt;br&gt;&lt;br&gt;In primal.lisp
&lt;br&gt;&lt;br&gt;Cannot set SYMBOL-VALUE of STELLA::*HASH-BYTE-RANDOM-TABLE* to :NULL_VALUE 
&lt;br&gt;(not of type SIMPLE-VECTOR.)
&lt;br&gt;&amp;nbsp; &amp;nbsp;[Condition of type SIMPLE-TYPE-ERROR]
&lt;br&gt;&lt;br&gt;Restarts:
&lt;br&gt;&amp;nbsp;0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;nbsp;1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;nbsp;2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; RUNNING 
&lt;br&gt;{AB670F9}&amp;gt;)
&lt;br&gt;&lt;br&gt;Backtrace:
&lt;br&gt;&amp;nbsp; 0: (SB-INT:ABOUT-TO-MODIFY-SYMBOL-VALUE 
&lt;br&gt;STELLA::*HASH-BYTE-RANDOM-TABLE* &amp;quot;set SYMBOL-VALUE of ~S&amp;quot; :NULL_VALUE)
&lt;br&gt;&amp;nbsp; 1: (SET STELLA::*HASH-BYTE-RANDOM-TABLE* :NULL_VALUE)
&lt;br&gt;&amp;nbsp; 2: (SB-IMPL::%DEFVAR ..)
&lt;br&gt;&lt;br&gt;&lt;br&gt;In literals.lisp
&lt;br&gt;&lt;br&gt;Cannot set SYMBOL-VALUE of STELLA::*CHARACTER-TYPE-TABLE* to :NULL_VALUE (not 
&lt;br&gt;of type SIMPLE-VECTOR.)
&lt;br&gt;&amp;nbsp; &amp;nbsp;[Condition of type SIMPLE-TYPE-ERROR]
&lt;br&gt;&lt;br&gt;Restarts:
&lt;br&gt;&amp;nbsp;0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;nbsp;1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;nbsp;2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; RUNNING 
&lt;br&gt;{AB670F9}&amp;gt;)
&lt;br&gt;&lt;br&gt;Backtrace:
&lt;br&gt;&amp;nbsp; 0: (SB-INT:ABOUT-TO-MODIFY-SYMBOL-VALUE STELLA::*CHARACTER-TYPE-TABLE* &amp;quot;set 
&lt;br&gt;SYMBOL-VALUE of ~S&amp;quot; :NULL_VALUE)
&lt;br&gt;&amp;nbsp; 1: (SET STELLA::*CHARACTER-TYPE-TABLE* :NULL_VALUE)
&lt;br&gt;&amp;nbsp; 2: (SB-IMPL::%DEFVAR ..)
&lt;br&gt;&lt;br&gt;&lt;br&gt;I think this is due to these specials being declaimed to be one type (vectors) 
&lt;br&gt;when already NULL. I hacked through these manually to allow compilation to 
&lt;br&gt;complete with many type warnings (all involving :NULL_VALUE as far as I can 
&lt;br&gt;see). Finally I get the following when
&lt;br&gt;&lt;br&gt;(stella::make-system &amp;quot;powerloom&amp;quot; :common-lisp)
&lt;br&gt;&lt;br&gt;is called, where the reader seems to choke:
&lt;br&gt;&lt;br&gt;Illegal read syntax: `&amp;quot; +---------------------------- BEGIN LICENSE 
&lt;br&gt;BLOCK ---------------------------+
&lt;br&gt;&amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp;| Version: MPL 1.1/GPL 2.0/LGPL 
&lt;br&gt;2.1 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp;| The contents of this file are subject to the Mozilla Public 
&lt;br&gt;License &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp;| Version 1.1 (the \&amp;quot;License\&amp;quot;); you may not use this file except 
&lt;br&gt;in &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;nbsp;| compliance with the License. You may obtain a copy of the License 
&lt;br&gt;at &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;nbsp;| 
&lt;br&gt;&lt;a href=&quot;http://www.mozilla.org/MPL/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.mozilla.org/MPL/&lt;/a&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |
&lt;br&gt;&amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|
&lt;br&gt;&amp;nbsp;| Software distributed under the License is distributed on an \&amp;quot;AS IS\&amp;quot; 
&lt;br&gt;basis, | ..
&lt;br&gt;&amp;nbsp; &amp;nbsp;[Condition of type STELLA::READ-EXCEPTION]
&lt;br&gt;&lt;br&gt;Restarts:
&lt;br&gt;&amp;nbsp;0: [RETRY] Retry SLIME REPL evaluation request.
&lt;br&gt;&amp;nbsp;1: [ABORT] Return to SLIME's top level.
&lt;br&gt;&amp;nbsp;2: [TERMINATE-THREAD] Terminate this thread (#&amp;lt;THREAD &amp;quot;repl-thread&amp;quot; RUNNING 
&lt;br&gt;{AB670F9}&amp;gt;)
&lt;br&gt;&lt;br&gt;Backtrace:
&lt;br&gt;&amp;nbsp; 0: (STELLA::TOKENIZE-S-EXPRESSION #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable 
&lt;br&gt;argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 1: (STELLA::READ-S-EXPRESSION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 2: ((SB-PCL::FAST-METHOD STELLA::NEXT? (STELLA::S-EXPRESSION-ITERATOR)) 
&lt;br&gt;#&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 3: (STELLA::%LOAD-FILE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 4: (STELLA::GET-SYSTEM-DEFINITION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 5: (STELLA::DEFINE-SYSTEM #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 6: (STELLA::EVALUATE-CONS-TREE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 7: (STELLA::%EVALUATE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 8: (STELLA::EVALUATE-COMMAND #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable 
&lt;br&gt;argument&amp;gt;)
&lt;br&gt;&amp;nbsp; 9: (STELLA::%LOAD-FILE #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp;10: (STELLA::GET-SYSTEM-DEFINITION #&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp;11: (STELLA::%MAKE-SYSTEM #&amp;lt;unavailable argument&amp;gt; #&amp;lt;unavailable argument&amp;gt; 
&lt;br&gt;#&amp;lt;unavailable argument&amp;gt;)
&lt;br&gt;&amp;nbsp;12: (SB-INT:SIMPLE-EVAL-IN-LEXENV 
&lt;br&gt;(STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;nbsp;13: (SB-INT:SIMPLE-EVAL-IN-LEXENV (PROGN 
&lt;br&gt;(STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP)) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;nbsp;14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (UNLESS (STELLA::SYSTEM-LOADED? &amp;quot;logic&amp;quot;) 
&lt;br&gt;(STELLA::MAKE-SYSTEM &amp;quot;powerloom&amp;quot; :COMMON-LISP)) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;nbsp;15: (SB-FASL::LOAD-AS-SOURCE #&amp;lt;SB-SYS:FD-STREAM 
&lt;br&gt;for &amp;quot;file /home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot; {AF0B879}&amp;gt; NIL 
&lt;br&gt;NIL)
&lt;br&gt;&amp;nbsp;16: ((FLET SB-FASL::LOAD-STREAM) #&amp;lt;SB-SYS:FD-STREAM 
&lt;br&gt;for &amp;quot;file /home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot; {AF0B879}&amp;gt;)
&lt;br&gt;&amp;nbsp;17: (LOAD &amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot;)[:EXTERNAL]
&lt;br&gt;&amp;nbsp;18: (SB-INT:SIMPLE-EVAL-IN-LEXENV 
&lt;br&gt;(LOAD &amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp&amp;quot;) #&amp;lt;NULL-LEXENV&amp;gt;)
&lt;br&gt;&amp;nbsp;19: (SWANK::EVAL-REGION &amp;quot;(load 
&lt;br&gt;\&amp;quot;/home/keith/lib/powerloom-3.2.0/load-powerloom.lisp\&amp;quot;)\n&amp;quot;)
&lt;br&gt;&amp;nbsp;20: ((LAMBDA ()))
&lt;br&gt;&lt;br&gt;-- 
&lt;br&gt;Keith
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20977235&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Compile-failure-on-SBCL-1.0.22-tp20977235p20977235.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20684932</id>
	<title>Re: Download link</title>
	<published>2008-11-25T08:33:17Z</published>
	<updated>2008-11-25T08:33:17Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">There seems to be some strange network problem that crops up at
&lt;br&gt;times. &amp;nbsp;I've run into this also and we tried to address it with the
&lt;br&gt;ISI web server people, but the problem is transient and doesn't seem
&lt;br&gt;to be easily reproducable, so no culprit has been found so far.
&lt;br&gt;I just tried to download from outside ISI and it worked just fine.
&lt;br&gt;&lt;br&gt;So, Cameron's advice is right. &amp;nbsp;You might want to use a download
&lt;br&gt;manager or wget under Linux which allows you to restart where a previous
&lt;br&gt;dowload left off.
&lt;br&gt;&lt;br&gt;Sorry for the inconvenience,
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;PowerLoom home page: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.isi.edu/isd/LOOM/PowerLoom&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/isd/LOOM/PowerLoom&lt;/a&gt;&lt;br&gt;PowerLoom forum: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;PowerLoom request line: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum-admin@...&lt;/a&gt;
&lt;br&gt;KOJAK home page: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.isi.edu/isd/LOOM/kojak&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/isd/LOOM/kojak&lt;/a&gt;&lt;br&gt;STELLA home page: &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.isi.edu/isd/LOOM/Stella&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.isi.edu/isd/LOOM/Stella&lt;/a&gt;&lt;br&gt;--------------------------------------------------------------------------
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Cameron Ross &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cross@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; I've had this same problem several times before. &amp;nbsp;Basically, I just keep
&lt;br&gt;&amp;gt; trying until it works.
&lt;br&gt;&amp;gt; Cameron.
&lt;br&gt;&lt;br&gt;&amp;gt; On Sat, Nov 22, 2008 at 3:18 PM, Christian Blouin &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cblouin@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; The download link isn't working at the moment. The file appears to
&lt;br&gt;&amp;gt;&amp;gt; exist, but the download stalls before downloading, or after 10%.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Christian
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;&amp;gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; -- 
&lt;br&gt;&amp;gt; Cameron Ross, M.Sc.
&lt;br&gt;&amp;gt; Director of Technology
&lt;br&gt;&amp;gt; Symboticware Incorporated
&lt;br&gt;&amp;gt; www.symboticware.com
&lt;br&gt;&amp;gt; (705) 929-1492
&lt;br&gt;&amp;gt; I&amp;#39;ve had this same problem several times before. &amp;nbsp;Basically, I just keep trying until it works.&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;Cameron.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div class=&amp;quot;gmail_quote&amp;quot;&amp;gt;On Sat, Nov 22, 2008 at 3:18 PM, Christian Blouin &amp;lt;span dir=&amp;quot;ltr&amp;quot;&amp;gt;&amp;lt;&amp;lt;a href=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cblouin@...&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cblouin@...&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;gt;&amp;lt;/span&amp;gt; wrote:&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;blockquote class=&amp;quot;gmail_quote&amp;quot; style=&amp;quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&amp;quot;&amp;gt;Hi,&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The download link isn&amp;#39;t working at the moment. The file appears to&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; exist, but the download stalls before downloading, or after 10%.&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; Christian&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; powerloom-forum mailing list&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;a href=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;a href=&amp;quot;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;/blockquote&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br clear=&amp;quot;all&amp;quot;&amp;gt;&amp;lt;br&amp;gt;-- &amp;lt;br&amp;gt;Cameron Ross, M.Sc.&amp;lt;br&amp;gt;Director of Technology&amp;lt;br&amp;gt;Symboticware Incorporated&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;&lt;a href=&quot;http://www.symboticware.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.symboticware.com&lt;/a&gt;&amp;quot;&amp;gt;www.symboticware.com&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;(705) 929-1492&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;/div&amp;gt;
&lt;br&gt;&amp;gt; _______________________________________________
&lt;br&gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;/div&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20684932&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Download-link-tp20640129p20684932.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20660989</id>
	<title>Re: Download link</title>
	<published>2008-11-24T05:35:24Z</published>
	<updated>2008-11-24T05:35:24Z</updated>
	<author>
		<name>Cameron Ross</name>
	</author>
	<content type="html">I&amp;#39;ve had this same problem several times before. &amp;nbsp;Basically, I just keep trying until it works.&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Cameron.&lt;br&gt;&lt;br&gt;&lt;div class=&quot;gmail_quote&quot;&gt;On Sat, Nov 22, 2008 at 3:18 PM, Christian Blouin &lt;span dir=&quot;ltr&quot;&gt;&amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20660989&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;cblouin@...&lt;/a&gt;&amp;gt;&lt;/span&gt; wrote:&lt;br&gt;
&lt;blockquote class=&quot;gmail_quote&quot; style=&quot;margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;&quot;&gt;Hi,&lt;br&gt;
&lt;br&gt;
 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;The download link isn&amp;#39;t working at the moment. The file appears to&lt;br&gt;
exist, but the download stalls before downloading, or after 10%.&lt;br&gt;
&lt;br&gt;
Christian&lt;br&gt;
&lt;br&gt;
_______________________________________________&lt;br&gt;
powerloom-forum mailing list&lt;br&gt;
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20660989&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;
&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;br clear=&quot;all&quot;&gt;&lt;br&gt;-- &lt;br&gt;Cameron Ross, M.Sc.&lt;br&gt;Director of Technology&lt;br&gt;Symboticware Incorporated&lt;br&gt;&lt;a href=&quot;http://www.symboticware.com&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;www.symboticware.com&lt;/a&gt;&lt;br&gt;(705) 929-1492&lt;br&gt;
&lt;/div&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20660989&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Download-link-tp20640129p20660989.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20640129</id>
	<title>Download link</title>
	<published>2008-11-22T12:18:02Z</published>
	<updated>2008-11-22T12:18:02Z</updated>
	<author>
		<name>Christian Blouin</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; The download link isn't working at the moment. The file appears to
&lt;br&gt;exist, but the download stalls before downloading, or after 10%.
&lt;br&gt;&lt;br&gt;Christian
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20640129&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Download-link-tp20640129p20640129.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20349396</id>
	<title>Re: What is new?</title>
	<published>2008-11-05T12:15:49Z</published>
	<updated>2008-11-05T12:15:49Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Nov 5, 2008, at 12:48 AM, Rangarajan Krishnamoorthy wrote:
&lt;br&gt;&lt;br&gt;&amp;gt; Hi,
&lt;br&gt;&amp;gt; I noticed that there is a Powerloom 3.2.36. Where can I find the &amp;nbsp;
&lt;br&gt;&amp;gt; documentation corresponding to this release? In particular, what is &amp;nbsp;
&lt;br&gt;&amp;gt; new/changed in this released compared to 3.2.0?
&lt;br&gt;&lt;br&gt;The major differences are largely performance improvements and bug &amp;nbsp;
&lt;br&gt;fixes.
&lt;br&gt;There are a few other minor changes or additions.
&lt;br&gt;&lt;br&gt;The ChangeLog file in sources/powerloom and sources/stella give some &amp;nbsp;
&lt;br&gt;indication of the changes. &amp;nbsp;These are just derived from our CVS logs, &amp;nbsp;
&lt;br&gt;so they may be a bit cryptic, but they do indicate some of the changes.
&lt;br&gt;&lt;br&gt;&amp;gt; Has the manual been updated?
&lt;br&gt;&lt;br&gt;The most updated manual can be found in
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; sources/logic/doc/manual.html &amp;nbsp;or sources/logic/doc/manual.pdf
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for PowerLoom and
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; sources/stella/doc/manual.html &amp;nbsp;or sources/stella/doc/manual.pdf
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for Stella.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20349396&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/What-is-new--tp20337988p20349396.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20337988</id>
	<title>What is new?</title>
	<published>2008-11-05T00:48:09Z</published>
	<updated>2008-11-05T00:48:09Z</updated>
	<author>
		<name>Rangarajan Krishnamoorthy</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.2180&quot; name=GENERATOR&gt;

&lt;/HEAD&gt;
&lt;BODY bgColor=#ffffff&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Hi,&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;I noticed that there is a Powerloom 3.2.36. Where 
can I find the documentation corresponding to this release? In particular, what 
is new/changed in this released compared to 3.2.0?&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Has the manual been updated?&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Regards,&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;Rangarajan&lt;/FONT&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20337988&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/What-is-new--tp20337988p20337988.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20305592</id>
	<title>Question about range constraint enforcement</title>
	<published>2008-11-03T08:10:46Z</published>
	<updated>2008-11-03T08:10:46Z</updated>
	<author>
		<name>srini_ottawa</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&gt;Here is an excerpt of some code I have&lt;br&gt;&lt;br&gt;(deffunction numeric-constant (?name (?n number)) :closed TRUE)&lt;br&gt;(assert (numeric-constant Max_time_slot 96))&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;;; Time slot is any number between 1 and 96, inclusive&lt;/span&gt;&lt;br&gt;(defconcept Time_slot (?t &lt;span style=&quot;font-weight: bold;&quot;&gt;number)&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;lt;=&amp;gt; (AND (&amp;gt;= ?t 1) (=&amp;lt; ?t Max_time_slot))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :closed TRUE)&lt;br&gt;&lt;br&gt;&amp;nbsp; (deffunction some-function ( (?p PERSON) (?t TIME_SLOT) )&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :-&amp;gt; (?v INTEGER) )&lt;br&gt;&lt;br&gt;* (retrieve&amp;nbsp; (and (= ?ts 7) (some-function joe ?ts ?v)))&lt;br&gt;&lt;br&gt;There is 1 solution so far:&lt;br&gt;&amp;nbsp; #1: ?TS=7,
 ?V=3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt; ;; ok, ?ts has been coerced to type TIME_SLOT&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 127);&quot;&gt;;; Try a value for timeslot that is out of bounds &lt;/span&gt;&lt;br&gt;* (retrieve&amp;nbsp; (and (= ?ts &lt;span style=&quot;font-weight: bold;&quot;&gt;104&lt;/span&gt;) ( some-function joe ?ts ?v))&lt;br&gt;No solutions.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(128, 0, 0);&quot;&gt;--&amp;gt; Did not get a&amp;nbsp; warning for violation of the range of TIME_SLOT&lt;/span&gt;&lt;br style=&quot;color: rgb(128, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(128, 0,
 0);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; Should not be possible to coerce ?ts to TIME_SLOT therefore.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt; Should get error similar to error below&lt;br&gt;&lt;/span&gt;&lt;br&gt;;; Try direct value that is out-of-range&lt;br&gt;* (retrieve&amp;nbsp; (some-function joe &lt;span style=&quot;font-weight: bold;&quot;&gt;104&lt;/span&gt; ?v)))&amp;nbsp;&amp;nbsp; &lt;br&gt;WARNING: Type check violation on argument `104' in proposition&lt;br&gt;&amp;nbsp;&amp;nbsp; (= (SOME-FUNCTION joe 104 104) ?v).&lt;br&gt;&amp;nbsp;&amp;nbsp; Argument must have type
 `TIME_SLOT'.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt; ;; This is a type error, not a range error&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; Warning occurred while parsing the proposition:&lt;br&gt;&amp;nbsp;&amp;nbsp; (KAPPA (?V) (SOME-FUNCTION joe 104&amp;nbsp; ?V))&lt;br&gt;&lt;br&gt;No solutions.&lt;br&gt;&lt;br&gt;&lt;br&gt;Please let me know what I am missing in the definition of TIME_SLOT to make sure its range is respected.&lt;br&gt;I hope I dont have to do the following :-)&lt;br&gt;(assert (Time_slot 0))&lt;br&gt;(assert (Time_slot 1))&lt;br&gt;....&lt;br&gt;(assert (Time_slot 96))&lt;br&gt;&lt;br&gt;I think this will be a common use similar to typedefs in other languages...&lt;br&gt;&lt;br&gt;Thanks&lt;br&gt;Srini&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;br&gt;

      &lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20305592&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-range-constraint-enforcement-tp20305592p20305592.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20273804</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-31T13:40:19Z</published>
	<updated>2008-10-31T13:40:19Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">There is nothing magical about multiple inheritance in PowerLoom. &amp;nbsp;It
&lt;br&gt;just means that certain results can be derived in multiple ways which
&lt;br&gt;is often the case in logic-based systems. &amp;nbsp;There is no requirement for
&lt;br&gt;merging or unification, all that is required is that everything that
&lt;br&gt;can be derived through the various different paths is consistent (so,
&lt;br&gt;if there is a clash it will be reported as an inconsistency). &amp;nbsp;For
&lt;br&gt;example, suppose you defined the cardinality constraint as follows:
&lt;br&gt;&lt;br&gt;STELLA(41): (defconcept person (?p)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;gt; (range-cardinality eye-of ?p 2))
&lt;br&gt;|c|PERSON
&lt;br&gt;STELLA(42): (defrelation eye-of ((?p person) ?eye))
&lt;br&gt;|r|EYE-OF
&lt;br&gt;STELLA(43): (defconcept blue-eyed-person (person))
&lt;br&gt;|c|BLUE-EYED-PERSON
&lt;br&gt;STELLA(44): (defconcept black-eyed-person (person))
&lt;br&gt;|c|BLACK-EYED-PERSON
&lt;br&gt;STELLA(45): (assert (and (blue-eyed-person fred)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(black-eyed-person fred)))
&lt;br&gt;(|P|(BLUE-EYED-PERSON FRED) |P|(BLACK-EYED-PERSON FRED))
&lt;br&gt;&lt;br&gt;STELLA(46): (retrieve all (range-cardinality eye-of fred ?n))
&lt;br&gt;There is 1 solution:
&lt;br&gt;&amp;nbsp; #1: ?N=2
&lt;br&gt;STELLA(47): 
&lt;br&gt;&lt;br&gt;It doesn't matter which way you go up the chain, the result will be
&lt;br&gt;the same. &amp;nbsp;It would have also been the same had you defined the same
&lt;br&gt;cardinality constraint separately on each of blue-eyed-person and
&lt;br&gt;black-eyed-person.
&lt;br&gt;&lt;br&gt;Now, suppose you defined this differently:
&lt;br&gt;&lt;br&gt;STELLA(48): (defconcept person (?p))
&lt;br&gt;|c|PERSON
&lt;br&gt;STELLA(49): (defrelation eye-of ((?p person) ?eye))
&lt;br&gt;|r|EYE-OF
&lt;br&gt;STELLA(50): (defrelation color-of (?x ?color))
&lt;br&gt;|r|COLOR-OF
&lt;br&gt;STELLA(51): (defconcept blue-eyed-person (?p person)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:=&amp;gt; (exists (?x ?y)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(and (eye-of ?p ?x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (eye-of ?p ?y)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (not (= ?x ?y))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color-of ?x blue)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color-of ?y blue))))
&lt;br&gt;|c|BLUE-EYED-PERSON
&lt;br&gt;STELLA(52): (defconcept black-eyed-person (?p person)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:=&amp;gt; (exists (?x ?y)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(and (eye-of ?p ?x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (eye-of ?p ?y)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (not (= ?x ?y))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color-of ?x black)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color-of ?y black))))
&lt;br&gt;|c|BLACK-EYED-PERSON
&lt;br&gt;STELLA(53): (assert (and (blue-eyed-person fred)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(black-eyed-person fred)))
&lt;br&gt;(|P|(BLUE-EYED-PERSON FRED) |P|(BLACK-EYED-PERSON FRED))
&lt;br&gt;&lt;br&gt;;;; Now you are running into the problem Tom pointed out that you are
&lt;br&gt;;;; creating multiple skolem individuals, since it is nowhere stated
&lt;br&gt;;;; that there are at most two:
&lt;br&gt;&lt;br&gt;STELLA(54): (retrieve all (eye-of fred ?e))
&lt;br&gt;There are 4 solutions:
&lt;br&gt;&amp;nbsp; #1: ?E=sk10
&lt;br&gt;&amp;nbsp; #2: ?E=sk11
&lt;br&gt;&amp;nbsp; #3: ?E=sk12
&lt;br&gt;&amp;nbsp; #4: ?E=sk13
&lt;br&gt;&lt;br&gt;However, this also doesn't mean that he has four eyes, since some of
&lt;br&gt;them could be identical. &amp;nbsp;The skolems just assert existence, not
&lt;br&gt;identity. &amp;nbsp;
&lt;br&gt;&lt;br&gt;Btw, counting in the presence of skolems is generally hairy (and
&lt;br&gt;PowerLoom doesn't yet a good job at it), so, if you care about
&lt;br&gt;cardinalities, try to avoid skolems.
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Thomas Russ &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273804&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tar@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; On Oct 30, 2008, at 7:45 AM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; However, to take another example,
&lt;br&gt;&amp;gt;&amp;gt; if you have the following classification
&lt;br&gt;&amp;gt;&amp;gt; Person -- has two eyes
&lt;br&gt;&amp;gt;&amp;gt; Blue-eyed person
&lt;br&gt;&amp;gt;&amp;gt; Black-eyed person
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; Than any object which derives from both blue and black eyed persons &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; should have two eyes (color tbd), not four.
&lt;br&gt;&amp;gt;&amp;gt; I guess this is the unification I was wondering about.
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; I think my question really was, how does Powerloom deal with &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; multiple inheritance
&lt;br&gt;&amp;gt;&amp;gt; where the same attribute is defined in two superclasses
&lt;br&gt;&amp;gt;&amp;gt; -- in the case of clashing attributes(as in the case above where &amp;nbsp;it &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; is not clear where the child object should have two blue eyes, or &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; two brown eyes, but because Person has two eyes, we know that the &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; child will have two eyes - we should be able to unambiguously answer &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; questions relating to the number of eyes, but not their color)
&lt;br&gt;&amp;gt;&amp;gt; -- in the case of non-clashing attributes(as in the engine example).
&lt;/div&gt;&lt;br&gt;&amp;gt; The problem is that with multiple skolem values, there isn't any &amp;nbsp;
&lt;br&gt;&amp;gt; principled way to unify them. &amp;nbsp;So PowerLoom will pretty much just not &amp;nbsp;
&lt;br&gt;&amp;gt; do it. &amp;nbsp;There will be four skolems, but that doesn't mean there are &amp;nbsp;
&lt;br&gt;&amp;gt; four eyes. &amp;nbsp;Although in the case where you have a logically &amp;nbsp;
&lt;br&gt;&amp;gt; inconsistent definition. &amp;nbsp;If you were to try this in, say, OWL 2.0 &amp;nbsp;
&lt;br&gt;&amp;gt; where you can have qualified number restrictions, you should get an &amp;nbsp;
&lt;br&gt;&amp;gt; inconsistent ontology.
&lt;br&gt;&lt;br&gt;&amp;gt; As I noted before, we haven't put much effort into trying to do a lot &amp;nbsp;
&lt;br&gt;&amp;gt; with cardinality reasoning, so PowerLoom wouldn't really notice that. &amp;nbsp; 
&lt;br&gt;&amp;gt; There is also the issue of it not really being that convenient to &amp;nbsp;
&lt;br&gt;&amp;gt; indicate to PowerLoom that two skolems should be distinct, although I &amp;nbsp;
&lt;br&gt;&amp;gt; suppose that something like
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; (exists (?s1 ?s2) (and (not (= ?s1 ?s2)) &amp;nbsp;...))
&lt;br&gt;&lt;br&gt;&amp;gt; should work for that.
&lt;br&gt;&lt;br&gt;&amp;gt; PowerLoom has only the rudiments of a value cardinality reasoning &amp;nbsp;
&lt;br&gt;&amp;gt; system, and the qualified cardinality relations are just stubs with no &amp;nbsp;
&lt;br&gt;&amp;gt; semantics or reasoning attached.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273804&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20273804.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20273326</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-31T13:03:08Z</published>
	<updated>2008-10-31T13:03:08Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">As I said in my previous message, the right way to do this is via
&lt;br&gt;defproposition which will be even better once I fix its shortcomings.
&lt;br&gt;&lt;br&gt;Another standard way of doing this is to use `retract-facts-of' which
&lt;br&gt;will retract all propositions in which `joe' is an argument (the list
&lt;br&gt;returned by `all-facts-of').
&lt;br&gt;&lt;br&gt;You can define a relation `person-assertion' as you suggest below,
&lt;br&gt;e.g.,
&lt;br&gt;&lt;br&gt;(defrelation person-assertion (?name (?p proposition)))
&lt;br&gt;&lt;br&gt;Unfortunately, you'd have to write a little update demon that would
&lt;br&gt;assert or retract the proposition ?p inside whenever person-assertion
&lt;br&gt;gets asserted or retracted (you can't nest another assert the way you
&lt;br&gt;had it).
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks Tom.
&lt;br&gt;&amp;gt; I am not looking to try alternate scenarios, I am trying to ease the maintainability of managing complex objects.
&lt;br&gt;&lt;br&gt;&amp;gt; Lets say I have person joe. Joe has a large number of moving parts: hands, feets, eyes, bowels :-) etc.
&lt;br&gt;&amp;gt; When I retract person joe, I want to automatically retract all these assertions about his hands, feets as well as assertions about their sub-parts
&lt;br&gt;&amp;gt; such as fingers, toes and so on. I dont want to have to retract them one by one (similar to having a destructor method that deletes sub-objects).
&lt;br&gt;&amp;gt; Advantage is that one will never attempt to retract something that wasnt asserted as could happen if there is separate assertion and retraction code.
&lt;br&gt;&lt;br&gt;&amp;gt; Storing the assertion in the PowerLoom interface is not useful, since I cannot then query in KIF to find all the complex assertions. The storage of the assertions &amp;nbsp;is not expressed in KIF itself.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I would like to say something like
&lt;br&gt;&amp;gt; (assert 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;(person-assertion joe-facts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-meta assertion?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(assert 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(and 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (person joe) 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (hands joe 2) &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (legs joe 2)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (exists (?h) (and (hand joe ?h) (nails ?h 5)) &amp;nbsp; &amp;lt;- assertion about nails cant be found by (get-propositions-of joe) or (all-facts-of joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;....
&lt;br&gt;&amp;gt; )))) 
&lt;/div&gt;&lt;br&gt;&amp;gt; and subsequently do
&lt;br&gt;&amp;gt; (retract-from-query &amp;nbsp;(retrieve (person-assertion joe-facts)) -&amp;gt; all assertions about joe , and his hands and feet and their sub-assertions 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; are retracted
&lt;br&gt;&lt;br&gt;&amp;gt; I guess what I am asking is...can the argument of a relation be a logic-object (which is what assert returns)? 
&lt;br&gt;&amp;gt; If yes, then the above should be possible....
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt; Srini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; ________________________________
&lt;br&gt;&amp;gt; From: Thomas Russ &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tar@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cc: Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Sent: Thursday, October 30, 2008 2:40:28 PM
&lt;br&gt;&amp;gt; Subject: Re: [PowerLoom Forum] Question about representing frame information and unification in PL
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; On Oct 30, 2008, at 9:41 AM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; I wrote below
&lt;br&gt;&amp;gt;&amp;gt; Is there any way to tag a set of assertions, so that you can &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; just retract them as a group?
&lt;br&gt;&amp;gt;&amp;gt; 
&lt;br&gt;&amp;gt;&amp;gt; After reading the documentation for assert and destroy, I see that &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; assert returns an object and destroy deletes an object.
&lt;br&gt;&amp;gt;&amp;gt; Is it possible to store the return value of a compound assert, and &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; later pass it to a destroy which will retract all the propositions &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; contained in that assert in one step? I couldnt find any examples of &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; the use of destroy in the documentation or in the demos directory...
&lt;/div&gt;&lt;br&gt;&amp;gt; I don't think you want to use DESTROY. &amp;nbsp;But you could retract the &amp;nbsp;
&lt;br&gt;&amp;gt; resulting proposition.
&lt;br&gt;&lt;br&gt;&amp;gt; The value returned by assert will be either a PROPOSITION object or a &amp;nbsp;
&lt;br&gt;&amp;gt; LIST of PROPOSITIONS. &amp;nbsp;You could iterate through that and call RETRACT- 
&lt;br&gt;&amp;gt; PROPOSITION on each item.
&lt;br&gt;&lt;br&gt;&amp;gt; The easiest way to do this would be to use the PowerLoom interface &amp;nbsp;
&lt;br&gt;&amp;gt; functions to assert a sentence and then save the value for later &amp;nbsp;
&lt;br&gt;&amp;gt; retraction. &amp;nbsp;You would presumably use the S-ASSERT-PROPOSITION and &amp;nbsp;
&lt;br&gt;&amp;gt; RETRACT-PROPOSITION code. &amp;nbsp;From Java this would look like
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;String myModuleName = &amp;quot;PL-USER&amp;quot;;
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;Module myModule = PLI.getModule(myModuleName, null);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;PlIterator props = PLI.sAssertProposition(&amp;quot;(and (c i1) (c i2) (r &amp;nbsp;
&lt;br&gt;&amp;gt; i1 i2))&amp;quot;, myModuleName, null);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;while (props.nextP()) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p = ((Proposition)(props.value));
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;edu.isi.powerloom.PLI.retractProposition(p, myModule, null);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;&amp;gt; Another option would be to use the context mechanism to spawn a new &amp;nbsp;
&lt;br&gt;&amp;gt; reasoning context as a child of your current module and then just &amp;nbsp;
&lt;br&gt;&amp;gt; destroy that context when you no longer need it. &amp;nbsp;This is a more &amp;nbsp;
&lt;br&gt;&amp;gt; global and less selective strategy, but it frees you from having to &amp;nbsp;
&lt;br&gt;&amp;gt; keep track of what it is you need to retract.
&lt;br&gt;&lt;br&gt;&amp;gt; That can be handy if you are trying alternate scenarios. &amp;nbsp;It also has &amp;nbsp;
&lt;br&gt;&amp;gt; the advantage that you can keep multiple such scenarios around in &amp;nbsp;
&lt;br&gt;&amp;gt; parallel and move between them. &amp;nbsp;There is even some query-level &amp;nbsp;
&lt;br&gt;&amp;gt; support (the IST operator) that supports it.
&lt;br&gt;&lt;br&gt;&amp;gt; -Tom.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&amp;quot;font-family:arial,helvetica,sans-serif;font-size:10pt&amp;quot;&amp;gt;&amp;lt;div&amp;gt;Thanks Tom.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I am not looking to try alternate scenarios, I am trying to ease the maintainability of managing complex objects.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Lets say I have person joe. Joe has a large number of moving parts: hands, feets, eyes, bowels :-) etc.&amp;lt;br&amp;gt;When I retract person joe, I want to automatically retract all these assertions about his hands, feets as well as assertions about their sub-parts&amp;lt;br&amp;gt;such as fingers, toes and so on. I dont want to have to retract them one by one (similar to having a destructor method that deletes sub-objects).&amp;lt;br&amp;gt;Advantage is that one will never attempt to retract something that wasnt asserted as could happen if there is separate assertion and retraction code.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Storing the assertion in the PowerLoom interface is not useful, since I cannot then query in KIF to find all
&lt;br&gt;&amp;gt; &amp;nbsp;the complex assertions. The storage of the assertions&amp;nbsp; is not expressed in KIF itself.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I would like to say something like&amp;lt;br&amp;gt;(assert &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp; (person-assertion joe-facts &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-meta assertion?&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (assert &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (and &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (person joe) &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hands joe 2)&amp;nbsp; &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (legs joe 2)&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (exists (?h) (and (hand joe ?h) (nails ?h 5))&amp;nbsp;&amp;nbsp; &amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;- assertion about nails cant be found
&lt;br&gt;&amp;gt; &amp;nbsp;by (get-propositions-of joe) or (all-facts-of joe)&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&amp;lt;br&amp;gt;)))) &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;and subsequently do&amp;lt;br&amp;gt;(retract-from-query&amp;nbsp; (retrieve (person-assertion joe-facts)) -&amp;gt; all assertions about joe , and his hands and feet and their sub-assertions &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; are retracted&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I guess what I am asking is...can the argument of a relation be a logic-object (which is what assert returns)? &amp;lt;br&amp;gt;If
&lt;br&gt;&amp;gt; &amp;nbsp;yes, then the above should be possible....&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 13px;&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Tahoma&amp;quot; size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;hr size=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;From:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Thomas Russ &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tar@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;To:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Cc:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Sent:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Thursday, October 30, 2008 2:40:28 PM&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Subject:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Re: [PowerLoom Forum] Question about representing frame information and unification in PL&amp;lt;br&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; &amp;lt;br&amp;gt;On Oct 30, 2008, at 9:41 AM, Srini Ram wrote:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; I wrote below&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Is there any way to tag a set of assertions, so that you can&amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; just retract them as a group?&amp;lt;br&amp;gt;&amp;gt;&amp;lt;br&amp;gt;&amp;gt; After reading the documentation for assert and destroy, I see that&amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; assert returns an object and destroy deletes an object.&amp;lt;br&amp;gt;&amp;gt; Is it possible to store the return value of a compound assert, and&amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; later pass it to a destroy which will retract all the propositions&amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; contained in that assert in one step? I couldnt find any examples of&amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; the use of destroy in the documentation or in the demos directory...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I don't think you want to use DESTROY.&amp;nbsp; But you could retract the&amp;nbsp; &amp;lt;br&amp;gt;resulting proposition.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The value returned by assert will be either a PROPOSITION object or a&amp;nbsp; &amp;lt;br&amp;gt;LIST of PROPOSITIONS.&amp;nbsp; You could iterate through that and call RETRACT-
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;PROPOSITION on each item.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The easiest way to do this would be to use the PowerLoom interface&amp;nbsp; &amp;lt;br&amp;gt;functions to assert a sentence and then save the value for later&amp;nbsp; &amp;lt;br&amp;gt;retraction.&amp;nbsp; You would presumably use the S-ASSERT-PROPOSITION and&amp;nbsp; &amp;lt;br&amp;gt;RETRACT-PROPOSITION code.&amp;nbsp; From Java this would look like&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;String myModuleName = &amp;quot;PL-USER&amp;quot;;&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Module myModule = PLI.getModule(myModuleName, null);&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;PlIterator props = PLI.sAssertProposition(&amp;quot;(and (c i1) (c i2) (r&amp;nbsp; &amp;lt;br&amp;gt;i1 i2))&amp;quot;, myModuleName, null);&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;...&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;while (props.nextP()) {&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p = ((Proposition)(props.value));&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;edu.isi.powerloom.PLI.retractProposition(p, myModule, null);&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Another option would be to use the context mechanism to spawn a new&amp;nbsp; &amp;lt;br&amp;gt;reasoning context as a child of your current module and then
&lt;br&gt;&amp;gt; &amp;nbsp;just&amp;nbsp; &amp;lt;br&amp;gt;destroy that context when you no longer need it.&amp;nbsp; This is a more&amp;nbsp; &amp;lt;br&amp;gt;global and less selective strategy, but it frees you from having to&amp;nbsp; &amp;lt;br&amp;gt;keep track of what it is you need to retract.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;That can be handy if you are trying alternate scenarios.&amp;nbsp; It also has&amp;nbsp; &amp;lt;br&amp;gt;the advantage that you can keep multiple such scenarios around in&amp;nbsp; &amp;lt;br&amp;gt;parallel and move between them.&amp;nbsp; There is even some query-level&amp;nbsp; &amp;lt;br&amp;gt;support (the IST operator) that supports it.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;-Tom.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273326&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20273326.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20273059</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-31T12:40:45Z</published>
	<updated>2008-10-31T12:40:45Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">What I was hoping would already work for this was the use of
&lt;br&gt;`defproposition' which allows you to give a name to a proposition and
&lt;br&gt;then use the name in its place.
&lt;br&gt;&lt;br&gt;For example:
&lt;br&gt;&lt;br&gt;(defproposition stuff-about-joe
&lt;br&gt;&amp;nbsp; &amp;nbsp;(and (Person Joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Car $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (owns Joe $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color $car Red)))
&lt;br&gt;&lt;br&gt;To retract all of that, you'd simply say
&lt;br&gt;&lt;br&gt;(retract stuff-about-joe)
&lt;br&gt;&lt;br&gt;Unfortunately, that doesn't work yet, I need to see what it takes to
&lt;br&gt;generalize this. &amp;nbsp;However, as usual, you can kludge around it for
&lt;br&gt;now with the following idiom:
&lt;br&gt;&lt;br&gt;STELLA(10): (defproposition things-about-joe
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(person joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;:axioms (and (Car $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (owns Joe $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color $car Red)))
&lt;br&gt;|P|(PERSON JOE)
&lt;br&gt;STELLA(11): (process-definitions)
&lt;br&gt;()
&lt;br&gt;STELLA(12): (all-facts-of joe)
&lt;br&gt;(|P|(PERSON JOE) |P|(OWNS JOE CAR-001))
&lt;br&gt;STELLA(13): (all-facts-of car-001)
&lt;br&gt;(|P|(OWNS JOE CAR-001))
&lt;br&gt;STELLA(14): (defproposition things-about-joe false)
&lt;br&gt;[2008-OCT-31 11:36:32.000 PL] Redefining the proposition named THINGS-ABOUT-JOE
&lt;br&gt;|P|FALSE
&lt;br&gt;STELLA(16): (all-facts-of joe)
&lt;br&gt;()
&lt;br&gt;STELLA(17): (all-facts-of car-001)
&lt;br&gt;()
&lt;br&gt;STELLA(18): 
&lt;br&gt;&lt;br&gt;The redefinition of `things-about-joe' retracts all its associated old
&lt;br&gt;axioms as a side-effect. &amp;nbsp;Not pretty, but usable until we fix this.
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; I wrote below
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Is there any way to tag a set of assertions, so that you can just retract them as a group?
&lt;br&gt;&lt;br&gt;&amp;gt; After reading the documentation for assert and destroy, I see that assert returns an object and destroy deletes an object.
&lt;br&gt;&amp;gt; Is it possible to store the return value of a compound assert, and later pass it to a destroy which will retract all the propositions contained in that assert in one step? I couldnt find any examples of the use of destroy in the documentation or in the demos directory...
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt; Srini
&lt;br&gt;&lt;br&gt;&amp;gt; ________________________________
&lt;br&gt;&amp;gt; From: Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Sent: Thursday, October 30, 2008 10:45:05 AM
&lt;br&gt;&amp;gt; Subject: Re: [PowerLoom Forum] Question about representing frame information and unification in PL
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; Thanks Hans
&lt;br&gt;&lt;br&gt;&amp;gt; The use of the PL automatic instances allows one to create &amp;nbsp;objects and sub-objects. This is useful
&lt;br&gt;&amp;gt; for some degree of colocating of facts relating to the same object. 
&lt;br&gt;&lt;br&gt;&amp;gt; Does the syntactic sugar provided by definstance allow one to say 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; (definstance Joe :person true :owns (definstance $car :car true :color red))
&lt;br&gt;&amp;gt; instead of what you wrote below..
&lt;br&gt;&lt;br&gt;&amp;gt; (assert (and (Person Joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))))
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; The idea behind the specification I wrote above is not just convenience, but also maintanability --- When I remove the fact that joe is a person from the KB, I expect (in this case) the facts about his car, house, body parts etc. to automatically be deleted instead of having to do this manually as would be the case for the example you gave -- if joe perishes in a car crash :-) we have to retract &amp;nbsp;(person joe), (car $car), (owns joe $car) explicitly.
&lt;br&gt;&amp;gt; Is there any way to tag a set of assertions, so that you can just retract them as a group?
&lt;br&gt;&lt;br&gt;&amp;gt; You wrote below:
&lt;br&gt;&lt;br&gt;&amp;gt; With respect to unification, defining `car-engine' as a function was
&lt;br&gt;&amp;gt; the right thing to do, since it automatically ensured that there was
&lt;br&gt;&amp;gt; only one engine per car and all the properties from the separate
&lt;br&gt;&amp;gt; classes were attached to it just like in KM. &amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;gt; However, that is true only for the example I used, since there is only one engine per car
&lt;br&gt;&amp;gt; and a function allows only one return value.
&lt;br&gt;&lt;br&gt;&amp;gt; However, to take another example, 
&lt;br&gt;&amp;gt; if you have the following classification
&lt;br&gt;&amp;gt; Person -- has two eyes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Blue-eyed person
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Black-eyed person
&lt;br&gt;&lt;br&gt;&amp;gt; Than any object which derives from both blue and black eyed persons should have two eyes (color tbd), not four.
&lt;br&gt;&amp;gt; I guess this is the unification I was wondering about. 
&lt;br&gt;&lt;br&gt;&amp;gt; I think my question really was, how does Powerloom deal with multiple inheritance
&lt;br&gt;&amp;gt; where the same attribute is defined in two superclasses
&lt;br&gt;&amp;gt; -- in the case of clashing attributes(as in the case above where &amp;nbsp;it is not clear where the child object should have two blue eyes, or two brown eyes, but because Person has two eyes, we know that the child will have two eyes - we should be able to unambiguously answer questions relating to the number of eyes, but not their color)
&lt;br&gt;&amp;gt; -- in the case of non-clashing attributes(as in the engine example).
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt; Srini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; ________________________________
&lt;br&gt;&amp;gt; From: Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; To: Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Cc: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Sent: Wednesday, October 29, 2008 10:32:19 PM
&lt;br&gt;&amp;gt; Subject: Re: Question about representing frame information and unification in PL
&lt;br&gt;&lt;br&gt;&amp;gt; Srini,
&lt;br&gt;&lt;br&gt;&amp;gt; I would contend that the PL definition
&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Big-Car (?x Car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-size (car-engine ?x)) large))
&lt;br&gt;&lt;br&gt;&amp;gt; is not any more verbose than the KM statement
&lt;br&gt;&lt;br&gt;&amp;gt; (every Big-Car has 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with (size (*Large))))))
&lt;br&gt;&lt;br&gt;&amp;gt; albeit maybe somewhat less readable (depending on your particular
&lt;br&gt;&amp;gt; logic persuasion).
&lt;br&gt;&lt;br&gt;&amp;gt; KM also uses definitions for classes and slots such as &amp;quot;Engine&amp;quot; and
&lt;br&gt;&amp;gt; &amp;quot;size&amp;quot; which you omitted. &amp;nbsp;If you had included those, the two KBs would
&lt;br&gt;&amp;gt; have been rather similar in size. &amp;nbsp;I'm not sure whether you can define
&lt;br&gt;&amp;gt; instances in KM without also defining the classes and slots that you
&lt;br&gt;&amp;gt; reference, in PowerLoom that's not an option.
&lt;br&gt;&lt;br&gt;&amp;gt; However, the KM syntax is interesting in that it allows you to keep
&lt;br&gt;&amp;gt; some variables implicit (somewhat similar to description logics).
&lt;br&gt;&amp;gt; There is no way you can say this without variables in PowerLoom, but
&lt;br&gt;&amp;gt; it wouldn't be too hard to write a little front-end translator to
&lt;br&gt;&amp;gt; recognize expressions of this kind.
&lt;br&gt;&lt;br&gt;&amp;gt; With respect to unification, defining `car-engine' as a function was
&lt;br&gt;&amp;gt; the right thing to do, since it automatically ensured that there was
&lt;br&gt;&amp;gt; only one engine per car and all the properties from the separate
&lt;br&gt;&amp;gt; classes were attached to it just like in KM. &amp;nbsp;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; KM also has a feature called &amp;quot;heuristic unification&amp;quot; that
&lt;br&gt;&amp;gt; automatically equivalences skolems based on certain heuristics (that I
&lt;br&gt;&amp;gt; don't fully understand :-). &amp;nbsp;That addresses an interesting problem
&lt;br&gt;&amp;gt; with logic where you often have to introduce anonymous skolem objects
&lt;br&gt;&amp;gt; and later on you face the problem that they are not automatically
&lt;br&gt;&amp;gt; getting equivalenced with actual instances you know about, since that
&lt;br&gt;&amp;gt; would require additional identity statemtents. &amp;nbsp;Since KM uses a
&lt;br&gt;&amp;gt; heuristic procedure, it is not logically sound and can get things
&lt;br&gt;&amp;gt; wrong in some cases; nevertheless, it tries to address an interesting
&lt;br&gt;&amp;gt; issue.
&lt;/div&gt;&lt;br&gt;&amp;gt; With respect to nested instance definitions, that wouldn't be too hard
&lt;br&gt;&amp;gt; to do. &amp;nbsp;I've actually played around with that in the past somewhat
&lt;br&gt;&amp;gt; inspired by F-Logic (which has its own arcane syntax :-), but never
&lt;br&gt;&amp;gt; had an application where it mattered enough to force the issue.
&lt;br&gt;&lt;br&gt;&amp;gt; However, you don't really need that machinery. &amp;nbsp;Tom already showed you
&lt;br&gt;&amp;gt; how to do it with an exists. &amp;nbsp;You can also use PowerLoom's automatic
&lt;br&gt;&amp;gt; instances. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;&amp;gt; (assert (and (Person Joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))))
&lt;br&gt;&lt;br&gt;&amp;gt; The $ sign acts like a Lisp gensym call and will create a new
&lt;br&gt;&amp;gt; identifier with the symbol name as a prefix that you then can
&lt;br&gt;&amp;gt; reference within the same expression. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;&amp;gt; STELLA(7): (assert (and (Person Joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))
&lt;br&gt;&amp;gt; (|P|(PERSON JOE) |P|(CAR CAR-000) |P|(OWNS JOE CAR-000) |P|(COLOR CAR-000 RED))
&lt;br&gt;&lt;br&gt;&amp;gt; STELLA(8): (assert (and (Person Sue)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Sue $car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))
&lt;br&gt;&amp;gt; (|P|(PERSON SUE) |P|(CAR CAR-001) |P|(OWNS SUE CAR-001) |P|(COLOR CAR-001 RED))
&lt;br&gt;&amp;gt; STELLA(9): 
&lt;br&gt;&lt;br&gt;&amp;gt; Note that the second time around we created a new instance different
&lt;br&gt;&amp;gt; from Joe's car. &amp;nbsp;This is useful so you don't have to think of new
&lt;br&gt;&amp;gt; instance names all the time. &amp;nbsp;Moreover, it creates real non-skolem
&lt;br&gt;&amp;gt; instances, therefore, PowerLoom would be able to infer from the above
&lt;br&gt;&amp;gt; that Joe's car and Sue's car are not the same (using the unique names
&lt;br&gt;&amp;gt; assumption). &amp;nbsp;With the exists formulation, that would not be possible
&lt;br&gt;&amp;gt; without explicitly asserting that they are not the same.
&lt;br&gt;&lt;br&gt;&amp;gt; In general, it is a valid enterprise to come up with more concise and
&lt;br&gt;&amp;gt; intuitive languages for KR. &amp;nbsp;KM is one such attempt, and there are
&lt;br&gt;&amp;gt; others. &amp;nbsp;For us, however, that probably won't be a priority for a
&lt;br&gt;&amp;gt; while, since moving more towards a standard such as Common Logic and
&lt;br&gt;&amp;gt; better supporting some of the Semantic Web languages seems to be more
&lt;br&gt;&amp;gt; important at the moment.
&lt;br&gt;&lt;br&gt;&amp;gt; Hans
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; I found the following example in the documentation for the Knowledge Machine from UOfTexas...
&lt;br&gt;&amp;gt;&amp;gt; ;;; &amp;quot;Every big car has a large engine.&amp;quot;
&lt;br&gt;KM&amp;gt; (every Big-Car has 
&lt;br&gt;&amp;gt;&amp;gt; (parts ((a Engine with 
&lt;br&gt;&amp;gt;&amp;gt; (size (*Large))))))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; ;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;
&lt;br&gt;KM&amp;gt; (every Powerful-Car has &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;gt;&amp;gt; (parts ((a Engine with 
&lt;br&gt;&amp;gt;&amp;gt; (power (*Lots))))))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Question 1: How would we we represent above in Powerloom
&lt;br&gt;&amp;gt;&amp;gt; Here is my shot at it
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (defconcept Car)
&lt;br&gt;&amp;gt;&amp;gt; (defconcept Size (?x)
&lt;br&gt;&amp;gt;&amp;gt; :axioms ( and
&lt;br&gt;&amp;gt;&amp;gt; (Size large)
&lt;br&gt;&amp;gt;&amp;gt; (Size small)
&lt;br&gt;&amp;gt;&amp;gt; (Size medium)
&lt;br&gt;&amp;gt;&amp;gt; (closed Size)))
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt;&amp;gt; (defconcept Power (?x)
&lt;br&gt;&amp;gt;&amp;gt; :axioms ( and
&lt;br&gt;&amp;gt;&amp;gt; (Power lots)
&lt;br&gt;&amp;gt;&amp;gt; (Power little)
&lt;br&gt;&amp;gt;&amp;gt; (Power medium)
&lt;br&gt;&amp;gt;&amp;gt; (closed Power)))
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (defconcept Car-Part)
&lt;br&gt;&amp;gt;&amp;gt; (defconcept Engine (?x Car-Part))
&lt;br&gt;&amp;gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))
&lt;br&gt;&amp;gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))
&lt;br&gt;&amp;gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))
&lt;br&gt;&amp;gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size or a power, but not both
&lt;br&gt;&amp;gt;&amp;gt; ;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then
&lt;br&gt;&amp;gt;&amp;gt; ;; use the meta-relation to say that engine has size as well as power relations, tire has size but not
&lt;br&gt;&amp;gt;&amp;gt; ;; power etc.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (defconcept Big-Car (?x Car)
&lt;br&gt;&amp;gt;&amp;gt; :=&amp;gt; &amp;nbsp;(= (part-size (car-engine ?x)) large))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (defconcept Powerful-Car (?x Car)
&lt;br&gt;&amp;gt;&amp;gt; :=&amp;gt; &amp;nbsp;(= (part-power (car-engine ?x)) lots))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; ;; The KM example continues as follows
&lt;br&gt;&amp;gt;&amp;gt; ;;; &amp;quot;Suburbans are both big and powerful cars.&amp;quot;
&lt;br&gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; I defined this in PL as :
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; ;; KM then shows its unification powers
&lt;br&gt;&amp;gt;&amp;gt; ;;; &amp;quot;What are the parts of a Suburban?&amp;quot;
&lt;br&gt;KM&amp;gt; (the parts of (a Suburban))
&lt;br&gt;&amp;gt;&amp;gt; (COMMENT: (_Engine7 &amp;&amp; _Engine8) unified to be _Engine7)
&lt;br&gt;&amp;gt;&amp;gt; (_Engine7)
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or is the behavior slightly different
&lt;br&gt;&amp;gt;&amp;gt; The output from PL code above is:
&lt;br&gt;&lt;br&gt;&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))
&lt;br&gt;&amp;gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt;&amp;gt; #1: ?X=|SK|(CAR-ENGINE T1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Seems to work ok...there is only one engine not two
&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))
&lt;br&gt;&amp;gt;&amp;gt; There is 1 solution: 
&lt;br&gt;&amp;gt;&amp;gt; #1: ?SZ=LARGE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; and that engine has the correct
&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))
&lt;br&gt;&amp;gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt;&amp;gt; #1: ?SZ=LOTS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; properties
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; KM has some other frame features that are useful to make the code clearer /concise
&lt;br&gt;&amp;gt;&amp;gt; 1. Embedded frames
&lt;br&gt;&amp;gt;&amp;gt; ;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;
&lt;br&gt;KM&amp;gt; (*Joe has 
&lt;br&gt;&amp;gt;&amp;gt; (instance-of (Person))
&lt;br&gt;&amp;gt;&amp;gt; (owns ((a Car with 
&lt;br&gt;&amp;gt;&amp;gt; (color (*Red))))))
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt;&amp;gt; Srini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&amp;quot;font-family:arial,helvetica,sans-serif;font-size:10pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I found the following example in the documentation for the &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Knowledge Machine from UOfTexas..&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;;;; &amp;quot;Every big car has a large engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Big-Car has &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (parts ((a Engine with &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Powerful-Car has&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (parts ((a Engine with
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 1:&amp;lt;/span&amp;gt; How would we we represent above in Powerloom&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;nbsp; Here is my shot at it&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 80px;&amp;quot;&amp;gt;(&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;defconcept Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Size (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt;&amp;gt; 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size large)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size small)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (closed Size)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt;&amp;gt; 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Power (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power lots)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power little)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span
&lt;br&gt;&amp;gt;&amp;gt; style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (closed Power)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Car-Part)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Engine (?x Car-Part))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt;&amp;gt; 0);&amp;quot;&amp;gt;(deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; the above is not quite correct...some parts may have only a size or a power, but not both&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; use the meta-relation to say that engine has size as well as power relations, tire has size but not&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; power etc.&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span
&lt;br&gt;&amp;gt;&amp;gt; style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Powerful-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127); font-weight: bold;&amp;quot;&amp;gt;It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; The KM example continues as follows&amp;lt;br&amp;gt;;;; &amp;quot;Suburbans are both big and powerful
&lt;br&gt;&amp;gt;&amp;gt; cars.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I defined this in PL as :&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; KM then shows its unification powers&amp;lt;br&amp;gt;;;; &amp;quot;What are the parts of a Suburban?&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;(COMMENT: (_Engine7 &amp;amp;&amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 2&amp;lt;/span&amp;gt;: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;The output from PL code above is:&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (=
&lt;br&gt;&amp;gt; &amp;nbsp;?x
&lt;br&gt;&amp;gt;&amp;gt; (Car-Engine t1)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; Seems to work ok...there is only one engine not two&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution: &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1:
&lt;br&gt;&amp;gt;&amp;gt; ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;LARGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; ;; and that engine has the correct&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1: ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt;&amp;gt; 0);&amp;quot;&amp;gt;LOTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;1. Embedded frames&amp;lt;br&amp;gt;;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (*Joe has
&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (instance-of (Person))&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (owns ((a Car with &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;
&lt;/div&gt;&lt;br&gt;&amp;gt;&amp;gt; &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;_______________________________________________
&lt;br&gt;&amp;gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&amp;quot;font-family:arial,helvetica,sans-serif;font-size:10pt&amp;quot;&amp;gt;&amp;lt;div&amp;gt;I wrote below&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Is there any way to tag a set of assertions, so that you can just retract them as a group?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;After reading the documentation for assert and destroy, I see that assert returns an object and destroy deletes an object.&amp;lt;br&amp;gt;Is it possible to store the return value of a compound assert, and later pass it to a destroy which will retract all the propositions contained in that assert in one step? I couldnt find any examples of the use of destroy in the documentation or in the demos directory...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;font-family:
&lt;br&gt;&amp;gt; &amp;nbsp;times new roman,new york,times,serif; font-size: 12pt;&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Tahoma&amp;quot; size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;hr size=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;From:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;To:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Cc:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Sent:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Thursday, October 30, 2008 10:45:05 AM&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Subject:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Re: [PowerLoom Forum] Question about representing frame information and unification in PL&amp;lt;br&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;Thanks Hans&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The use of the PL automatic instances allows one to create&amp;nbsp; objects and sub-objects. This is useful&amp;lt;br&amp;gt;for some degree of colocating of facts relating to the same object. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Does the syntactic sugar provided by definstance allow one to say
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (definstance Joe :person true :owns (definstance $car :car true :color red))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;instead of what you wrote below..&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;(&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;assert (and (Person Joe)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns
&lt;br&gt;&amp;gt; &amp;nbsp;Joe $car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;The idea behind the specification I wrote above is not just convenience, but &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;also maintanability &amp;lt;/span&amp;gt;--- When I remove the fact that joe is a person from the KB, I expect (in this case) the facts about his car, house, body parts etc. to automatically be deleted instead of having to do this manually as would be the case for the example you gave -- if joe perishes in a car crash :-) we have to retract&amp;nbsp; (person joe), (car $car), (owns joe $car) explicitly.&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Is there any way to tag a set of assertions, so that you can just retract them as a group?&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(127, 0, 63);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;You wrote below:&amp;lt;br&amp;gt;&amp;lt;div
&lt;br&gt;&amp;gt; &amp;nbsp;style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;With respect to unification, defining `car-engine' as a function was&amp;lt;br&amp;gt;the right thing to do, since it automatically ensured that there was&amp;lt;br&amp;gt;only one engine per car and all the properties from the separate&amp;lt;br&amp;gt;classes were attached to it just like in KM.&amp;nbsp; &amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;However, that is true only for the example I used, since there is only one engine per car&amp;lt;br&amp;gt;and a function allows only one return value.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;However, to take another example, &amp;lt;br&amp;gt;if you have the following classification&amp;lt;br&amp;gt;Person -- has two eyes&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blue-eyed person&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Black-eyed person&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Than any object which derives from both blue and black eyed persons should have two eyes (color tbd), not four.&amp;lt;br&amp;gt;I guess this is the unification I was wondering about. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I think my question really was, how does Powerloom deal with multiple inheritance&amp;lt;br&amp;gt;where the same attribute is defined in two superclasses&amp;lt;br&amp;gt;-- in
&lt;br&gt;&amp;gt; &amp;nbsp;the case of clashing attributes(as in the case above where&amp;nbsp; it is not clear where the child object should have two blue eyes, or two brown eyes, but because Person has two eyes, we know that the child will have two eyes - we should be able to unambiguously answer questions relating to the number of eyes, but not their color)&amp;lt;br&amp;gt;-- in the case of non-clashing attributes(as in the engine example).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;font-family: arial,helvetica,sans-serif; font-size: 13px;&amp;quot;&amp;gt;&amp;lt;font face=&amp;quot;Tahoma&amp;quot; size=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;hr size=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;From:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;To:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=13&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Cc:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=14&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Sent:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;Wednesday, October 29, 2008 10:32:19 PM&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Subject:&amp;lt;/span&amp;gt;&amp;lt;/b&amp;gt; Re: Question about representing frame information and unification in PL&amp;lt;br&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&amp;gt; Srini,&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;I would contend that the PL definition&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp;:=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;is not any more verbose than the KM statement&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;(every Big-Car has &amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;albeit maybe somewhat less readable (depending on your particular&amp;lt;br&amp;gt;logic persuasion).&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;KM also uses definitions for classes and slots such as &amp;quot;Engine&amp;quot; and&amp;lt;br&amp;gt;&amp;quot;size&amp;quot; which you omitted.&amp;nbsp; If you had included those, the two KBs would&amp;lt;br&amp;gt;have been rather similar in size.&amp;nbsp; I'm not sure whether you can define&amp;lt;br&amp;gt;instances in KM without also defining the classes and slots that you&amp;lt;br&amp;gt;reference, in PowerLoom that's not an option.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;However, the KM syntax is interesting in that it allows you to keep&amp;lt;br&amp;gt;some variables implicit (somewhat similar to description logics).&amp;lt;br&amp;gt;There is no way you can say this without variables in PowerLoom,
&lt;br&gt;&amp;gt; &amp;nbsp;but&amp;lt;br&amp;gt;it wouldn't be too hard to write a little front-end translator to&amp;lt;br&amp;gt;recognize expressions of this kind.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;With respect to unification, defining `car-engine' as a function was&amp;lt;br&amp;gt;the right thing to do, since it automatically ensured that there was&amp;lt;br&amp;gt;only one engine per car and all the properties from the separate&amp;lt;br&amp;gt;classes were attached to it just like in KM.&amp;nbsp; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;KM also has a feature called &amp;quot;heuristic unification&amp;quot; that&amp;lt;br&amp;gt;automatically equivalences skolems based on certain heuristics (that I&amp;lt;br&amp;gt;don't fully understand :-).&amp;nbsp; That addresses an interesting problem&amp;lt;br&amp;gt;with logic where you often have to introduce anonymous skolem objects&amp;lt;br&amp;gt;and later on you face the problem that they are not automatically&amp;lt;br&amp;gt;getting equivalenced with actual instances you know about, since that&amp;lt;br&amp;gt;would require additional identity statemtents.&amp;nbsp; Since KM uses a&amp;lt;br&amp;gt;heuristic procedure, it is not logically sound and can get things&amp;lt;br&amp;gt;wrong in
&lt;br&gt;&amp;gt; &amp;nbsp;some cases; nevertheless, it tries to address an interesting&amp;lt;br&amp;gt;issue.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;With respect to nested instance definitions, that wouldn't be too hard&amp;lt;br&amp;gt;to do.&amp;nbsp; I've actually played around with that in the past somewhat&amp;lt;br&amp;gt;inspired by F-Logic (which has its own arcane syntax :-), but never&amp;lt;br&amp;gt;had an application where it mattered enough to force the issue.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;However, you don't really need that machinery.&amp;nbsp; Tom already showed you&amp;lt;br&amp;gt;how to do it with an exists.&amp;nbsp; You can also use PowerLoom's automatic&amp;lt;br&amp;gt;instances.&amp;nbsp; For example:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;(assert (and (Person Joe)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;The $ sign acts like a Lisp gensym call and will create a new&amp;lt;br&amp;gt;identifier with the symbol name as a prefix that you then can&amp;lt;br&amp;gt;reference within the same expression.&amp;nbsp; For
&lt;br&gt;&amp;gt; &amp;nbsp;example:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;STELLA(7): (assert (and (Person Joe)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))&amp;lt;br&amp;gt;(|P|(PERSON JOE) |P|(CAR CAR-000) |P|(OWNS JOE CAR-000) |P|(COLOR CAR-000 RED))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;STELLA(8): (assert (and (Person Sue)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Sue $car)&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))&amp;lt;br&amp;gt;(|P|(PERSON SUE) |P|(CAR CAR-001) |P|(OWNS SUE CAR-001) |P|(COLOR CAR-001 RED))&amp;lt;br&amp;gt;STELLA(9): &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Note that the second time around we created a new instance different&amp;lt;br&amp;gt;from Joe's car.&amp;nbsp; This is useful so you don't have to think of new&amp;lt;br&amp;gt;instance names all the time.&amp;nbsp; Moreover, it creates real non-skolem&amp;lt;br&amp;gt;instances, therefore, PowerLoom would be able to infer from the above&amp;lt;br&amp;gt;that Joe's car and
&lt;br&gt;&amp;gt; &amp;nbsp;Sue's car are not the same (using the unique names&amp;lt;br&amp;gt;assumption).&amp;nbsp; With the exists formulation, that would not be possible&amp;lt;br&amp;gt;without explicitly asserting that they are not the same.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;In general, it is a valid enterprise to come up with more concise and&amp;lt;br&amp;gt;intuitive languages for KR.&amp;nbsp; KM is one such attempt, and there are&amp;lt;br&amp;gt;others.&amp;nbsp; For us, however, that probably won't be a priority for a&amp;lt;br&amp;gt;while, since moving more towards a standard such as Common Logic and&amp;lt;br&amp;gt;better supporting some of the Semantic Web languages seems to be more&amp;lt;br&amp;gt;important at the moment.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Hans&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&amp;lt;a rel=&amp;quot;nofollow&amp;quot; ymailto=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=15&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;quot; target=&amp;quot;_blank&amp;quot; href=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=16&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=17&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;gt; writes:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; I found the following example in the documentation for the Knowledge Machine from UOfTexas...&amp;lt;br&amp;gt;&amp;gt; ;;; &amp;quot;Every big car has a large
&lt;br&gt;&amp;gt; &amp;nbsp;engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Big-Car has
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; ;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Powerful-Car has&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; Question 1: How would we we represent above in Powerloom&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;Here is my shot at it&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; (defconcept Car)&amp;lt;br&amp;gt;&amp;gt; (defconcept Size (?x)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;:axioms ( and&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Size large)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Size small)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Size medium)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(closed
&lt;br&gt;&amp;gt; &amp;nbsp;Size)))&amp;lt;br&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt;br&amp;gt;&amp;gt; (defconcept Power (?x)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;:axioms ( and&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Power lots)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Power little)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Power medium)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(closed Power)))&amp;lt;br&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; (defconcept Car-Part)&amp;lt;br&amp;gt;&amp;gt; (defconcept Engine (?x Car-Part))&amp;lt;br&amp;gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))&amp;lt;br&amp;gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))&amp;lt;br&amp;gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size or a power, but not both&amp;lt;br&amp;gt;&amp;gt; ;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;br&amp;gt;&amp;gt; ;; use the meta-relation to say that engine has size as
&lt;br&gt;&amp;gt; &amp;nbsp;well as power relations, tire has size but not&amp;lt;br&amp;gt;&amp;gt; ;; power etc.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; (defconcept Big-Car (?x Car)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; (defconcept Powerful-Car (?x Car)&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; ;; The KM example continues as follows&amp;lt;br&amp;gt;&amp;gt; ;;; &amp;quot;Suburbans are both big and powerful cars.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; I defined this in PL as :&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; ;; KM then shows its unification powers&amp;lt;br&amp;gt;&amp;gt; ;;; &amp;quot;What are the parts of a Suburban?&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;&amp;gt; (COMMENT: (_Engine7 &amp;amp;&amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;nbsp;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;br&amp;gt;&amp;gt; The output from PL code above is:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))&amp;lt;br&amp;gt;&amp;gt; There is 1 solution:&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;#1: ?X=|SK|(CAR-ENGINE T1)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; Seems to work ok...there is only one engine not two&amp;lt;br&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;br&amp;gt;&amp;gt; There is 1 solution: &amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;#1: ?SZ=LARGE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; and that engine has the correct&amp;lt;br&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;br&amp;gt;&amp;gt; There is 1
&lt;br&gt;&amp;gt; &amp;nbsp;solution:&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;#1: ?SZ=LOTS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;&amp;gt; 1. Embedded frames&amp;lt;br&amp;gt;&amp;gt; ;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (*Joe has &amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(instance-of (Person))&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns ((a Car with &amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that
&lt;br&gt;&amp;gt; &amp;nbsp;makes this possible.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt; Thanks&amp;lt;br&amp;gt;&amp;gt; Srini&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&amp;quot;font-family:arial,helvetica,sans-serif;font-size:10pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I found the following example in the documentation for the &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Knowledge Machine from UOfTexas..&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;;;; &amp;quot;Every big car has a large engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Big-Car has &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Powerful-Car has&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 1:&amp;lt;/span&amp;gt; How would we we represent above in
&lt;br&gt;&amp;gt; &amp;nbsp;Powerloom&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;amp;nbsp; Here is my shot at it&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 80px;&amp;quot;&amp;gt;(&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;defconcept Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Size (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size large)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128,
&lt;br&gt;&amp;gt; &amp;nbsp;0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size small)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Size)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0,&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Power (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power lots)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power
&lt;br&gt;&amp;gt; &amp;nbsp;little)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Power)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Car-Part)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Engine (?x Car-Part))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction car-engine ((?x Car)) :-&amp;amp;gt; (?y Engine))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; 0);&amp;quot;&amp;gt;(deffunction part-size ((?x Car-Part)) :-&amp;amp;gt; (?y Size))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction part-power ((?x Car-Part)) :-&amp;amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; the above is not quite correct...some parts may have
&lt;br&gt;&amp;gt; &amp;nbsp;only a size or a power, but not both&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; use the meta-relation to say that engine has size as well as power relations, tire has size but not&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; power etc.&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;
&lt;br&gt;&amp;gt; &amp;nbsp;:=&amp;amp;gt;&amp;amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Powerful-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; :=&amp;amp;gt;&amp;amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127); font-weight: bold;&amp;quot;&amp;gt;It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; The KM example continues as follows&amp;lt;br&amp;gt;;;; &amp;quot;Suburbans are both big and powerful&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; cars.&amp;quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (Suburban has (superclasses (Big-Car
&lt;br&gt;&amp;gt; &amp;nbsp;Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I defined this in PL as :&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; KM then shows its unification powers&amp;lt;br&amp;gt;;;; &amp;quot;What are the parts of a Suburban?&amp;quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;(COMMENT: (_Engine7 &amp;amp;amp;&amp;amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 2&amp;lt;/span&amp;gt;: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;The output from PL code above
&lt;br&gt;&amp;gt; &amp;nbsp;is:&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?x&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; (Car-Engine t1)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span
&lt;br&gt;&amp;gt; &amp;nbsp;style=&amp;quot;font-weight: bold; color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; Seems to work ok...there is only one engine not two&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution: &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; #1:&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;LARGE&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; ;; and that engine has the correct&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;amp;nbsp; #1: ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; 0);&amp;quot;&amp;gt;LOTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;;
&lt;br&gt;&amp;gt; &amp;nbsp;properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;1. Embedded frames&amp;lt;br&amp;gt;;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (*Joe has&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (instance-of (Person))&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (owns ((a Car with
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;_______________________________________________&amp;lt;br&amp;gt;&amp;gt; powerloom-forum mailing list&amp;lt;br&amp;gt;&amp;gt; &amp;lt;a
&lt;br&gt;&amp;gt; &amp;nbsp;rel=&amp;quot;nofollow&amp;quot; ymailto=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=18&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;quot; target=&amp;quot;_blank&amp;quot; href=&amp;quot;mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=19&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=20&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;gt; &amp;lt;a rel=&amp;quot;nofollow&amp;quot; target=&amp;quot;_blank&amp;quot; href=&amp;quot;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&amp;quot;&amp;gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;
&lt;/div&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;
&lt;br&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;
&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20273059&amp;i=21&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20273059.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20266382</id>
	<title>(pas de sujet)</title>
	<published>2008-10-31T06:48:32Z</published>
	<updated>2008-10-31T06:48:32Z</updated>
	<author>
		<name>Pcm_Free</name>
	</author>
	<content type="html">hello
&lt;br&gt;please stop too send me the mais
&lt;br&gt;best regret
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20266382&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/%28pas-de-sujet%29-tp20266382p20266382.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20254009</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T12:38:21Z</published>
	<updated>2008-10-30T12:38:21Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 30, 2008, at 12:02 PM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Thanks Tom.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I am not looking to try alternate scenarios, I am trying to ease the &amp;nbsp;
&lt;br&gt;&amp;gt; maintainability of managing complex objects.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Lets say I have person joe. Joe has a large number of moving parts: &amp;nbsp;
&lt;br&gt;&amp;gt; hands, feets, eyes, bowels :-) etc.
&lt;br&gt;&amp;gt; When I retract person joe, I want to automatically retract all these &amp;nbsp;
&lt;br&gt;&amp;gt; assertions about his hands, feets as well as assertions about their &amp;nbsp;
&lt;br&gt;&amp;gt; sub-parts
&lt;br&gt;&amp;gt; such as fingers, toes and so on. I dont want to have to retract them &amp;nbsp;
&lt;br&gt;&amp;gt; one by one (similar to having a destructor method that deletes sub- 
&lt;br&gt;&amp;gt; objects).
&lt;br&gt;&amp;gt; Advantage is that one will never attempt to retract something that &amp;nbsp;
&lt;br&gt;&amp;gt; wasnt asserted as could happen if there is separate assertion and &amp;nbsp;
&lt;br&gt;&amp;gt; retraction code.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Storing the assertion in the PowerLoom interface is not useful, &amp;nbsp;
&lt;br&gt;&amp;gt; since I cannot then query in KIF to find all the complex assertions. &amp;nbsp;
&lt;br&gt;&amp;gt; The storage of the assertions &amp;nbsp;is not expressed in KIF itself.
&lt;/div&gt;&lt;br&gt;So what you want to have is some interactive way of doing this? &amp;nbsp; 
&lt;br&gt;Instead of using a programming interface?
&lt;br&gt;&lt;br&gt;Well, I did just remember that you are using the Lisp version of &amp;nbsp;
&lt;br&gt;PowerLoom, so you can use Lisp to come to your rescue for this &amp;nbsp;
&lt;br&gt;particular case. &amp;nbsp;I had actually done my initial investigation using &amp;nbsp;
&lt;br&gt;Lisp and then translated some code to Java.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I would like to say something like
&lt;br&gt;&amp;gt; (assert
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;(person-assertion joe-facts &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;-meta assertion?
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(assert
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(and
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (person joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (hands joe 2)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (legs joe 2)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (exists (?h) (and (hand joe ?h) (nails ?h 5)) &amp;nbsp; &amp;lt;- &amp;nbsp;
&lt;br&gt;&amp;gt; assertion about nails cant be found by (get-propositions-of joe) or &amp;nbsp;
&lt;br&gt;&amp;gt; (all-facts-of joe)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;....
&lt;br&gt;&amp;gt; ))))
&lt;/div&gt;&lt;br&gt;You can just save the results of an ASSERT statement in a lisp &amp;nbsp;
&lt;br&gt;variable and then iterate over the contents.
&lt;br&gt;&lt;br&gt;STELLA&amp;gt; (setq joes-facts
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (assert (and (c Joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(r Joe Jim)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(exists (?h) (and (r Joe ?h) (r ?h something-else))))))
&lt;br&gt;&lt;br&gt;(|P|(C JOE) |P|(R JOE JIM) |P|(R JOE sk53) |P|(R sk53 SOMETHING-ELSE))
&lt;br&gt;STELLA&amp;gt; (retrieve all (r ?x ?y))
&lt;br&gt;There are 5 solutions:
&lt;br&gt;&amp;nbsp; &amp;nbsp;#1: ?X=sk53, ?Y=SOMETHING-ELSE
&lt;br&gt;&amp;nbsp; &amp;nbsp;#2: ?X=JOE, ?Y=sk53
&lt;br&gt;&amp;nbsp; &amp;nbsp;#3: ?X=JOE, ?Y=JIM
&lt;br&gt;&amp;nbsp; &amp;nbsp;#4: ?X=JOHN, ?Y=MIKE
&lt;br&gt;&amp;nbsp; &amp;nbsp;#5: ?X=JOHN, ?Y=BILL
&lt;br&gt;STELLA&amp;gt; (cl:dolist (p joes-facts)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (cl:print p)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (pli:retract-proposition p null null))
&lt;br&gt;|P|(C JOE)
&lt;br&gt;|P|(R JOE JIM)
&lt;br&gt;|P|(R JOE sk53)
&lt;br&gt;|P|(R sk53 SOMETHING-ELSE)
&lt;br&gt;COMMON-LISP:NIL
&lt;br&gt;STELLA&amp;gt; (retrieve all (r ?x ?y))
&lt;br&gt;There are 2 solutions:
&lt;br&gt;&amp;nbsp; &amp;nbsp;#1: ?X=JOHN, ?Y=MIKE
&lt;br&gt;&amp;nbsp; &amp;nbsp;#2: ?X=JOHN, ?Y=BILL
&lt;br&gt;STELLA&amp;gt;
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; and subsequently do
&lt;br&gt;&amp;gt; (retract-from-query &amp;nbsp;(retrieve (person-assertion joe-facts)) -&amp;gt; all &amp;nbsp;
&lt;br&gt;&amp;gt; assertions about joe , and his hands and feet and their sub-assertions
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; are 
&lt;br&gt;&amp;gt; &amp;nbsp;retracted
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I guess what I am asking is...can the argument of a relation be a &amp;nbsp;
&lt;br&gt;&amp;gt; logic-object (which is what assert returns)?
&lt;br&gt;&amp;gt; If yes, then the above should be possible....
&lt;/div&gt;&lt;br&gt;Well, that is an interesting suggestion for some meta-relations. &amp;nbsp;We &amp;nbsp;
&lt;br&gt;don't really have that supported right now. &amp;nbsp;The real problem is that &amp;nbsp;
&lt;br&gt;ASSERT is a command rather than an operator in the logic language &amp;nbsp;
&lt;br&gt;itself, so you can't really use it inside of logical sentences. &amp;nbsp;So &amp;nbsp;
&lt;br&gt;there isn't any way of getting the value to assert for person- 
&lt;br&gt;assertion into the assertion.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20254009&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20254009.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20253466</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T12:02:47Z</published>
	<updated>2008-10-30T12:02:47Z</updated>
	<author>
		<name>srini_ottawa</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&gt;&lt;div&gt;Thanks Tom.&lt;br&gt;&lt;br&gt;I am not looking to try alternate scenarios, I am trying to ease the maintainability of managing complex objects.&lt;br&gt;&lt;br&gt;Lets say I have person joe. Joe has a large number of moving parts: hands, feets, eyes, bowels :-) etc.&lt;br&gt;When I retract person joe, I want to automatically retract all these assertions about his hands, feets as well as assertions about their sub-parts&lt;br&gt;such as fingers, toes and so on. I dont want to have to retract them one by one (similar to having a destructor method that deletes sub-objects).&lt;br&gt;Advantage is that one will never attempt to retract something that wasnt asserted as could happen if there is separate assertion and retraction code.&lt;br&gt;&lt;br&gt;Storing the assertion in the PowerLoom interface is not useful, since I cannot then query in KIF to find all
 the complex assertions. The storage of the assertions&amp;nbsp; is not expressed in KIF itself.&lt;br&gt;&lt;br&gt;I would like to say something like&lt;br&gt;(assert &lt;br&gt;&amp;nbsp;&amp;nbsp; (person-assertion joe-facts &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;-meta assertion?&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; (assert &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (and &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (person joe) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hands joe 2)&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (legs joe 2)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (exists (?h) (and (hand joe ?h) (nails ?h 5))&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: rgb(128, 0, 0);&quot;&gt;&amp;lt;- assertion about nails cant be found
 by (get-propositions-of joe) or (all-facts-of joe)&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ....&lt;br&gt;)))) &lt;br&gt;&lt;br&gt;and subsequently do&lt;br&gt;(retract-from-query&amp;nbsp; (retrieve (person-assertion joe-facts)) -&amp;gt; all assertions about joe , and his hands and feet and their sub-assertions &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; are retracted&lt;br&gt;&lt;br&gt;I guess what I am asking is...can the argument of a relation be a logic-object (which is what assert returns)? &lt;br&gt;If
 yes, then the above should be possible....&lt;br&gt;&lt;br&gt;Thanks&lt;br&gt;Srini&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&quot;&gt;&lt;br&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 13px;&quot;&gt;&lt;font face=&quot;Tahoma&quot; size=&quot;2&quot;&gt;&lt;hr size=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;From:&lt;/span&gt;&lt;/b&gt; Thomas Russ &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253466&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;tar@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;To:&lt;/span&gt;&lt;/b&gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253466&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cc:&lt;/span&gt;&lt;/b&gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253466&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253466&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sent:&lt;/span&gt;&lt;/b&gt; Thursday, October 30, 2008 2:40:28 PM&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Subject:&lt;/span&gt;&lt;/b&gt; Re: [PowerLoom Forum] Question about representing frame information and unification in PL&lt;br&gt;&lt;/font&gt;&lt;br&gt;
&lt;br&gt;On Oct 30, 2008, at 9:41 AM, Srini Ram wrote:&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I wrote below&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp;  Is there any way to tag a set of assertions, so that you can&amp;nbsp; &lt;br&gt;&amp;gt; just retract them as a group?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; After reading the documentation for assert and destroy, I see that&amp;nbsp; &lt;br&gt;&amp;gt; assert returns an object and destroy deletes an object.&lt;br&gt;&amp;gt; Is it possible to store the return value of a compound assert, and&amp;nbsp; &lt;br&gt;&amp;gt; later pass it to a destroy which will retract all the propositions&amp;nbsp; &lt;br&gt;&amp;gt; contained in that assert in one step? I couldnt find any examples of&amp;nbsp; &lt;br&gt;&amp;gt; the use of destroy in the documentation or in the demos directory...&lt;/div&gt;&lt;br&gt;I don't think you want to use DESTROY.&amp;nbsp; But you could retract the&amp;nbsp; &lt;br&gt;resulting proposition.&lt;br&gt;&lt;br&gt;The value returned by assert will be either a PROPOSITION object or a&amp;nbsp; &lt;br&gt;LIST of PROPOSITIONS.&amp;nbsp; You could iterate through that and call RETRACT-
 &lt;br&gt;PROPOSITION on each item.&lt;br&gt;&lt;br&gt;The easiest way to do this would be to use the PowerLoom interface&amp;nbsp; &lt;br&gt;functions to assert a sentence and then save the value for later&amp;nbsp; &lt;br&gt;retraction.&amp;nbsp; You would presumably use the S-ASSERT-PROPOSITION and&amp;nbsp; &lt;br&gt;RETRACT-PROPOSITION code.&amp;nbsp; From Java this would look like&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;  String myModuleName = &quot;PL-USER&quot;;&lt;br&gt;&amp;nbsp; &amp;nbsp;  Module myModule = PLI.getModule(myModuleName, null);&lt;br&gt;&amp;nbsp; &amp;nbsp;  PlIterator props = PLI.sAssertProposition(&quot;(and (c i1) (c i2) (r&amp;nbsp; &lt;br&gt;i1 i2))&quot;, myModuleName, null);&lt;br&gt;&amp;nbsp; &amp;nbsp;  ...&lt;br&gt;&amp;nbsp; &amp;nbsp;  while (props.nextP()) {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  p = ((Proposition)(props.value));&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  edu.isi.powerloom.PLI.retractProposition(p, myModule, null);&lt;br&gt;&amp;nbsp; &amp;nbsp;  }&lt;br&gt;&lt;br&gt;Another option would be to use the context mechanism to spawn a new&amp;nbsp; &lt;br&gt;reasoning context as a child of your current module and then
 just&amp;nbsp; &lt;br&gt;destroy that context when you no longer need it.&amp;nbsp; This is a more&amp;nbsp; &lt;br&gt;global and less selective strategy, but it frees you from having to&amp;nbsp; &lt;br&gt;keep track of what it is you need to retract.&lt;br&gt;&lt;br&gt;That can be handy if you are trying alternate scenarios.&amp;nbsp; It also has&amp;nbsp; &lt;br&gt;the advantage that you can keep multiple such scenarios around in&amp;nbsp; &lt;br&gt;parallel and move between them.&amp;nbsp; There is even some query-level&amp;nbsp; &lt;br&gt;support (the IST operator) that supports it.&lt;br&gt;&lt;br&gt;-Tom.&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

      &lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253466&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20253466.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20253200</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T11:48:40Z</published>
	<updated>2008-10-30T11:48:40Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 30, 2008, at 7:45 AM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; However, to take another example,
&lt;br&gt;&amp;gt; if you have the following classification
&lt;br&gt;&amp;gt; Person -- has two eyes
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Blue-eyed person
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Black-eyed person
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Than any object which derives from both blue and black eyed persons &amp;nbsp;
&lt;br&gt;&amp;gt; should have two eyes (color tbd), not four.
&lt;br&gt;&amp;gt; I guess this is the unification I was wondering about.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I think my question really was, how does Powerloom deal with &amp;nbsp;
&lt;br&gt;&amp;gt; multiple inheritance
&lt;br&gt;&amp;gt; where the same attribute is defined in two superclasses
&lt;br&gt;&amp;gt; -- in the case of clashing attributes(as in the case above where &amp;nbsp;it &amp;nbsp;
&lt;br&gt;&amp;gt; is not clear where the child object should have two blue eyes, or &amp;nbsp;
&lt;br&gt;&amp;gt; two brown eyes, but because Person has two eyes, we know that the &amp;nbsp;
&lt;br&gt;&amp;gt; child will have two eyes - we should be able to unambiguously answer &amp;nbsp;
&lt;br&gt;&amp;gt; questions relating to the number of eyes, but not their color)
&lt;br&gt;&amp;gt; -- in the case of non-clashing attributes(as in the engine example).
&lt;/div&gt;&lt;br&gt;The problem is that with multiple skolem values, there isn't any &amp;nbsp;
&lt;br&gt;principled way to unify them. &amp;nbsp;So PowerLoom will pretty much just not &amp;nbsp;
&lt;br&gt;do it. &amp;nbsp;There will be four skolems, but that doesn't mean there are &amp;nbsp;
&lt;br&gt;four eyes. &amp;nbsp;Although in the case where you have a logically &amp;nbsp;
&lt;br&gt;inconsistent definition. &amp;nbsp;If you were to try this in, say, OWL 2.0 &amp;nbsp;
&lt;br&gt;where you can have qualified number restrictions, you should get an &amp;nbsp;
&lt;br&gt;inconsistent ontology.
&lt;br&gt;&lt;br&gt;As I noted before, we haven't put much effort into trying to do a lot &amp;nbsp;
&lt;br&gt;with cardinality reasoning, so PowerLoom wouldn't really notice that. &amp;nbsp; 
&lt;br&gt;There is also the issue of it not really being that convenient to &amp;nbsp;
&lt;br&gt;indicate to PowerLoom that two skolems should be distinct, although I &amp;nbsp;
&lt;br&gt;suppose that something like
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (exists (?s1 ?s2) (and (not (= ?s1 ?s2)) &amp;nbsp;...))
&lt;br&gt;&lt;br&gt;should work for that.
&lt;br&gt;&lt;br&gt;PowerLoom has only the rudiments of a value cardinality reasoning &amp;nbsp;
&lt;br&gt;system, and the qualified cardinality relations are just stubs with no &amp;nbsp;
&lt;br&gt;semantics or reasoning attached.
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253200&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20253200.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20253015</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T11:40:28Z</published>
	<updated>2008-10-30T11:40:28Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 30, 2008, at 9:41 AM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I wrote below
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; Is there any way to tag a set of assertions, so that you can &amp;nbsp;
&lt;br&gt;&amp;gt; just retract them as a group?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; After reading the documentation for assert and destroy, I see that &amp;nbsp;
&lt;br&gt;&amp;gt; assert returns an object and destroy deletes an object.
&lt;br&gt;&amp;gt; Is it possible to store the return value of a compound assert, and &amp;nbsp;
&lt;br&gt;&amp;gt; later pass it to a destroy which will retract all the propositions &amp;nbsp;
&lt;br&gt;&amp;gt; contained in that assert in one step? I couldnt find any examples of &amp;nbsp;
&lt;br&gt;&amp;gt; the use of destroy in the documentation or in the demos directory...
&lt;/div&gt;&lt;br&gt;I don't think you want to use DESTROY. &amp;nbsp;But you could retract the &amp;nbsp;
&lt;br&gt;resulting proposition.
&lt;br&gt;&lt;br&gt;The value returned by assert will be either a PROPOSITION object or a &amp;nbsp;
&lt;br&gt;LIST of PROPOSITIONS. &amp;nbsp;You could iterate through that and call RETRACT- 
&lt;br&gt;PROPOSITION on each item.
&lt;br&gt;&lt;br&gt;The easiest way to do this would be to use the PowerLoom interface &amp;nbsp;
&lt;br&gt;functions to assert a sentence and then save the value for later &amp;nbsp;
&lt;br&gt;retraction. &amp;nbsp;You would presumably use the S-ASSERT-PROPOSITION and &amp;nbsp;
&lt;br&gt;RETRACT-PROPOSITION code. &amp;nbsp;From Java this would look like
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;String myModuleName = &amp;quot;PL-USER&amp;quot;;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Module myModule = PLI.getModule(myModuleName, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;PlIterator props = PLI.sAssertProposition(&amp;quot;(and (c i1) (c i2) (r &amp;nbsp;
&lt;br&gt;i1 i2))&amp;quot;, myModuleName, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;...
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;while (props.nextP()) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;p = ((Proposition)(props.value));
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;edu.isi.powerloom.PLI.retractProposition(p, myModule, null);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;Another option would be to use the context mechanism to spawn a new &amp;nbsp;
&lt;br&gt;reasoning context as a child of your current module and then just &amp;nbsp;
&lt;br&gt;destroy that context when you no longer need it. &amp;nbsp;This is a more &amp;nbsp;
&lt;br&gt;global and less selective strategy, but it frees you from having to &amp;nbsp;
&lt;br&gt;keep track of what it is you need to retract.
&lt;br&gt;&lt;br&gt;That can be handy if you are trying alternate scenarios. &amp;nbsp;It also has &amp;nbsp;
&lt;br&gt;the advantage that you can keep multiple such scenarios around in &amp;nbsp;
&lt;br&gt;parallel and move between them. &amp;nbsp;There is even some query-level &amp;nbsp;
&lt;br&gt;support (the IST operator) that supports it.
&lt;br&gt;&lt;br&gt;-Tom.
&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20253015&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20253015.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20250922</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T09:41:46Z</published>
	<updated>2008-10-30T09:41:46Z</updated>
	<author>
		<name>srini_ottawa</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&gt;&lt;div&gt;I wrote below&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;text-decoration: underline;&quot;&gt;Is there any way to tag a set of assertions, so that you can just retract them as a group?&lt;br&gt;&lt;br&gt;&lt;/span&gt;After reading the documentation for assert and destroy, I see that assert returns an object and destroy deletes an object.&lt;br&gt;Is it possible to store the return value of a compound assert, and later pass it to a destroy which will retract all the propositions contained in that assert in one step? I couldnt find any examples of the use of destroy in the documentation or in the demos directory...&lt;br&gt;&lt;br&gt;Thanks&lt;br&gt;Srini&lt;br&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&quot;&gt;&lt;br&gt;&lt;div style=&quot;font-family:
 times new roman,new york,times,serif; font-size: 12pt;&quot;&gt;&lt;font face=&quot;Tahoma&quot; size=&quot;2&quot;&gt;&lt;hr size=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;From:&lt;/span&gt;&lt;/b&gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;To:&lt;/span&gt;&lt;/b&gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cc:&lt;/span&gt;&lt;/b&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sent:&lt;/span&gt;&lt;/b&gt; Thursday, October 30, 2008 10:45:05 AM&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Subject:&lt;/span&gt;&lt;/b&gt; Re: [PowerLoom Forum] Question about representing frame information and unification in PL&lt;br&gt;&lt;/font&gt;&lt;br&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&quot;&gt;&lt;div&gt;Thanks Hans&lt;br&gt;&lt;br&gt;The use of the PL automatic instances allows one to create&amp;nbsp; objects and sub-objects. This is useful&lt;br&gt;for some degree of colocating of facts relating to the same object. &lt;br&gt;&lt;br&gt;Does the syntactic sugar provided by definstance allow one to say
 &lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (definstance Joe :person true :owns (definstance $car :car true :color red))&lt;/span&gt;&lt;br&gt;instead of what you wrote below..&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;(&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;assert (and (Person Joe)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns
 Joe $car)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))))&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;The idea behind the specification I wrote above is not just convenience, but &lt;span style=&quot;text-decoration: underline;&quot;&gt;also maintanability &lt;/span&gt;--- When I remove the fact that joe is a person from the KB, I expect (in this case) the facts about his car, house, body parts etc. to automatically be deleted instead of having to do this manually as would be the case for the example you gave -- if joe perishes in a car crash :-) we have to retract&amp;nbsp; (person joe), (car $car), (owns joe $car) explicitly.&lt;br&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Is there any way to tag a set of assertions, so that you can just retract them as a group?&lt;/span&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;/span&gt;&lt;br&gt;You wrote below:&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;With respect to unification, defining `car-engine' as a function was&lt;br&gt;the right thing to do, since it automatically ensured that there was&lt;br&gt;only one engine per car and all the properties from the separate&lt;br&gt;classes were attached to it just like in KM.&amp;nbsp; &lt;br&gt;&lt;/div&gt;&lt;br&gt;However, that is true only for the example I used, since there is only one engine per car&lt;br&gt;and a function allows only one return value.&lt;br&gt;&lt;br&gt;However, to take another example, &lt;br&gt;if you have the following classification&lt;br&gt;Person -- has two eyes&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blue-eyed person&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Black-eyed person&lt;br&gt;&lt;br&gt;Than any object which derives from both blue and black eyed persons should have two eyes (color tbd), not four.&lt;br&gt;I guess this is the unification I was wondering about. &lt;br&gt;&lt;br&gt;I think my question really was, how does Powerloom deal with multiple inheritance&lt;br&gt;where the same attribute is defined in two superclasses&lt;br&gt;-- in
 the case of clashing attributes(as in the case above where&amp;nbsp; it is not clear where the child object should have two blue eyes, or two brown eyes, but because Person has two eyes, we know that the child will have two eyes - we should be able to unambiguously answer questions relating to the number of eyes, but not their color)&lt;br&gt;-- in the case of non-clashing attributes(as in the engine example).&lt;br&gt;&lt;br&gt;Thanks&lt;br&gt;Srini&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&quot;&gt;&lt;br&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 13px;&quot;&gt;&lt;font face=&quot;Tahoma&quot; size=&quot;2&quot;&gt;&lt;hr size=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;From:&lt;/span&gt;&lt;/b&gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;To:&lt;/span&gt;&lt;/b&gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cc:&lt;/span&gt;&lt;/b&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sent:&lt;/span&gt;&lt;/b&gt;
 Wednesday, October 29, 2008 10:32:19 PM&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Subject:&lt;/span&gt;&lt;/b&gt; Re: Question about representing frame information and unification in PL&lt;br&gt;&lt;/font&gt;&lt;br&gt;
Srini,&lt;br&gt;&lt;br&gt;I would contend that the PL definition&lt;br&gt;&lt;br&gt;(defconcept Big-Car (?x Car)&lt;br&gt;&amp;nbsp;  :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&lt;br&gt;&lt;br&gt;is not any more verbose than the KM statement&lt;br&gt;&lt;br&gt;(every Big-Car has &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  (parts ((a Engine with (size (*Large))))))&lt;br&gt;&lt;br&gt;albeit maybe somewhat less readable (depending on your particular&lt;br&gt;logic persuasion).&lt;br&gt;&lt;br&gt;KM also uses definitions for classes and slots such as &quot;Engine&quot; and&lt;br&gt;&quot;size&quot; which you omitted.&amp;nbsp; If you had included those, the two KBs would&lt;br&gt;have been rather similar in size.&amp;nbsp; I'm not sure whether you can define&lt;br&gt;instances in KM without also defining the classes and slots that you&lt;br&gt;reference, in PowerLoom that's not an option.&lt;br&gt;&lt;br&gt;However, the KM syntax is interesting in that it allows you to keep&lt;br&gt;some variables implicit (somewhat similar to description logics).&lt;br&gt;There is no way you can say this without variables in PowerLoom,
 but&lt;br&gt;it wouldn't be too hard to write a little front-end translator to&lt;br&gt;recognize expressions of this kind.&lt;br&gt;&lt;br&gt;With respect to unification, defining `car-engine' as a function was&lt;br&gt;the right thing to do, since it automatically ensured that there was&lt;br&gt;only one engine per car and all the properties from the separate&lt;br&gt;classes were attached to it just like in KM.&amp;nbsp; &lt;br&gt;&lt;br&gt;KM also has a feature called &quot;heuristic unification&quot; that&lt;br&gt;automatically equivalences skolems based on certain heuristics (that I&lt;br&gt;don't fully understand :-).&amp;nbsp; That addresses an interesting problem&lt;br&gt;with logic where you often have to introduce anonymous skolem objects&lt;br&gt;and later on you face the problem that they are not automatically&lt;br&gt;getting equivalenced with actual instances you know about, since that&lt;br&gt;would require additional identity statemtents.&amp;nbsp; Since KM uses a&lt;br&gt;heuristic procedure, it is not logically sound and can get things&lt;br&gt;wrong in
 some cases; nevertheless, it tries to address an interesting&lt;br&gt;issue.&lt;br&gt;&lt;br&gt;With respect to nested instance definitions, that wouldn't be too hard&lt;br&gt;to do.&amp;nbsp; I've actually played around with that in the past somewhat&lt;br&gt;inspired by F-Logic (which has its own arcane syntax :-), but never&lt;br&gt;had an application where it mattered enough to force the issue.&lt;br&gt;&lt;br&gt;However, you don't really need that machinery.&amp;nbsp; Tom already showed you&lt;br&gt;how to do it with an exists.&amp;nbsp; You can also use PowerLoom's automatic&lt;br&gt;instances.&amp;nbsp; For example:&lt;br&gt;&lt;br&gt;(assert (and (Person Joe)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Joe $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))))&lt;br&gt;&lt;br&gt;The $ sign acts like a Lisp gensym call and will create a new&lt;br&gt;identifier with the symbol name as a prefix that you then can&lt;br&gt;reference within the same expression.&amp;nbsp; For
 example:&lt;br&gt;&lt;br&gt;STELLA(7): (assert (and (Person Joe)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Joe $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))&lt;br&gt;(|P|(PERSON JOE) |P|(CAR CAR-000) |P|(OWNS JOE CAR-000) |P|(COLOR CAR-000 RED))&lt;br&gt;&lt;br&gt;STELLA(8): (assert (and (Person Sue)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Sue $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))&lt;br&gt;(|P|(PERSON SUE) |P|(CAR CAR-001) |P|(OWNS SUE CAR-001) |P|(COLOR CAR-001 RED))&lt;br&gt;STELLA(9): &lt;br&gt;&lt;br&gt;Note that the second time around we created a new instance different&lt;br&gt;from Joe's car.&amp;nbsp; This is useful so you don't have to think of new&lt;br&gt;instance names all the time.&amp;nbsp; Moreover, it creates real non-skolem&lt;br&gt;instances, therefore, PowerLoom would be able to infer from the above&lt;br&gt;that Joe's car and
 Sue's car are not the same (using the unique names&lt;br&gt;assumption).&amp;nbsp; With the exists formulation, that would not be possible&lt;br&gt;without explicitly asserting that they are not the same.&lt;br&gt;&lt;br&gt;In general, it is a valid enterprise to come up with more concise and&lt;br&gt;intuitive languages for KR.&amp;nbsp; KM is one such attempt, and there are&lt;br&gt;others.&amp;nbsp; For us, however, that probably won't be a priority for a&lt;br&gt;while, since moving more towards a standard such as Common Logic and&lt;br&gt;better supporting some of the Semantic Web languages seems to be more&lt;br&gt;important at the moment.&lt;br&gt;&lt;br&gt;Hans&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:&lt;br&gt;&lt;br&gt;&amp;gt; I found the following example in the documentation for the Knowledge Machine from UOfTexas...&lt;br&gt;&amp;gt; ;;; &quot;Every big car has a large
 engine.&quot;&lt;br&gt;KM&amp;gt; (every Big-Car has
 &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (size (*Large))))))&lt;br&gt;&lt;br&gt;&amp;gt; ;;; &quot;Every powerful car has a powerful engine.&quot;&lt;br&gt;KM&amp;gt; (every Powerful-Car has&amp;nbsp; &amp;nbsp;  &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (power (*Lots))))))&lt;br&gt;&lt;br&gt;&amp;gt; Question 1: How would we we represent above in Powerloom&lt;br&gt;&amp;gt;&amp;nbsp;  Here is my shot at it&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car)&lt;br&gt;&amp;gt; (defconcept Size (?x)&lt;br&gt;&amp;gt;&amp;nbsp;  :axioms ( and&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size large)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size small)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size medium)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (closed
 Size)))&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;gt; (defconcept Power (?x)&lt;br&gt;&amp;gt;&amp;nbsp;  :axioms ( and&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power lots)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power little)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power medium)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (closed Power)))&lt;br&gt;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car-Part)&lt;br&gt;&amp;gt; (defconcept Engine (?x Car-Part))&lt;br&gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))&lt;br&gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))&lt;br&gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))&lt;br&gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size or a power, but not both&lt;br&gt;&amp;gt; ;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&lt;br&gt;&amp;gt; ;; use the meta-relation to say that engine has size as
 well as power relations, tire has size but not&lt;br&gt;&amp;gt; ;; power etc.&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Big-Car (?x Car)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Powerful-Car (?x Car)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-power (car-engine ?x)) lots))&lt;br&gt; &lt;br&gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&lt;br&gt;&lt;br&gt;&amp;gt; ;; The KM example continues as follows&lt;br&gt;&amp;gt; ;;; &quot;Suburbans are both big and powerful cars.&quot;&lt;br&gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))&lt;br&gt;&lt;br&gt;&amp;gt; I defined this in PL as :&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; ;; KM then shows its unification powers&lt;br&gt;&amp;gt; ;;; &quot;What are the parts of a Suburban?&quot;&lt;br&gt;KM&amp;gt; (the parts of (a Suburban))&lt;br&gt;&amp;gt; (COMMENT: (_Engine7 &amp;amp;&amp;amp; _Engine8) unified to be _Engine7)&lt;br&gt;&amp;gt;
 (_Engine7)&lt;br&gt;&lt;br&gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or is the behavior slightly different&lt;br&gt;&amp;gt; The output from PL code above is:&lt;br&gt;&lt;br&gt;&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))&lt;br&gt;&amp;gt; There is 1 solution:&lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?X=|SK|(CAR-ENGINE T1)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  ;; Seems to work ok...there is only one engine not two&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&lt;br&gt;&amp;gt; There is 1 solution: &lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?SZ=LARGE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; and that engine has the correct&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&lt;br&gt;&amp;gt; There is 1
 solution:&lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?SZ=LOTS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; properties&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; KM has some other frame features that are useful to make the code clearer /concise&lt;br&gt;&amp;gt; 1. Embedded frames&lt;br&gt;&amp;gt; ;;; &quot;Joe is a person, and owns a red car.&quot;&lt;br&gt;KM&amp;gt; (*Joe has &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (instance-of (Person))&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns ((a Car with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color (*Red))))))&lt;br&gt;&lt;br&gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that
 makes this possible.&lt;br&gt;&lt;br&gt;&amp;gt; Thanks&lt;br&gt;&amp;gt; Srini&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&quot;text/css&quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;I found the following example in the documentation for the &amp;lt;span style=&quot;text-decoration: underline;&quot;&amp;gt;Knowledge Machine from UOfTexas..&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;;;; &quot;Every big car has a large engine.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Big-Car has &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with
 &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;;; &quot;Every powerful car has a powerful engine.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Powerful-Car has&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with&lt;br&gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold;&quot;&amp;gt;Question 1:&amp;lt;/span&amp;gt; How would we we represent above in
 Powerloom&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;amp;nbsp; Here is my shot at it&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 80px;&quot;&amp;gt;(&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;defconcept Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Size (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size large)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128,
 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size small)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Size)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Power (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power lots)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power
 little)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span&lt;br&gt;&amp;gt;&amp;nbsp; style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Power)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Car-Part)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Engine (?x Car-Part))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(deffunction car-engine ((?x Car)) :-&amp;amp;gt; (?y Engine))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;(deffunction part-size ((?x Car-Part)) :-&amp;amp;gt; (?y Size))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(deffunction part-power ((?x Car-Part)) :-&amp;amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; the above is not quite correct...some parts may have
 only a size or a power, but not both&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; use the meta-relation to say that engine has size as well as power relations, tire has size but not&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; power etc.&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span&lt;br&gt;&amp;gt;&amp;nbsp; style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;
 :=&amp;amp;gt;&amp;amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Powerful-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; :=&amp;amp;gt;&amp;amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127); font-weight: bold;&quot;&amp;gt;It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; The KM example continues as follows&amp;lt;br&amp;gt;;;; &quot;Suburbans are both big and powerful&lt;br&gt;&amp;gt;&amp;nbsp; cars.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (Suburban has (superclasses (Big-Car
 Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;I defined this in PL as :&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; KM then shows its unification powers&amp;lt;br&amp;gt;;;; &quot;What are the parts of a Suburban?&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;(COMMENT: (_Engine7 &amp;amp;amp;&amp;amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 255);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold;&quot;&amp;gt;Question 2&amp;lt;/span&amp;gt;: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;The output from PL code above
 is:&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?x&lt;br&gt;&amp;gt;&amp;nbsp; (Car-Engine t1)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span
 style=&quot;font-weight: bold; color: rgb(0, 0, 127);&quot;&amp;gt;;; Seems to work ok...there is only one engine not two&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;There is 1 solution: &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1:&lt;br&gt;&amp;gt;&amp;nbsp; ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;LARGE&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt; ;; and that engine has the correct&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0,
 0);&quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1: ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;LOTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;;
 properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;/span&amp;gt;KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;1. Embedded frames&amp;lt;br&amp;gt;;;; &quot;Joe is a person, and owns a red car.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (*Joe has&lt;br&gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (instance-of (Person))&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (owns ((a Car with
 &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;_______________________________________________&lt;br&gt;&amp;gt; powerloom-forum mailing list&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a rel=&quot;nofollow&quot; target=&quot;_blank&quot; href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

      &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

      &lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20250922&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20250922.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20248634</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-30T07:45:05Z</published>
	<updated>2008-10-30T07:45:05Z</updated>
	<author>
		<name>srini_ottawa</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&gt;&lt;div&gt;Thanks Hans&lt;br&gt;&lt;br&gt;The use of the PL automatic instances allows one to create&amp;nbsp; objects and sub-objects. This is useful&lt;br&gt;for some degree of colocating of facts relating to the same object. &lt;br&gt;&lt;br&gt;Does the syntactic sugar provided by definstance allow one to say &lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (definstance Joe :person true :owns (definstance $car :car true :color red))&lt;/span&gt;&lt;br&gt;instead of what you wrote below..&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;(&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;assert (and (Person Joe)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns
 Joe $car)&lt;/span&gt;&lt;br style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))))&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;The idea behind the specification I wrote above is not just convenience, but &lt;span style=&quot;text-decoration: underline;&quot;&gt;also maintanability &lt;/span&gt;--- When I remove the fact that joe is a person from the KB, I expect (in this case) the facts about his car, house, body parts etc. to automatically be deleted instead of having to do this manually as would be the case for the example you gave -- if joe perishes in a car crash :-) we have to retract&amp;nbsp; (person joe), (car $car), (owns joe $car) explicitly.&lt;br&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Is there any way to tag a set of assertions, so that you can just retract them as a group?&lt;/span&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span style=&quot;color: rgb(127, 0, 63);&quot;&gt;&lt;/span&gt;&lt;br&gt;You wrote below:&lt;br&gt;&lt;div style=&quot;margin-left: 40px;&quot;&gt;With respect to unification, defining `car-engine' as a function was&lt;br&gt;the right thing to do, since it automatically ensured that there was&lt;br&gt;only one engine per car and all the properties from the separate&lt;br&gt;classes were attached to it just like in KM.&amp;nbsp; &lt;br&gt;&lt;/div&gt;&lt;br&gt;However, that is true only for the example I used, since there is only one engine per car&lt;br&gt;and a function allows only one return value.&lt;br&gt;&lt;br&gt;However, to take another example, &lt;br&gt;if you have the following classification&lt;br&gt;Person -- has two eyes&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Blue-eyed person&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Black-eyed person&lt;br&gt;&lt;br&gt;Than any object which derives from both blue and black eyed persons should have two eyes (color tbd), not four.&lt;br&gt;I guess this is the unification I was wondering about. &lt;br&gt;&lt;br&gt;I think my question really was, how does Powerloom deal with multiple inheritance&lt;br&gt;where the same attribute is defined in two superclasses&lt;br&gt;-- in
 the case of clashing attributes(as in the case above where&amp;nbsp; it is not clear where the child object should have two blue eyes, or two brown eyes, but because Person has two eyes, we know that the child will have two eyes - we should be able to unambiguously answer questions relating to the number of eyes, but not their color)&lt;br&gt;-- in the case of non-clashing attributes(as in the engine example).&lt;br&gt;&lt;br&gt;Thanks&lt;br&gt;Srini&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 10pt;&quot;&gt;&lt;br&gt;&lt;div style=&quot;font-family: arial,helvetica,sans-serif; font-size: 13px;&quot;&gt;&lt;font face=&quot;Tahoma&quot; size=&quot;2&quot;&gt;&lt;hr size=&quot;1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;From:&lt;/span&gt;&lt;/b&gt; Hans Chalupsky &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;hans@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;To:&lt;/span&gt;&lt;/b&gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cc:&lt;/span&gt;&lt;/b&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Sent:&lt;/span&gt;&lt;/b&gt;
 Wednesday, October 29, 2008 10:32:19 PM&lt;br&gt;&lt;b&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Subject:&lt;/span&gt;&lt;/b&gt; Re: Question about representing frame information and unification in PL&lt;br&gt;&lt;/font&gt;&lt;br&gt;
Srini,&lt;br&gt;&lt;br&gt;I would contend that the PL definition&lt;br&gt;&lt;br&gt;(defconcept Big-Car (?x Car)&lt;br&gt;&amp;nbsp;  :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&lt;br&gt;&lt;br&gt;is not any more verbose than the KM statement&lt;br&gt;&lt;br&gt;(every Big-Car has &lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  (parts ((a Engine with (size (*Large))))))&lt;br&gt;&lt;br&gt;albeit maybe somewhat less readable (depending on your particular&lt;br&gt;logic persuasion).&lt;br&gt;&lt;br&gt;KM also uses definitions for classes and slots such as &quot;Engine&quot; and&lt;br&gt;&quot;size&quot; which you omitted.&amp;nbsp; If you had included those, the two KBs would&lt;br&gt;have been rather similar in size.&amp;nbsp; I'm not sure whether you can define&lt;br&gt;instances in KM without also defining the classes and slots that you&lt;br&gt;reference, in PowerLoom that's not an option.&lt;br&gt;&lt;br&gt;However, the KM syntax is interesting in that it allows you to keep&lt;br&gt;some variables implicit (somewhat similar to description logics).&lt;br&gt;There is no way you can say this without variables in PowerLoom,
 but&lt;br&gt;it wouldn't be too hard to write a little front-end translator to&lt;br&gt;recognize expressions of this kind.&lt;br&gt;&lt;br&gt;With respect to unification, defining `car-engine' as a function was&lt;br&gt;the right thing to do, since it automatically ensured that there was&lt;br&gt;only one engine per car and all the properties from the separate&lt;br&gt;classes were attached to it just like in KM.&amp;nbsp; &lt;br&gt;&lt;br&gt;KM also has a feature called &quot;heuristic unification&quot; that&lt;br&gt;automatically equivalences skolems based on certain heuristics (that I&lt;br&gt;don't fully understand :-).&amp;nbsp; That addresses an interesting problem&lt;br&gt;with logic where you often have to introduce anonymous skolem objects&lt;br&gt;and later on you face the problem that they are not automatically&lt;br&gt;getting equivalenced with actual instances you know about, since that&lt;br&gt;would require additional identity statemtents.&amp;nbsp; Since KM uses a&lt;br&gt;heuristic procedure, it is not logically sound and can get things&lt;br&gt;wrong in
 some cases; nevertheless, it tries to address an interesting&lt;br&gt;issue.&lt;br&gt;&lt;br&gt;With respect to nested instance definitions, that wouldn't be too hard&lt;br&gt;to do.&amp;nbsp; I've actually played around with that in the past somewhat&lt;br&gt;inspired by F-Logic (which has its own arcane syntax :-), but never&lt;br&gt;had an application where it mattered enough to force the issue.&lt;br&gt;&lt;br&gt;However, you don't really need that machinery.&amp;nbsp; Tom already showed you&lt;br&gt;how to do it with an exists.&amp;nbsp; You can also use PowerLoom's automatic&lt;br&gt;instances.&amp;nbsp; For example:&lt;br&gt;&lt;br&gt;(assert (and (Person Joe)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Joe $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))))&lt;br&gt;&lt;br&gt;The $ sign acts like a Lisp gensym call and will create a new&lt;br&gt;identifier with the symbol name as a prefix that you then can&lt;br&gt;reference within the same expression.&amp;nbsp; For
 example:&lt;br&gt;&lt;br&gt;STELLA(7): (assert (and (Person Joe)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Joe $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))&lt;br&gt;(|P|(PERSON JOE) |P|(CAR CAR-000) |P|(OWNS JOE CAR-000) |P|(COLOR CAR-000 RED))&lt;br&gt;&lt;br&gt;STELLA(8): (assert (and (Person Sue)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Car $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns Sue $car)&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color $car Red)))&lt;br&gt;(|P|(PERSON SUE) |P|(CAR CAR-001) |P|(OWNS SUE CAR-001) |P|(COLOR CAR-001 RED))&lt;br&gt;STELLA(9): &lt;br&gt;&lt;br&gt;Note that the second time around we created a new instance different&lt;br&gt;from Joe's car.&amp;nbsp; This is useful so you don't have to think of new&lt;br&gt;instance names all the time.&amp;nbsp; Moreover, it creates real non-skolem&lt;br&gt;instances, therefore, PowerLoom would be able to infer from the above&lt;br&gt;that Joe's car and
 Sue's car are not the same (using the unique names&lt;br&gt;assumption).&amp;nbsp; With the exists formulation, that would not be possible&lt;br&gt;without explicitly asserting that they are not the same.&lt;br&gt;&lt;br&gt;In general, it is a valid enterprise to come up with more concise and&lt;br&gt;intuitive languages for KR.&amp;nbsp; KM is one such attempt, and there are&lt;br&gt;others.&amp;nbsp; For us, however, that probably won't be a priority for a&lt;br&gt;while, since moving more towards a standard such as Common Logic and&lt;br&gt;better supporting some of the Semantic Web languages seems to be more&lt;br&gt;important at the moment.&lt;br&gt;&lt;br&gt;Hans&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:&lt;br&gt;&lt;br&gt;&amp;gt; I found the following example in the documentation for the Knowledge Machine from UOfTexas...&lt;br&gt;&amp;gt; ;;; &quot;Every big car has a large engine.&quot;&lt;br&gt;KM&amp;gt; (every Big-Car has
 &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (size (*Large))))))&lt;br&gt;&lt;br&gt;&amp;gt; ;;; &quot;Every powerful car has a powerful engine.&quot;&lt;br&gt;KM&amp;gt; (every Powerful-Car has&amp;nbsp; &amp;nbsp;  &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (parts ((a Engine with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (power (*Lots))))))&lt;br&gt;&lt;br&gt;&amp;gt; Question 1: How would we we represent above in Powerloom&lt;br&gt;&amp;gt;&amp;nbsp;  Here is my shot at it&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car)&lt;br&gt;&amp;gt; (defconcept Size (?x)&lt;br&gt;&amp;gt;&amp;nbsp;  :axioms ( and&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size large)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size small)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Size medium)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (closed
 Size)))&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;gt; (defconcept Power (?x)&lt;br&gt;&amp;gt;&amp;nbsp;  :axioms ( and&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power lots)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power little)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (Power medium)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (closed Power)))&lt;br&gt;&amp;nbsp; &lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car-Part)&lt;br&gt;&amp;gt; (defconcept Engine (?x Car-Part))&lt;br&gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))&lt;br&gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))&lt;br&gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))&lt;br&gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size or a power, but not both&lt;br&gt;&amp;gt; ;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&lt;br&gt;&amp;gt; ;; use the meta-relation to say that engine has size as
 well as power relations, tire has size but not&lt;br&gt;&amp;gt; ;; power etc.&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Big-Car (?x Car)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Powerful-Car (?x Car)&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-power (car-engine ?x)) lots))&lt;br&gt; &lt;br&gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&lt;br&gt;&lt;br&gt;&amp;gt; ;; The KM example continues as follows&lt;br&gt;&amp;gt; ;;; &quot;Suburbans are both big and powerful cars.&quot;&lt;br&gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))&lt;br&gt;&lt;br&gt;&amp;gt; I defined this in PL as :&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; ;; KM then shows its unification powers&lt;br&gt;&amp;gt; ;;; &quot;What are the parts of a Suburban?&quot;&lt;br&gt;KM&amp;gt; (the parts of (a Suburban))&lt;br&gt;&amp;gt; (COMMENT: (_Engine7 &amp;amp;&amp;amp; _Engine8) unified to be _Engine7)&lt;br&gt;&amp;gt;
 (_Engine7)&lt;br&gt;&lt;br&gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or is the behavior slightly different&lt;br&gt;&amp;gt; The output from PL code above is:&lt;br&gt;&lt;br&gt;&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))&lt;br&gt;&amp;gt; There is 1 solution:&lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?X=|SK|(CAR-ENGINE T1)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  ;; Seems to work ok...there is only one engine not two&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&lt;br&gt;&amp;gt; There is 1 solution: &lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?SZ=LARGE&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; and that engine has the correct&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&lt;br&gt;&amp;gt; There is 1
 solution:&lt;br&gt;&amp;gt;&amp;nbsp;  #1: ?SZ=LOTS&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; properties&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; KM has some other frame features that are useful to make the code clearer /concise&lt;br&gt;&amp;gt; 1. Embedded frames&lt;br&gt;&amp;gt; ;;; &quot;Joe is a person, and owns a red car.&quot;&lt;br&gt;KM&amp;gt; (*Joe has &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (instance-of (Person))&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (owns ((a Car with &lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  (color (*Red))))))&lt;br&gt;&lt;br&gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that
 makes this possible.&lt;br&gt;&lt;br&gt;&amp;gt; Thanks&lt;br&gt;&amp;gt; Srini&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&quot;text/css&quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&quot;font-family:arial,helvetica,sans-serif;font-size:10pt&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;I found the following example in the documentation for the &amp;lt;span style=&quot;text-decoration: underline;&quot;&amp;gt;Knowledge Machine from UOfTexas..&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;;;; &quot;Every big car has a large engine.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Big-Car has &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with
 &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;;; &quot;Every powerful car has a powerful engine.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (every Powerful-Car has&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (parts ((a Engine with&lt;br&gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold;&quot;&amp;gt;Question 1:&amp;lt;/span&amp;gt; How would we we represent above in
 Powerloom&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;amp;nbsp; Here is my shot at it&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 80px;&quot;&amp;gt;(&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;defconcept Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Size (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size large)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128,
 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size small)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Size medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Size)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Power (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power lots)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power
 little)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (Power medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span&lt;br&gt;&amp;gt;&amp;nbsp; style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (closed Power)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Car-Part)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Engine (?x Car-Part))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(deffunction car-engine ((?x Car)) :-&amp;amp;gt; (?y Engine))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;(deffunction part-size ((?x Car-Part)) :-&amp;amp;gt; (?y Size))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(deffunction part-power ((?x Car-Part)) :-&amp;amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; the above is not quite correct...some parts may have
 only a size or a power, but not both&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; use the meta-relation to say that engine has size as well as power relations, tire has size but not&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;; power etc.&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span&lt;br&gt;&amp;gt;&amp;nbsp; style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;
 :=&amp;amp;gt;&amp;amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Powerful-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp; :=&amp;amp;gt;&amp;amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127); font-weight: bold;&quot;&amp;gt;It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; The KM example continues as follows&amp;lt;br&amp;gt;;;; &quot;Suburbans are both big and powerful&lt;br&gt;&amp;gt;&amp;nbsp; cars.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (Suburban has (superclasses (Big-Car
 Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;I defined this in PL as :&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;(defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; KM then shows its unification powers&amp;lt;br&amp;gt;;;; &quot;What are the parts of a Suburban?&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;(COMMENT: (_Engine7 &amp;amp;amp;&amp;amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 255);&quot;&amp;gt;&amp;lt;span style=&quot;font-weight: bold;&quot;&amp;gt;Question 2&amp;lt;/span&amp;gt;: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;The output from PL code above
 is:&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;div style=&quot;margin-left: 40px;&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?x&lt;br&gt;&amp;gt;&amp;nbsp; (Car-Engine t1)))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1)&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span
 style=&quot;font-weight: bold; color: rgb(0, 0, 127);&quot;&amp;gt;;; Seems to work ok...there is only one engine not two&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;There is 1 solution: &amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1:&lt;br&gt;&amp;gt;&amp;nbsp; ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,
 0);&quot;&amp;gt;LARGE&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt; ;; and that engine has the correct&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;STELLA&amp;amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0,
 0);&quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(128, 0, 0);&quot;&amp;gt;&amp;amp;nbsp; #1: ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0,&lt;br&gt;&amp;gt;&amp;nbsp; 0);&quot;&amp;gt;LOTS&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;;;
 properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;/span&amp;gt;KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;1. Embedded frames&amp;lt;br&amp;gt;;;; &quot;Joe is a person, and owns a red car.&quot;&amp;lt;br&amp;gt;KM&amp;amp;gt; (*Joe has&lt;br&gt;&amp;gt;&amp;nbsp; &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (instance-of (Person))&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (owns ((a Car with
 &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; (color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&quot;font-weight: bold; color: rgb(128, 0, 0);&quot;&amp;gt;&amp;lt;span style=&quot;color: rgb(0, 0, 127);&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;br&gt;&amp;gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;_______________________________________________&lt;br&gt;&amp;gt; powerloom-forum mailing list&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;

      &lt;/body&gt;&lt;/html&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20248634&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20248634.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20239959</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-29T19:32:19Z</published>
	<updated>2008-10-29T19:32:19Z</updated>
	<author>
		<name>Hans Chalupsky</name>
	</author>
	<content type="html">Srini,
&lt;br&gt;&lt;br&gt;I would contend that the PL definition
&lt;br&gt;&lt;br&gt;(defconcept Big-Car (?x Car)
&lt;br&gt;&amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-size (car-engine ?x)) large))
&lt;br&gt;&lt;br&gt;is not any more verbose than the KM statement
&lt;br&gt;&lt;br&gt;(every Big-Car has 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with (size (*Large))))))
&lt;br&gt;&lt;br&gt;albeit maybe somewhat less readable (depending on your particular
&lt;br&gt;logic persuasion).
&lt;br&gt;&lt;br&gt;KM also uses definitions for classes and slots such as &amp;quot;Engine&amp;quot; and
&lt;br&gt;&amp;quot;size&amp;quot; which you omitted. &amp;nbsp;If you had included those, the two KBs would
&lt;br&gt;have been rather similar in size. &amp;nbsp;I'm not sure whether you can define
&lt;br&gt;instances in KM without also defining the classes and slots that you
&lt;br&gt;reference, in PowerLoom that's not an option.
&lt;br&gt;&lt;br&gt;However, the KM syntax is interesting in that it allows you to keep
&lt;br&gt;some variables implicit (somewhat similar to description logics).
&lt;br&gt;There is no way you can say this without variables in PowerLoom, but
&lt;br&gt;it wouldn't be too hard to write a little front-end translator to
&lt;br&gt;recognize expressions of this kind.
&lt;br&gt;&lt;br&gt;With respect to unification, defining `car-engine' as a function was
&lt;br&gt;the right thing to do, since it automatically ensured that there was
&lt;br&gt;only one engine per car and all the properties from the separate
&lt;br&gt;classes were attached to it just like in KM. &amp;nbsp;
&lt;br&gt;&lt;br&gt;KM also has a feature called &amp;quot;heuristic unification&amp;quot; that
&lt;br&gt;automatically equivalences skolems based on certain heuristics (that I
&lt;br&gt;don't fully understand :-). &amp;nbsp;That addresses an interesting problem
&lt;br&gt;with logic where you often have to introduce anonymous skolem objects
&lt;br&gt;and later on you face the problem that they are not automatically
&lt;br&gt;getting equivalenced with actual instances you know about, since that
&lt;br&gt;would require additional identity statemtents. &amp;nbsp;Since KM uses a
&lt;br&gt;heuristic procedure, it is not logically sound and can get things
&lt;br&gt;wrong in some cases; nevertheless, it tries to address an interesting
&lt;br&gt;issue.
&lt;br&gt;&lt;br&gt;With respect to nested instance definitions, that wouldn't be too hard
&lt;br&gt;to do. &amp;nbsp;I've actually played around with that in the past somewhat
&lt;br&gt;inspired by F-Logic (which has its own arcane syntax :-), but never
&lt;br&gt;had an application where it mattered enough to force the issue.
&lt;br&gt;&lt;br&gt;However, you don't really need that machinery. &amp;nbsp;Tom already showed you
&lt;br&gt;how to do it with an exists. &amp;nbsp;You can also use PowerLoom's automatic
&lt;br&gt;instances. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;(assert (and (Person Joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))))
&lt;br&gt;&lt;br&gt;The $ sign acts like a Lisp gensym call and will create a new
&lt;br&gt;identifier with the symbol name as a prefix that you then can
&lt;br&gt;reference within the same expression. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;STELLA(7): (assert (and (Person Joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))
&lt;br&gt;(|P|(PERSON JOE) |P|(CAR CAR-000) |P|(OWNS JOE CAR-000) |P|(COLOR CAR-000 RED))
&lt;br&gt;&lt;br&gt;STELLA(8): (assert (and (Person Sue)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Car $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Sue $car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color $car Red)))
&lt;br&gt;(|P|(PERSON SUE) |P|(CAR CAR-001) |P|(OWNS SUE CAR-001) |P|(COLOR CAR-001 RED))
&lt;br&gt;STELLA(9): 
&lt;br&gt;&lt;br&gt;Note that the second time around we created a new instance different
&lt;br&gt;from Joe's car. &amp;nbsp;This is useful so you don't have to think of new
&lt;br&gt;instance names all the time. &amp;nbsp;Moreover, it creates real non-skolem
&lt;br&gt;instances, therefore, PowerLoom would be able to infer from the above
&lt;br&gt;that Joe's car and Sue's car are not the same (using the unique names
&lt;br&gt;assumption). &amp;nbsp;With the exists formulation, that would not be possible
&lt;br&gt;without explicitly asserting that they are not the same.
&lt;br&gt;&lt;br&gt;In general, it is a valid enterprise to come up with more concise and
&lt;br&gt;intuitive languages for KR. &amp;nbsp;KM is one such attempt, and there are
&lt;br&gt;others. &amp;nbsp;For us, however, that probably won't be a priority for a
&lt;br&gt;while, since moving more towards a standard such as Common Logic and
&lt;br&gt;better supporting some of the Semantic Web languages seems to be more
&lt;br&gt;important at the moment.
&lt;br&gt;&lt;br&gt;Hans
&lt;br&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Srini Ram &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20239959&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;srini_ramaswamy_i@...&lt;/a&gt;&amp;gt; writes:
&lt;br&gt;&lt;br&gt;&amp;gt; I found the following example in the documentation for the Knowledge Machine from UOfTexas...
&lt;br&gt;&amp;gt; ;;; &amp;quot;Every big car has a large engine.&amp;quot;
&lt;br&gt;KM&amp;gt; (every Big-Car has 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (size (*Large))))))
&lt;br&gt;&lt;br&gt;&amp;gt; ;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;
&lt;br&gt;KM&amp;gt; (every Powerful-Car has &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (power (*Lots))))))
&lt;br&gt;&lt;br&gt;&amp;gt; Question 1: How would we we represent above in Powerloom
&lt;br&gt;&amp;gt; &amp;nbsp; Here is my shot at it
&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car)
&lt;br&gt;&amp;gt; (defconcept Size (?x)
&lt;br&gt;&amp;gt; &amp;nbsp; :axioms ( and
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size large)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size small)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size medium)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (closed Size)))
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;gt; (defconcept Power (?x)
&lt;br&gt;&amp;gt; &amp;nbsp; :axioms ( and
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power lots)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power little)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power medium)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (closed Power)))
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Car-Part)
&lt;br&gt;&amp;gt; (defconcept Engine (?x Car-Part))
&lt;br&gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))
&lt;br&gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))
&lt;br&gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))
&lt;br&gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size or a power, but not both
&lt;br&gt;&amp;gt; ;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then
&lt;br&gt;&amp;gt; ;; use the meta-relation to say that engine has size as well as power relations, tire has size but not
&lt;br&gt;&amp;gt; ;; power etc.
&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Big-Car (?x Car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-size (car-engine ?x)) large))
&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Powerful-Car (?x Car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-power (car-engine ?x)) lots))
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?
&lt;br&gt;&lt;br&gt;&amp;gt; ;; The KM example continues as follows
&lt;br&gt;&amp;gt; ;;; &amp;quot;Suburbans are both big and powerful cars.&amp;quot;
&lt;br&gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))
&lt;br&gt;&lt;br&gt;&amp;gt; I defined this in PL as :
&lt;br&gt;&lt;br&gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; ;; KM then shows its unification powers
&lt;br&gt;&amp;gt; ;;; &amp;quot;What are the parts of a Suburban?&amp;quot;
&lt;br&gt;KM&amp;gt; (the parts of (a Suburban))
&lt;br&gt;&amp;gt; (COMMENT: (_Engine7 &amp;&amp; _Engine8) unified to be _Engine7)
&lt;br&gt;&amp;gt; (_Engine7)
&lt;br&gt;&lt;br&gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or is the behavior slightly different
&lt;br&gt;&amp;gt; The output from PL code above is:
&lt;br&gt;&lt;br&gt;&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))
&lt;br&gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; Seems to work ok...there is only one engine not two
&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))
&lt;br&gt;&amp;gt; There is 1 solution: 
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ?SZ=LARGE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; and that engine has the correct
&lt;br&gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))
&lt;br&gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ?SZ=LOTS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; properties
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;gt; KM has some other frame features that are useful to make the code clearer /concise
&lt;br&gt;&amp;gt; 1. Embedded frames
&lt;br&gt;&amp;gt; ;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;
&lt;br&gt;KM&amp;gt; (*Joe has 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (instance-of (Person))
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (owns ((a Car with 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color (*Red))))))
&lt;br&gt;&lt;br&gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.
&lt;br&gt;&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt; Srini
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&amp;lt;!-- DIV {margin:0px;} --&amp;gt;&amp;lt;/style&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&amp;lt;div style=&amp;quot;font-family:arial,helvetica,sans-serif;font-size:10pt&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I found the following example in the documentation for the &amp;lt;span style=&amp;quot;text-decoration: underline;&amp;quot;&amp;gt;Knowledge Machine from UOfTexas..&amp;lt;/span&amp;gt;.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;;;; &amp;quot;Every big car has a large engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Big-Car has &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (parts ((a Engine with &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (size (*Large))))))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (every Powerful-Car has&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (parts ((a Engine with
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (power (*Lots))))))&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 1:&amp;lt;/span&amp;gt; How would we we represent above in Powerloom&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;nbsp; Here is my shot at it&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 80px;&amp;quot;&amp;gt;(&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;defconcept Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Size (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size large)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size small)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Size medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (closed Size)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Power (?x)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; :axioms ( and&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power lots)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power little)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Power medium)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span
&lt;br&gt;&amp;gt; &amp;nbsp;style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (closed Power)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Car-Part)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Engine (?x Car-Part))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;(deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; the above is not quite correct...some parts may have only a size or a power, but not both&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; every part must have one of the two properties..not sure how i say this in a meta-relation. I can then&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; use the meta-relation to say that engine has size as well as power relations, tire has size but not&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; power etc.&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span
&lt;br&gt;&amp;gt; &amp;nbsp;style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Big-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-size (car-engine ?x)) large))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Powerful-Car (?x Car)&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp;&amp;nbsp; :=&amp;gt;&amp;nbsp; (= (part-power (car-engine ?x)) lots))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127); font-weight: bold;&amp;quot;&amp;gt;It is more verbose than the KM version and less intuitive. Could I have used some PL features e.g definstance to make the code more readable?&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; The KM example continues as follows&amp;lt;br&amp;gt;;;; &amp;quot;Suburbans are both big and powerful
&lt;br&gt;&amp;gt; &amp;nbsp;cars.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;I defined this in PL as :&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;(defconcept Suburban (?x Big-Car Powerful-Car))&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;;; KM then shows its unification powers&amp;lt;br&amp;gt;;;; &amp;quot;What are the parts of a Suburban?&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (the parts of (a Suburban))&amp;lt;br&amp;gt;(COMMENT: (_Engine7 &amp;amp;&amp;amp; _Engine8) unified to be _Engine7)&amp;lt;br&amp;gt;(_Engine7)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;Question 2&amp;lt;/span&amp;gt;: Would the unification work the same way in PowerLoom or is the behavior slightly different&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;The output from PL code above is:&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;margin-left: 40px;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (= ?x
&lt;br&gt;&amp;gt; &amp;nbsp;(Car-Engine t1)))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1: ?X=|SK|(CAR-ENGINE T1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; Seems to work ok...there is only one engine not two&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution: &amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1:
&lt;br&gt;&amp;gt; &amp;nbsp;?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;LARGE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt; ;; and that engine has the correct&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;There is 1 solution:&amp;lt;/span&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;nbsp; #1: ?SZ=&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0,
&lt;br&gt;&amp;gt; &amp;nbsp;0);&amp;quot;&amp;gt;LOTS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;;; properties&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;KM has some other frame features that are useful to make the code clearer /concise&amp;lt;br&amp;gt;1. Embedded frames&amp;lt;br&amp;gt;;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;&amp;lt;br&amp;gt;KM&amp;gt; (*Joe has
&lt;br&gt;&amp;gt; &amp;nbsp;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (instance-of (Person))&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (owns ((a Car with &amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (color (*Red))))))&amp;lt;br&amp;gt;&amp;lt;br style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;Not sure if this can be done in PL without creating a PL instance of car and using the owns relation to relate Joe to that car instance i.e we cannot have embedded powerloom instances... I may be missing the proper use of the frame syntax of PowerLoom that makes this possible.&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-weight: bold; color: rgb(128, 0, 0);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 0, 127);&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;Thanks&amp;lt;br&amp;gt;Srini&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;
&lt;/div&gt;&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;_______________________________________________
&lt;br&gt;&amp;gt; powerloom-forum mailing list
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20239959&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20239959&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20239959.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-20234375</id>
	<title>Re: Question about representing frame information and unification in PL</title>
	<published>2008-10-29T12:35:00Z</published>
	<updated>2008-10-29T12:35:00Z</updated>
	<author>
		<name>Thomas Russ</name>
	</author>
	<content type="html">&lt;br&gt;On Oct 29, 2008, at 10:49 AM, Srini Ram wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I found the following example in the documentation for the Knowledge &amp;nbsp;
&lt;br&gt;&amp;gt; Machine from UOfTexas...
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ;;; &amp;quot;Every big car has a large engine.&amp;quot;
&lt;br&gt;&amp;gt; KM&amp;gt; (every Big-Car has
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (size (*Large))))))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ;;; &amp;quot;Every powerful car has a powerful engine.&amp;quot;
&lt;br&gt;&amp;gt; KM&amp;gt; (every Powerful-Car has
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(parts ((a Engine with
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (power (*Lots))))))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Question 1: How would we we represent above in Powerloom
&lt;br&gt;&amp;gt; &amp;nbsp; Here is my shot at it
&lt;br&gt;&amp;gt; (defconcept Car)
&lt;br&gt;&amp;gt; (defconcept Size (?x)
&lt;br&gt;&amp;gt; &amp;nbsp; :axioms ( and
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size large)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size small)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Size medium)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (closed Size)))
&lt;/div&gt;&lt;br&gt;;; I would write this concept as an explicit definition in terms of
&lt;br&gt;;; the set of instances. &amp;nbsp;PowerLoom will then conclude that it must
&lt;br&gt;;; be closed because there is an explicitly enumerated list.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;(defconcept Size (?x) :&amp;lt;=&amp;gt; (member-of ?x (setof large small medium)))
&lt;br&gt;&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (defconcept Power (?x)
&lt;br&gt;&amp;gt; &amp;nbsp; :axioms ( and
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power lots)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power little)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (Power medium)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (closed Power)))
&lt;br&gt;&lt;br&gt;;; Similarly
&lt;br&gt;&lt;br&gt;(defconcept Power (?x) :&amp;lt;=&amp;gt; (member-of ?x (setof lost little medium)))
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; (defconcept Car-Part)
&lt;br&gt;&amp;gt; (defconcept Engine (?x Car-Part))
&lt;br&gt;&amp;gt; (deffunction car-engine ((?x Car)) :-&amp;gt; (?y Engine))
&lt;br&gt;&amp;gt; (deffunction part-size ((?x Car-Part)) :-&amp;gt; (?y Size))
&lt;br&gt;&amp;gt; (deffunction part-power ((?x Car-Part)) :-&amp;gt; (?y Power))
&lt;br&gt;&amp;gt; ;; the above is not quite correct...some parts may have only a size &amp;nbsp;
&lt;br&gt;&amp;gt; or a power, but not both
&lt;br&gt;&amp;gt; ;; every part must have one of the two properties..not sure how i &amp;nbsp;
&lt;br&gt;&amp;gt; say this in a meta-relation. I can then
&lt;br&gt;&amp;gt; ;; use the meta-relation to say that engine has size as well as &amp;nbsp;
&lt;br&gt;&amp;gt; power relations, tire has size but not
&lt;br&gt;&amp;gt; ;; power etc.
&lt;/div&gt;&lt;br&gt;;; You don't really need a meta-relation to say this in particular.
&lt;br&gt;;; You could make this a requirement directly:
&lt;br&gt;&lt;br&gt;(=&amp;gt; (car-part ?part) (or (exists (?size) (part-size ?part ?size))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (exists (?power) (part-power ?part ?power))))
&lt;br&gt;&lt;br&gt;;; But there will be limited inference, since disjunctions are pretty
&lt;br&gt;;; weak constraints. &amp;nbsp;For the case of Engine and Tire you would get
&lt;br&gt;&lt;br&gt;(defconcept Engine (Car-Part ?x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; :=&amp;gt; (and (exists (?size) (part-size ?part ?size))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(exists (?power) (part-power ?part ?power))))
&lt;br&gt;&lt;br&gt;(defconcept Tire (Car-Part ?x)
&lt;br&gt;&amp;nbsp; &amp;nbsp; :=&amp;gt; (and (exists (?size) (part-size ?part ?size))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(not (exists (?power) (part-power ?part ?power)))))
&lt;br&gt;&lt;br&gt;;; But this is an area of PowerLoom where we haven't really put
&lt;br&gt;;; a lot of effort into making sure you get inferences or clashes.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; (defconcept Big-Car (?x Car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-size (car-engine ?x)) large))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; (defconcept Powerful-Car (?x Car)
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp;:=&amp;gt; &amp;nbsp;(= (part-power (car-engine ?x)) lots))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; It is more verbose than the KM version and less intuitive. Could I &amp;nbsp;
&lt;br&gt;&amp;gt; have used some PL features e.g definstance to make the code more &amp;nbsp;
&lt;br&gt;&amp;gt; readable?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ;; The KM example continues as follows
&lt;br&gt;&amp;gt; ;;; &amp;quot;Suburbans are both big and powerful cars.&amp;quot;
&lt;br&gt;&amp;gt; KM&amp;gt; (Suburban has (superclasses (Big-Car Powerful-Car)))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I defined this in PL as :
&lt;br&gt;&amp;gt; (defconcept Suburban (?x Big-Car Powerful-Car))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; ;; KM then shows its unification powers
&lt;br&gt;&amp;gt; ;;; &amp;quot;What are the parts of a Suburban?&amp;quot;
&lt;br&gt;&amp;gt; KM&amp;gt; (the parts of (a Suburban))
&lt;br&gt;&amp;gt; (COMMENT: (_Engine7 &amp;&amp; _Engine8) unified to be _Engine7)
&lt;br&gt;&amp;gt; (_Engine7)
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Question 2: Would the unification work the same way in PowerLoom or &amp;nbsp;
&lt;br&gt;&amp;gt; is the behavior slightly different
&lt;br&gt;&amp;gt; The output from PL code above is:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; STELLA&amp;gt; (retrieve all (= ?x (Car-Engine t1)))
&lt;br&gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ?X=|SK|(CAR-ENGINE &amp;nbsp;
&lt;br&gt;&amp;gt; T1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;; Seems to work &amp;nbsp;
&lt;br&gt;&amp;gt; ok...there is only one engine not two
&lt;br&gt;&amp;gt; STELLA&amp;gt; (retrieve all (= ?sz (part-size (Car-Engine t1))))
&lt;br&gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ? 
&lt;br&gt;&amp;gt; SZ 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; LARGE &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; &amp;nbsp;
&lt;br&gt;&amp;gt; and that engine has the correct
&lt;br&gt;&amp;gt; STELLA&amp;gt; (retrieve all (= ?sz (part-quantity (Car-Engine t1))))
&lt;br&gt;&amp;gt; There is 1 solution:
&lt;br&gt;&amp;gt; &amp;nbsp; #1: ? 
&lt;br&gt;&amp;gt; SZ 
&lt;br&gt;&amp;gt; = 
&lt;br&gt;&amp;gt; LOTS 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ;; &amp;nbsp;
&lt;br&gt;&amp;gt; properties
&lt;/div&gt;&lt;br&gt;Well, the actual mechanisms might be a bit different.
&lt;br&gt;PowerLoom would have a single skolem instance for the car-engine &amp;nbsp;
&lt;br&gt;(created because it's a function), and then the attributes are just &amp;nbsp;
&lt;br&gt;asserted about that skolem. &amp;nbsp;Unification would only really come into &amp;nbsp;
&lt;br&gt;play if there were some equivalence assertion between two skolems or a &amp;nbsp;
&lt;br&gt;skolem and an instance -- either explicitly or implicitly.
&lt;br&gt;&lt;br&gt;So if one were to
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;(assert (car-engine t1 e326))
&lt;br&gt;&lt;br&gt;then the skolem and the instance e326 would be unified.
&lt;br&gt;Similarly this could also be done with more than one skolem:
&lt;br&gt;&lt;br&gt;(deffunction favorite-object ((?x Person)) :-&amp;gt; ?x)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;(assert (= (favorite-object Joe) (car-engine t1)))
&lt;br&gt;&lt;br&gt;this would equate the skolems, without needing a concrete instance.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; KM has some other frame features that are useful to make the code &amp;nbsp;
&lt;br&gt;&amp;gt; clearer /concise
&lt;br&gt;&amp;gt; 1. Embedded frames
&lt;br&gt;&amp;gt; ;;; &amp;quot;Joe is a person, and owns a red car.&amp;quot;
&lt;br&gt;&amp;gt; KM&amp;gt; (*Joe has
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (instance-of (Person))
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (owns ((a Car with
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (color (*Red))))))
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Not sure if this can be done in PL without creating a PL instance of &amp;nbsp;
&lt;br&gt;&amp;gt; car and using the owns relation to relate Joe to that car instance &amp;nbsp;
&lt;br&gt;&amp;gt; i.e we cannot have embedded powerloom instances... I may be missing &amp;nbsp;
&lt;br&gt;&amp;gt; the proper use of the frame syntax of PowerLoom that makes this &amp;nbsp;
&lt;br&gt;&amp;gt; possible.
&lt;/div&gt;&lt;br&gt;What you can use is existential quantification. &amp;nbsp;That is essentially &amp;nbsp;
&lt;br&gt;what the &amp;quot;a&amp;quot; operator in KM means:
&lt;br&gt;&lt;br&gt;(assert (and (Person Joe)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (exists (?joes-car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (and (Car ?joes-car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(owns Joe ?joes-car)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(color ?joes-car Red)))))
&lt;br&gt;&lt;br&gt;This seems fairly comparable to what the KM form looks like.
&lt;br&gt;&lt;br&gt;PowerLoom does have some frame predicates
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (retrieve ?p (frame-predicate ?p))
&lt;br&gt;&lt;br&gt;but since we haven't really had applications that needed to reason &amp;nbsp;
&lt;br&gt;with them, the reasoning is not as extensive as you would get in a &amp;nbsp;
&lt;br&gt;description logic like Loom or OWL. &amp;nbsp;There is no inherent reason that &amp;nbsp;
&lt;br&gt;couldn't be added, but it hasn't been a priority for us.
&lt;br&gt;&lt;br&gt;There is also the complication that the more expressive language of &amp;nbsp;
&lt;br&gt;PowerLoom means there are other logically equivalent ways to state, &amp;nbsp;
&lt;br&gt;for example, a minimum 1 cardinality. &amp;nbsp;But they aren't currently &amp;nbsp;
&lt;br&gt;handled by the axioms and inference machinery. &amp;nbsp;Partly that is lack of &amp;nbsp;
&lt;br&gt;effort and partly fear that we can't do it efficiently. &amp;nbsp;For example:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (Car ?x) =&amp;gt; (range-min-cardinality ?x has-engine 1)
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; (Car ?x) =&amp;gt; (exists ?e (has-engine ?x ?e))
&lt;br&gt;&lt;br&gt;are logically equivalent, but PowerLoom doesn't have the axioms to &amp;nbsp;
&lt;br&gt;conclude this.
&lt;br&gt;&lt;br&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;powerloom-forum mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=20234375&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;powerloom-forum@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://mailman.isi.edu/mailman/listinfo/powerloom-forum&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Question-about-representing-frame-information-and-unification-in-PL-tp20233348p20234375.html" />
</entry>

</feed>
