diff options
Diffstat (limited to 'data')
-rw-r--r-- | data/domain/bibliography.osxml | 27 | ||||
-rw-r--r-- | data/domain/book.osxml | 31 | ||||
-rw-r--r-- | data/domain/comments.osxml | 40 | ||||
-rw-r--r-- | data/domain/headings.osxml | 33 | ||||
-rw-r--r-- | data/domain/lists.osxml | 26 | ||||
-rw-r--r-- | data/domain/meta.osxml | 47 | ||||
-rw-r--r-- | data/domain/structure.osxml | 3 | ||||
-rw-r--r-- | data/typesystem/affiliation.osxml | 10 | ||||
-rw-r--r-- | data/typesystem/email.osxml | 8 | ||||
-rw-r--r-- | data/typesystem/version.osxml | 8 |
10 files changed, 230 insertions, 3 deletions
diff --git a/data/domain/bibliography.osxml b/data/domain/bibliography.osxml new file mode 100644 index 0000000..11e2606 --- /dev/null +++ b/data/domain/bibliography.osxml @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<domain name="bibliography"> + + <import rel="domain" src="book"/> + <import rel="domain" src="meta"/> + + <struct name="bibliography" transparent="true"> + <field> + <childRef ref="bibEntry"/> + </field> + <parentRef ref="book"> + <field name="bibliography" isSubtree="true"/> + </parentRef> + </struct> + + <struct name="bibEntry"> + <primitive name="name" type="string" isSubtree="true"/> + <primitive name="year" type="int" isSubtree="true"/> + <primitive name="journal" type="string" isSubtree="true" optional="true"/> + <primitive name="pages" type="cardinality" isSubtree="true" optional="true"/> + <!-- Here a geographical enum or something would be more exact --> + <primitive name="location" type="string" isSubtree="true" optional="true"/> + <field name="authors" optional="true"> + <childRef ref="meta.author"/> + </field> + </struct> +</domain> diff --git a/data/domain/book.osxml b/data/domain/book.osxml index 9659334..8ec60ed 100644 --- a/data/domain/book.osxml +++ b/data/domain/book.osxml @@ -1,3 +1,34 @@ <?xml version="1.0" standalone="yes"?> <domain name="book"> + <struct name="book" cardinality="{1}" isRoot="true"> + <field> + <childRef ref="book.chapter"/> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="chapter"> + <field> + <childRef ref="book.section"/> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="section"> + <field> + <childRef ref="book.subsection"/> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="subsection"> + <field> + <childRef ref="book.paragraph"/> + </field> + </struct> + <struct name="paragraph" transparent="true"> + <field> + <childRef ref="book.text"/> + </field> + </struct> + <struct name="text" transparent="true"> + <primitive type="string"/> + </struct> </domain> diff --git a/data/domain/comments.osxml b/data/domain/comments.osxml new file mode 100644 index 0000000..cb19bd4 --- /dev/null +++ b/data/domain/comments.osxml @@ -0,0 +1,40 @@ +<?xml version="1.0" standalone="yes"?> +<domain name="comments"> + <import rel="domain" src="book"/> + + <!-- an annotation comment --> + <annotation name="comment"> + <field name="replies" isSubtree="true"> + <childRef ref="reply"/> + </field> + <field name="content"> + <childRef ref="book.paragraph"/> + </field> + </annotation> + + <!-- an point-like structure comment. --> + <struct name="comment"> + <!-- Is there a chance to prevent users from having to redefine these + two fields in comment and reply? Could we use a fieldRef here? + Or would that be circular? --> + <field name="replies" isSubtree="true"> + <childRef ref="reply"/> + </field> + <field name="content"> + <childRef ref="book.paragraph"/> + </field> + <parentRef ref="book.paragraph"> + <fieldRef ref="$default"/> + </parentRef> + </struct> + <!-- note that replies are organized in a tree fashion: One can also reply + to a reply --> + <struct name="reply"> + <field name="replies" isSubtree="true"> + <childRef ref="reply"/> + </field> + <field name="content"> + <childRef ref="book.paragraph"/> + </field> + </struct> +</domain> diff --git a/data/domain/headings.osxml b/data/domain/headings.osxml new file mode 100644 index 0000000..055a204 --- /dev/null +++ b/data/domain/headings.osxml @@ -0,0 +1,33 @@ +<?xml version="1.0" standalone="yes"?> +<domain name="headings"> + + <import rel="domain" src="book"/> + + <struct name="heading" cardinality="1" transparent="true"> + <!-- The parent mechanism is a curious thing. Remind yourself + that parent-child-relationship in this sense are mediated + by fields. So we must either reference a field that is + already there or declare a new one on the fly. --> + <parentRef ref="book.book"> + <field name="heading" isSubtree="true" optional="true"/> + </parentRef> + <parentRef ref="book.chapter"> + <field name="heading" isSubtree="true" optional="true"/> + </parentRef> + <parentRef ref="book.section"> + <field name="heading" isSubtree="true" optional="true"/> + </parentRef> + <parentRef ref="book.subsection"> + <field name="heading" isSubtree="true" optional="true"/> + </parentRef> + <parentRef ref="book.paragraph"> + <field name="heading" isSubtree="true" optional="true"/> + </parentRef> + <!-- regarding its fields we have a problem here. We do not want to + declare a new field, because in fact we want to allow every + bit of content that a paragraph would allow - also considering + possible extensions of paragraph by other domains. + So we need to reference the default field of paragraph. --> + <fieldRef ref="book.paragraph.$default"/> + </struct> +</domain> diff --git a/data/domain/lists.osxml b/data/domain/lists.osxml new file mode 100644 index 0000000..66e77cb --- /dev/null +++ b/data/domain/lists.osxml @@ -0,0 +1,26 @@ +<?xml version="1.0"?> +<domain name="lists"> + <import rel="domain" src="book"/> + + <struct name="ul" isa="book.paragraph"> + <!-- Here we solve the problem of parents using the isa + mechanism, because a list may occur whereever a paragraph + may occur. However we do want to override the default field. --> + <field> + <childRef name="item"/> + </field> + </struct> + <struct name="ol" isa="book.paragraph"> + <!-- Here we solve the problem of parents using the isa + mechanism, because a list may occur whereever a paragraph + may occur. However we do want to override the default field. --> + <field> + <childRef name="item"/> + </field> + </struct> + <struct name="item"> + <field> + <childRef name="book.paragaph"/> + </field> + </struct> +</domain> diff --git a/data/domain/meta.osxml b/data/domain/meta.osxml new file mode 100644 index 0000000..7e96699 --- /dev/null +++ b/data/domain/meta.osxml @@ -0,0 +1,47 @@ +<?xml version="1.0"?> +<domain name="meta"> + + <import rel="typesystem" src="affiliation"/> + <import rel="typesystem" src="email"/> + <import rel="typesystem" src="version"/> + <import rel="domain" src="book"/> + <import rel="domain" src="headings"/> + + <struct name="meta" cardinality="{1}" transparent="true"> + <field> + <childRef ref="title"/> + <childRef ref="author"/> + <childRef ref="version"/> + </field> + <parentRef ref="book"> + <field name="meta" isSubtree="true" optional="true"/> + </parentRef> + <parentRef ref="chapter"> + <field name="meta" isSubtree="true" optional="true"/> + </parentRef> + <!-- One could also include "article" and other things here --> + </struct> + + <!-- A title is just a heading --> + <struct name="title"> + <field> + <childRef ref="heading"/> + </field> + </struct> + + <!-- no explicit cardinality, because we might have multiple authors --> + <struct name="author"> + <primitive isSubtree="true" name="firstName" type="string"/> + <primitive isSubtree="true" name="lastName" type="string"/> + <primitive isSubtree="true" name="email" type="email" optional="true"/> + <primitive isSubtree="true" name="affiliation" type="affiliation" optional="true"/> + </struct> + + <!-- but we need at least one primary author --> + <struct name="primaryAuthor" cardinality="{>0}" isa="author"/> + + <!-- version intermediate struct --> + <struct name="version" cardinality="{0-1}"> + <primitive type="version"/> + </struct> +</domain> diff --git a/data/domain/structure.osxml b/data/domain/structure.osxml deleted file mode 100644 index 63d0c5c..0000000 --- a/data/domain/structure.osxml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" standalone="yes"?> -<domain name="structure"> -</domain> diff --git a/data/typesystem/affiliation.osxml b/data/typesystem/affiliation.osxml new file mode 100644 index 0000000..d84dc30 --- /dev/null +++ b/data/typesystem/affiliation.osxml @@ -0,0 +1,10 @@ +<?xml version="1.0" standalone="yes"?> +<typesystem name="affiliation"> + <struct name="affiliation"> + <field name="workgroup" type="string"/> + <field name="departement" type="string"/> + <field name="institution" type="string"/> + </struct> + + <constant name="citec.sc" type="affiliation" value="[workgroup=Semantic Computing Group,departement=Center of Excellence Cognitive Interaction Technology (CITEC), institution=Bielefeld University]"/> +</typesystem> diff --git a/data/typesystem/email.osxml b/data/typesystem/email.osxml new file mode 100644 index 0000000..325f89a --- /dev/null +++ b/data/typesystem/email.osxml @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="yes"?> +<typesystem name="email"> + <struct name="email"> + <field name="local" type="string"/> + <field name="domainName" type="string"/> + <field name="domainSuffix" type="string"/> + </struct> +</typesystem> diff --git a/data/typesystem/version.osxml b/data/typesystem/version.osxml new file mode 100644 index 0000000..0d52736 --- /dev/null +++ b/data/typesystem/version.osxml @@ -0,0 +1,8 @@ +<?xml version="1.0" standalone="yes"?> +<typesystem name="version"> + <struct name="version"> + <field name="major" type="int"/> + <field name="minor" type="int"/> + <field name="patch" type="int"/> + </struct> +</typesystem> |