<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by Mike Dean (BBN Technologies / Verizon) -->
<!-- <!DOCTYPE rulebase SYSTEM "http://www.dfki.de/ruleml/dtd/ruleml-bindatalog.dtd"> -->
<!DOCTYPE rulebase SYSTEM "ruleml-datalog-standalone.dtd">
<rulebase label="gedcom-relations">
<!-- $Id: gedcom-relations.xml,v 1.9 2001/03/01 06:29:33 mdean Exp $ -->
<!-- The http://www.daml.org/2001/01/gedom/gedcom.daml ontology is based on the
existing Genealogical Data Communication (GEDCOM) data model,
which is essentially "normalized" with no information duplicated
between Individual and Family instances, but is not in the most
convenient form for many operations.
These rules express familiar family relationships.
It's hoped that they can be used in queries and other reasoning
applications as if they were defined directly as properties.
A minor note:  with GEDCOM one should assume that any given piece of
information could be missing (e.g. sex may not be known, and
determininig that 2 people are first
cousins shouldn't depend on knowing who their common grandparent is).
Relations in these rules refer to the childIn and spouseIn properties
in gedcom.daml or to other rules.
  -->
	<if label="parent">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#childIn</rel>
				<var>child</var>
				<var>family</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouseIn</rel>
				<var>parent</var>
				<var>family</var>
			</atom>
		</and>
	</if>
	<if label="father">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#father</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>parent</var>
				<ind>M</ind>
			</atom>
		</and>
	</if>
	<if label="mother">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#mother</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>parent</var>
				<ind>F</ind>
			</atom>
		</and>
	</if>
	<if label="child"> <!-- inverse property -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#child</rel>
			<var>parent</var>
			<var>child</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
	</if>
	<if label="son">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#son</rel>
			<var>parent</var>
			<var>child</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#child</rel>
				<var>parent</var>
				<var>child</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>child</var>
				<ind>M</ind>
			</atom>
		</and>
	</if>
	<if label="daughter">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#daughter</rel>
			<var>parent</var>
			<var>child</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#child</rel>
				<var>parent</var>
				<var>child</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>child</var>
				<ind>F</ind>
			</atom>
		</and>
	</if>
	<if label="grandparent">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
			<var>child</var>
			<var>grandparent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>parent</var>
				<var>grandparent</var>
			</atom>
		</and>
	</if>
	<if label="grandfather">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandfather</rel>
			<var>child</var>
			<var>grandmother</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
				<var>child</var>
				<var>grandparent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>grandparent</var>
				<ind>M</ind>
			</atom>
		</and>
	</if>
	<if label="grandmother">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandmother</rel>
			<var>child</var>
			<var>grandparent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
				<var>child</var>
				<var>grandparent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>grandparent</var>
				<ind>F</ind>
			</atom>
		</and>
	</if>
	<if label="grandchild"><!-- inverse property -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandchild</rel>
			<var>grandparent</var>
			<var>child</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
			<var>child</var>
			<var>grandparent</var>
		</atom>
	</if>
	<if label="grandson">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandson</rel>
			<var>grandparent</var>
			<var>child</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
				<var>child</var>
				<var>grandparent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>child</var>
				<ind>M</ind>
			</atom>
		</and>
	</if>
	<if label="granddaughter">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#granddaughter</rel>
			<var>child</var>
			<var>grandparent</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#grandparent</rel>
				<var>child</var>
				<var>grandparent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>child</var>
				<ind>F</ind>
			</atom>
		</and>
	</if>
	<if label="sibling"><!-- BUG:  need to also express child1 != child2 -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
			<var>child1</var>
			<var>child2</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#childIn</rel>
				<var>child1</var>
				<var>family</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#childIn</rel>
				<var>child2</var>
				<var>family</var>
			</atom>
		</and>
	</if>
	<if label="siblingSymmetric"><!-- symmetric property -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
			<var>child1</var>
			<var>child2</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
			<var>child2</var>
			<var>child1</var>
		</atom>
	</if>
	<if label="brother">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#brother</rel>
			<var>child</var>
			<var>sibling</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>child</var>
				<var>sibling</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>sibling</var>
				<ind>M</ind>
			</atom>
		</and>
	</if>
	<if label="sister">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#sister</rel>
			<var>child</var>
			<var>sibling</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>child</var>
				<var>sibling</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>sibling</var>
				<ind>F</ind>
			</atom>
		</and>
	</if>
	<if label="spouse"><!-- BUG:  need to also express spouse1 != spouse2 -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
			<var>spouse1</var>
			<var>spouse2</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouseIn</rel>
				<var>spouse1</var>
				<var>family</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouseIn</rel>
				<var>spouse2</var>
				<var>family</var>
			</atom>
		</and>
	</if>
	<if label="spouseSymmetric"><!-- symmetric property -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
			<var>spouse1</var>
			<var>spouse2</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
			<var>spouse2</var>
			<var>spouse1</var>
		</atom>
	</if>
	<if label="husband">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#husband</rel>
			<var>spouse</var>
			<var>husband</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
				<var>spouse</var>
				<var>husband</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>husband</var>
				<var>M</var>
			</atom>
		</and>
	</if>
	<if label="wife">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#wife</rel>
			<var>spouse</var>
			<var>wife</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
				<var>spouse</var>
				<var>wife</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sex</rel>
				<var>wife</var>
				<var>F</var>
			</atom>
		</and>
	</if>
	<if label="uncle1">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#uncle</rel>
			<var>child</var>
			<var>uncle</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#brother</rel>
				<var>parent</var>
				<var>uncle</var>
			</atom>
		</and>
	</if>
	<if label="uncle2">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#uncle</rel>
			<var>child</var>
			<var>uncle</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#aunt</rel>
				<var>child</var>
				<var>aunt</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
				<var>aunt</var>
				<var>uncle</var>
			</atom>
		</and>
	</if>
	<if label="aunt1">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#aunt</rel>
			<var>child</var>
			<var>aunt</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sister</rel>
				<var>parent</var>
				<var>aunt</var>
			</atom>
		</and>
	</if>
	<if label="aunt2">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#aunt</rel>
			<var>child</var>
			<var>aunt</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#uncle</rel>
				<var>child</var>
				<var>uncle</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#spouse</rel>
				<var>uncle</var>
				<var>aunt</var>
			</atom>
		</and>
	</if>
	<if label="niece">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#niece</rel>
			<var>sibling</var>
			<var>child</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#daughter</rel>
				<var>parent</var>
				<var>child</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>parent</var>
				<var>sibling</var>
			</atom>
		</and>
	</if>
	<if label="nephew">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#nephew</rel>
			<var>sibling</var>
			<var>child</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#son</rel>
				<var>parent</var>
				<var>child</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>parent</var>
				<var>sibling</var>
			</atom>
		</and>
	</if>
	<if label="firstCousin">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#firstCousin</rel>
			<var>cousin1</var>
			<var>cousin2</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>cousin1</var>
				<var>sibling1</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>cousin2</var>
				<var>sibling2</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>sibling1</var>
				<var>sibling2</var>
			</atom>
		</and>
	</if>
	<if label="ancestor1">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#ancestor</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
			<var>child</var>
			<var>parent</var>
		</atom>
	</if>
	<if label="ancestor2"><!-- recursive -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#ancestor</rel>
			<var>child</var>
			<var>ancestor</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#parent</rel>
				<var>child</var>
				<var>parent</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#ancestor</rel>
				<var>parent</var>
				<var>ancestor</var>
			</atom>
		</and>
	</if>
	<if label="descendent"><!-- inverse property -->
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#descendent</rel>
			<var>ancestor</var>
			<var>child</var>
		</atom>
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#ancestor</rel>
			<var>child</var>
			<var>ancestor</var>
		</atom>
	</if>
	<if label="cousin">
		<atom>
			<rel>http://www.daml.org/2001/01/gedcom/gedcom#cousin</rel>
			<var>descendent1</var>
			<var>descendent2</var>
		</atom>
		<and>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#sibling</rel>
				<var>sibling1</var>
				<var>sibling2</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#descendent</rel>
				<var>sibling1</var>
				<var>descendent1</var>
			</atom>
			<atom>
				<rel>http://www.daml.org/2001/01/gedcom/gedcom#descendent</rel>
				<var>sibling2</var>
				<var>descendent2</var>
			</atom>
		</and>
	</if>
	<!-- comment:  NOT seems to be required to specify stepchild (which also has temporal issues) -->
</rulebase>
