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

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

Points 25
DeadlineThu, Jan. 22, 2009, 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 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 alread entered
  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. 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, either via the handin program on hornet to the grade480 account, or 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 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 Syllabus Schedule Lecture Notes Assignments Paper Project Teams Other Links
Assignment-2.shtml
last modified:
Thursday, January, 8, 2009, 09:41:24 PST
© 2000-2025
Franz J. Kurfess