define # --- presents and workers --- entity present-blueprint, owns name, owns description, plays production:blueprint; entity elf, owns name, owns email @key, owns status @values("working", "retired"), plays production:builder, plays lives-in:being @card(0..1); relation production, relates builder @card(0..), relates blueprint @card(1), owns quantity-required @card(1), plays present-distribution:source; relation lives-in, relates location @card(1), relates being @card(1); # --- places and demographics --- entity region @abstract, owns name, plays lives-in:location; entity continent, sub region, plays location-contains:parent; entity country, sub region, plays location-contains:parent, plays location-contains:child, plays demographics:place @card(1); entity city, sub region, owns is-capital, owns city-population, plays location-contains:child; relation location-contains, relates parent, relates child @card(1); entity population-statistics, owns population, plays demographics:statistics @card(1); entity city-statistics, sub population-statistics; entity country-statistics, sub population-statistics, owns proportion-under-12; relation demographics, relates place, relates statistics; # --- travel plans --- # santa needs to plot a route to each country in the world # in addition, each country needs to be given a proportionate number of presents from each type of present # that covers the number of under 12s in the country entity santa-distribution-route, owns start-date @key, plays distribution-stop:route; relation distribution-stop, relates country @card(1), relates route @card(1), owns stop-number @card(1), plays present-distribution:distribution-stop; entity country, plays distribution-stop:country; relation present-distribution, relates distribution-stop @card(1), relates source @card(1); attribute start-date, value datetime; attribute is-capital, value boolean; attribute status, value string; attribute name, value string; attribute description, value string; attribute email, value string; attribute quantity-required, value integer; attribute population, value integer; attribute proportion-under-12, value double; attribute city-population, value integer; attribute stop-number, value integer;