%%% the hierarchy predicate defines all relations between primitive and defined
%%% concepts.Syntax: hierarchy(Parent, Concept). Parent and Concept can be
%%% either primitive or defined, that doesn't matter.
%%% Note: all nodes and leaves are/have to be children of God.
hierarchy(god, rolling).
hierarchy(god, motor).
hierarchy(rolling, wheels).
hierarchy(wheels, smart).
hierarchy(motor, smart).
hierarchy(wheels, chariot).
hierarchy(wheels, skateboard).
%etc...

%%% Number restrictions define mininum and maximum interval for numeric properties
numberrestriction(wheels, capacity, 1:1500).
nuberrestriction(boat, capacity, 1:15000).

%%% Necessary properties for childnodes. If a certain primitive specifies
%%% a valuerestriction for a certain properties, then ALL of this
%%% primitive's children need to specify this property.
%%% syntax: valuerestriction(Parent, Property)
valuerestriction(boat, propellant).

%%% Wisdom Base

%%% this predicate defines properties of a concept. The parent nodes of
%%% a concept are defined elsewhere (hierarchy predicate).
%%% syntax: defined(Concept, Property, Value)
defined(enterprise, capacity, 452678).
defined(enterprise, propellant, anti-matter).
defined(enterprise, dateoforigin, 3503).
defined(enterprise, maxspeed, 300000).
defined(enterprise, target_audience, intergalactic_warriors).

defined(smart, capacity, 1.5).
defined(smart, propellant, gasoline).
defined(smart, dateoforigin, 2002). %fixme: correct year
defined(smart, maxspeed, 60).
defined(smart, target_audience, golf_players).

defined(gondola, capacity, 4).
defined(gondola, propellant, oars).
defined(gondola, dateoforigin, 1304).
defined(gondola, maxspeed, 10).
defined(gondola, target_audience, recently_married).

defined(chariot, capacity, 3).
defined(chariot, propellant, horsepower).
defined(chariot, dateoforigin, -517).
defined(chariot, maxspeed, 50).
defined(chariot, target_audience, none).

defined(skateboard, capacity, 1).
defined(skateboard, propellant, muscles).
defined(skateboard, dateoforigin, 1969).
defined(skateboard, maxspeed, 30).
defined(skateboard, target_audience, rebellious_youth).

%%%Note: God's properties are too good to be inherited.
%%% this predicate defines properties of a concept. The parent nodes of
%%% a concept are defined elsewhere (hierarchy predicate).
%%% syntax: primitive(Concept, Property, Value)
primitive(god, power, omnipotent).
primitive(god, knowledge, omniscient).
primitive(rolling, uses_brakes, yes).
primitive(wheels, terrain, land).
primitive(boat, terrain, water).
primitive(wheels, as_seen_in, dukes_of_hazard).
primitive(motor, harmful, yes).
primitive(boat, as_seen_in, the_love_boat).
%etc...
