home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / coders / jËzyki_programowania / logo / powerlogo / semnet / semnet.doc < prev    next >
Text File  |  1992-11-10  |  6KB  |  186 lines

  1.  
  2. Power LOGO Semantic Network Program
  3.   by Jerry D. Hedden
  4.  
  5. This program allows the user to form a semantic network and ask questions
  6. about it.  A semantic network is a type of knowledge base in which objects
  7. are linked together in a hierarchy, and are associated with attributes.
  8. The diagram below illustrates the associations supported by this program.
  9.  
  10.         (object YYY)
  11.  
  12.              ^
  13.              |  is-a
  14.              |
  15.              |
  16.              |  includes
  17.              v
  18.  
  19.         (object XXX)   <-------------------------->   (attribute ZZZ)
  20.                         with               has
  21.                         without            has-not
  22.                         able               can
  23.                         unable             cannot
  24.                         are                is
  25.                         are-not            is-not
  26.  
  27.  
  28. A concrete example might be:
  29.  
  30.         an animal --- (can) --> move
  31.             ^
  32.             | (is an)
  33.             |-----------------------------------
  34.             |                                  |
  35.          a bird   --- (can) --> fly        a mammal --- (has) --> fur
  36.             ^      |                           ^     |
  37.             |      -- (has) --> feathers       |     -- (cannot) --> fly
  38.             | (is a)                           | (is a)
  39.             |                                  |
  40.          a canary --- (is) --> yellow        a bat --- (can) --> fly
  41.  
  42.  
  43. An object "inherits" the attributes of its "parent".  Thus, a canary can
  44. fly.  Inherited attributes can be overridden, as in the case of a bat being
  45. able to fly whereas most mammals cannot.
  46.  
  47. The sample network included with SemNet deals with living things (life
  48. forms), but networks dealing with other objects could be made (e.g.,
  49. sub-atomic particles).  If you are really ambitious, you could modify the
  50. program to handle different "cases" of attributes (besides "can", "cannot",
  51. etc.).
  52.  
  53.  
  54. Program Execution:
  55.  
  56. Load SemNet by clicking on its icon (or via the CLI like any other Power
  57. LOGO program.  To start SemNet in an empty state, type `semnet' at the
  58. LOGO prompt.  To start SemNet and have it load an existing network, type
  59. `( semnet "network-name )'.  For example `( semnet "sample.net )' starts
  60. up SemNet with the included sample network.  To terminate SemNet, enter
  61. the command `quit' at the SemNet prompt.
  62.  
  63. You can query the network concerning its current contents.  For example,
  64. `Why can a canary move?'.  To get a feel for the current contents of the
  65. network try, `What do you know?'.
  66.  
  67. You can add to the network.  For example:
  68.  
  69.    A reptile is an animal.
  70.    A reptile is cold-blooded.
  71.    A snake is a reptile.
  72.  
  73. You can save a new or modified network with the SemNet command `save'.
  74. You can load in a different network with the SemNet command `load'.  For
  75. either command, respond to the file requester, as appropriate.
  76.  
  77.  
  78. SemNet Commands:
  79.  
  80. Commands, queries and data entries at the SemNet prompt must adhere to
  81. the following specifications:
  82.  
  83.         Objects and attributes must be single words.  Use dashes or
  84.           underscores for multi-word entries (e.g., flying-fish).
  85.         Objects are distinguished by the use of an "article" (i.e.,
  86.           the words "a" or "an").  Therefore, always include the
  87.           article in all data entries and queries.
  88.  
  89. Program control commands:
  90.  
  91.         load
  92.         save
  93.         quit
  94.  
  95. For data entry, use entries of the following format:
  96.  
  97.         A[n] XXX is a[n] YYY.          ; Establishes a relation.
  98.         A[n] XXX has ZZZ.              ; Assigns attributes.
  99.         A[n] XXX does not have ZZZ.
  100.         A[n] XXX can ZZZ.
  101.         A[n] XXX cannot ZZZ.
  102.         A[n] XXX is ZZZ.
  103.         A[n] XXX is not ZZZ.
  104.         Ask me about a[n] XXX.         ; See below.
  105.  
  106. For `Ask me about a[n] XXX.', several questions will be asked.  A
  107. carriage-return is an acceptable response (i.e., ignores the question).
  108.  
  109.         What is a[n] XXX?              ; Give a response of the form:
  110.                                        ;          a[n] YYY
  111.                                        ; in order to establish an "is-a"
  112.                                        ; link.
  113.  
  114.         What does a[n] XXX have?       ; For each of these, give a
  115.         What does a[n] XXX not have?   ; response of the form:
  116.         What can a[n] XXX do?          ;      ZZZ1 ZZZ2 ZZZ3 ...
  117.         What can a[n] XXX not do?      ; in order to associate
  118.         What can a[n] XXX be?          ; attributes with the object.
  119.         What can a[n] XXX not be?
  120.  
  121. For queries on an object:
  122.  
  123.         What is a[n] XXX?
  124.         What are examples of a[n] YYY?
  125.         What does a[n] XXX have?
  126.         What does a[n] XXX not have?
  127.         What can a[n] XXX do?
  128.         What can a[n] XXX not do?
  129.         What can a[n] XXX be?
  130.         What can a[n] XXX not be?
  131.         Tell me about a[n] XXX.        ; Composite of the above.
  132.         Tell me all about a[n] XXX.    ; Even more comprehensive.
  133.  
  134. For queries about an attribute:
  135.  
  136.         What has ZZZ?
  137.         What does not have ZZZ?
  138.         What can ZZZ?
  139.         What cannot ZZZ?
  140.         What is ZZZ?
  141.         What is not ZZZ?
  142.  
  143. For a listing of objects and attributes in the network:
  144.  
  145.         What do you know?
  146.  
  147. For queries about associations:
  148.  
  149.         Is a[n] XXX a[n] YYY?          ; Gives YES or NO response.
  150.  
  151.         Does a[n] XXX have ZZZ?        ; These give YES, NO or
  152.         Can a[n] XXX ZZZ?              ;   I DON'T KNOW responses.
  153.         Is a[n] XXX ZZZ?
  154.  
  155. For explanations about associations:
  156.  
  157.         Why is a[n] XXX a[n] YYY?
  158.         Why does a[n] XXX have ZZZ?
  159.         Why does a[n] XXX not have ZZZ?
  160.         Why can a[n] XXX ZZZ?
  161.         Why can a[n] XXX not ZZZ?
  162.         Why is a[n] XXX ZZZ?
  163.         Why is a[n] XXX not ZZZ?
  164.  
  165. The program can handle queries on non-existent objects or attributes.
  166.  
  167. Capitalization of the first word of a command and terminating punctuation
  168. are not required.  Thus, `a lizard is a reptile' is acceptable.
  169.  
  170.  
  171. Potential Problems:
  172.  
  173. The program does not handle "improper" inputs well.  The above formats must
  174. be followed.
  175.  
  176. Circular relations are not detected, and can result in the program going
  177. into an infinite loop on some queries.  E.g., `An AAA is a BBB.', `A BBB is
  178. a CCC.', and `A CCC is an AAA.'.
  179.  
  180. Entering contrary data is not detected (e.g., an object both has and does
  181. not have an attribute), and will probably yield unusual results.
  182.  
  183. Once entered, data cannot be removed.
  184.  
  185. %
  186.