package Metamodel; package ATOM { class ATOM { !unique !ordered attr String[1] title; !unique !ordered attr String[1] ~id; !unique !ordered attr String subtitle; !unique !ordered attr String rights; !unique !ordered attr String icon; !unique !ordered attr String logo; !ordered val Link[+] links; !ordered val Date[1] lastUpdate; !ordered val Generator generator; !ordered val Category[*] categories; !ordered val Author[+] authors; !ordered val Contributor[*] contibutors; !ordered val Entry[*]#atom entries; } class Entry { !unique !ordered attr String[1] title; !unique !ordered attr String[1] ~id; !unique !ordered attr String rights; !unique !ordered attr String summary; !ordered val Link[+] links; !ordered val Source source; !ordered val Date published; !ordered val Date[1] lastUpdate; !ordered val Content content; !ordered val Category[*] categories; !ordered val Author[+] authors; !ordered val Contributor[*] contibutors; !ordered ref ATOM[1]#entries atom; } class Source { !unique !ordered attr String ~id; !unique !ordered attr String icon; !unique !ordered attr String logo; !unique !ordered attr String rights; !unique !ordered attr String title; !unique !ordered attr String subtitle; !ordered val Link[*] links; !ordered val Date lastUpdate; !ordered val Generator generator; !ordered val Contributor[*] contributors; !ordered val Category[*] categories; !ordered val Author author; } class Content { !unique !ordered attr String type; } class InLineXHTMLContent extends Content { } class InLineOtherContent extends Content { } class OutOfLineContent extends Content { !unique !ordered attr String[1] src; } class Generator { !unique !ordered attr String uri; !unique !ordered attr String version; } class Category { !unique !ordered attr String[1] term; !unique !ordered attr String scheme; !unique !ordered attr String label; } class Link { !unique !ordered attr String[1] href; !unique !ordered attr String rel; !unique !ordered attr String type; !unique !ordered attr String hreflang; !unique !ordered attr String title; !unique !ordered attr Integer lenght; } class Person { !unique !ordered attr String[1] name; !unique !ordered attr String uri; !unique !ordered attr String email; } class Author extends Person { } class Contributor extends Person { } class Date { !unique !ordered attr Integer[1] day; !unique !ordered attr Integer[1] month; !unique !ordered attr Integer[1] year; !unique !ordered attr Integer[1] hours; !unique !ordered attr Integer[1] minutes; !unique !ordered attr Integer[1] seconds; } } package PrimitiveTypes { datatype String : ""; datatype Integer : ""; }