FJK Home CPE/CSC 481 News Syllabus Schedule Lecture Notes Assignments Paper Project Teams Other Links
CPE/CSC 481 Knowledge-Based Systems Winter 2010

CPE/CSC 481-W10Knowledge-Based Systems Assignment 2: Family Knowledge Base

Points 25
DeadlineThu, Jan.28, 2010 end of lab

Goal

The goal of this assignment is to establish a knowledge base for extended families. It stores basic facts about the individuals that are part of the extended family, and some of the basic relationships between individuals in that family. It will be expanded further in the next assignment, where you will define additional relationships that allow the derivation of new knowledge from the knowledge base.

As an alternative to the family relationship domain, you can select something else with a similar structure: There should be a set of entities (similar to the persons) with relations (among each other), and at least some of the relations can be defined based on others. The individuals should have some properties, and need to be uniquely identifiable. If you choose to do that, please let me know in advance, and also adapt the description below accordingly.

Objectives

In particular, you should:

Description

Your task is to define templates for the following properties and relationships:

You may add other properties that you find relevant or interesting (e.g. weight, hair color, eye color, odd habits, ...). If you are not comfortable using your own family as an example, you can use other families for which such information is available (royalty usually has a wealth of information), or cartoon characters (the Simpsons are a good example of a reasonably large family; many other cartoon families are too small to be interesting). You can also add other relationships such as fiance, friend, business partner, etc., but it is probably better to keep it simple for now. Your family should span at least 20 individuals over four or more generations; if necessary, you can add fictitious individuals. Each individual must have at least one relationship, and on average each individual must have at least two instantiated properties.

Your program must be able to perform the following tasks:

  1. add additional members of the family
  2. specify their basic properties, and their basic relationships with other members of the family (at the time the member is added)
  3. modify properties and relationships of familiy members already entered (provide the information when a person is initially entered, and also have an option to add or modify properties or relationships afterwards)
  4. list all the properties of an individual (e.g. "What do we know about John?")
  5. select a property and list the individuals that match (e.g. "All individuals older than 18")

You can earn extra credit points by incorporating these aspects:

  1. identify individuals by reference instead of by name (e.g. "John's father" instead of "Jack")
  2. identify individuals that have certain combinations properties (e.g. "Who is older than twenty and taller than six feet?")
  3. answer queries about individuals that are in a particular relationship with an individual (e.g. "Who are John's siblings?")
  4. list the relationships of individuals (e.g. "What are John's relationships in the family?")

The emphasis here is not on an elegant way of interacting with the user, but the basic interaction with the knowledge base. You can use sequences of simple questions, numbered options to choose from, or other ways of exchanging information with the user.

Pointers to Additional Material

This assignment concentrates on two aspects of the CLIPS/Jess environment: The definition and use of facts, and basic interactions with the user. You can look at other simple CLIPS programs to get started with the interaction aspects. One of them is the animal guessing game, which uses a separate file ANIMAL.DAT to store information about the animals. Other examples are a wine advisor, and an implementation of the sticks game. These examples also come with the CLIPS package.

Especially for testing purposes, the batch command can be very helpful. Instead of having to enter information "manually", you can store the respective commands and inputs in a file. If you invoke CLIPS from the command line, you can also read a file directly with clips -f file-name. To capture the results of the test runs, you can use copy and paste, the redirection operator in a shell, or the dribble-on file-name / dribble-off commands in CLIPS.

Submission

This assignment must be submitted electronically via Blackboard's assignment submission feature. Details will be discussed in class.

You must submit the following items:

  1. A diagram of the family tree you are using (it doesn't have to be fancy; ASCII art or a reasonably legible hand-drawn one is fine).
  2. A file containing the knowledge base (facts) for the family tree. This file should specify the templates as well as the specific facts about the family.
  3. A file with at least one test run for each of the requested tasks.
  4. A README file with instructions for using your program.

Grading

I will use the following grading guidelines:

  1. 5 points for the tree diagram
  2. 5 points for the correct formulation of the templates, and the family facts
  3. 7 points for the test runs
  4. 3 points for the README file and documentation of the source code
FJK Home CPE/CSC 481 News Syllabus Schedule Lecture Notes Assignments Paper Project Teams Other Links
Assignment-2.html
last modified:
Wednesday, February, 3, 2010, 09:49:20 PST
© 2000-2024
Franz J. Kurfess