#%% sisu object model: input # Name: SiSU information Structuring Universe - Structured information, Serialized Units # Author: Ralph Amissah # http://www.jus.uio.no/sisu # http://www.jus.uio.no/sisu/SiSU/download.html # Description: sisu object models in relaxNG metaverse model base # used for preliminary modeling, not definitive # Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Ralph Amissah # License: GPL 3 or later # Summary of GPL 3 # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the Free # Software Foundation; either version 3 of the License, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # more details. # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA # If you have Internet connection, the latest version of the GPL should be # available at these locations: # http://www.fsf.org/licenses/gpl.html # http://www.gnu.org/copyleft/gpl.html # http://www.jus.uio.no/sisu/gpl3.fsf # SiSU was first released to the public on January 4th 2005 # SiSU uses: # # Standard SiSU markup syntax, # Standard SiSU meta-markup syntax, and the # Standard SiSU object citation numbering and system # # © Ralph Amissah 1997, current 2006. # All Rights Reserved. #%% definitions # dublin core: element-semantic = element semantic { # dublin core: element title { text } & element creator { text }? & element subject { text }? & element description { text }? & element publisher { text }? & element contributor { text }? & element date { text }? & element date.created { text }? & element date.issued { text }? & element date.available { text }? & element date.valid { text }? & element date.modified { text }? & element type { text }? & element format { text }? & element identifier { text }? & element source { text }? & element relation { text }? & element coverage { text }? & element rights { text }? & element keywords { text }? # extended semantic metadata: & attribute subtitle { text }? & attribute illustrator { text }? & attribute translator { text }? & attribute prepared_by { text }? & attribute digitized_by { text }? & attribute language { text }? & attribute language.original { text }? & attribute classify.pg { text }? & attribute classify.isbn { text }? & attribute classify.dewey { text }? & attribute classify.loc { text }? & attribute prefix.a { text }? & attribute prefix.b { text }? & attribute suffix { text }? & attribute comments { text }? & attribute abstract { text }? # & attribute information { text }? & attribute contact { text }? & attribute links { text }? } element-processing = element processing { attribute structure { text }? & attribute level { text }? & attribute markup { text }? & attribute bold { text }? & attribute italics { text }? & attribute papersize { text }? & attribute vocabulary { text }? & element date_scheme { text }? & element date.issued.scheme { text }? & element date.available.scheme { text }? & element date.valid.scheme { text }? & element date.modified.scheme { text }? }? element-head = element head { # processing instructions, and semantic data, distinguish?: element metadata { element title { text }, element file { text }, element generator { text }, element-semantic, element-processing }+ } # body text/contents # includes etc. element-txt = element txt { text* & element b { text }* & element i { text }* & element u { text }* & element ins { text }* & element del { text }* } element-checksum.endnote = element checksum.clean { text } element-endnote = element endnote { element number { text }, element note { element-txt }+, element-checksum.endnote }+ element-checksum.para = element checksum.para { element checksum.clean { text }, element checksum.marked { text } } element-para = element para { # attribute paragraph_format { text }, element-txt+ & element-endnote? } element-object = element object { element-para, element-checksum.para } # object citation number, unique sequential number for objects: element-ocn = element ocn { text } element-object_structure_summary = element-ocn, # type: heading level value 1 -6, or normal text element type { text }, # type number: sequential number for designated type element type_number { text }, # type category: sequential number for designated category, e.g. sequentially counting all headers element category_number { text } element-external_space = element external_space { # ignored by sisu, provide program needs element program { # e.g. kdissert element name { text }, element xpos { text }, element ypos { text }, element font { text }, element outline_color { text }, element text_color { text }, element comment { text } }* }*, #%% structure element document { # document head: element-head, # document body: element body { # object, a unit of text, usually a paragraph with any associated endnotes element node { element structure { # structure document using either node:heading levels or node:heading relationships: # (i) sisu default uses node:heading levels (1-6 or A-C,1-3) to build document structure element level { text }?, # (ii) sisu alternatively could use node:heading relationship information to build document structure element node.id { text }, element node.parent { text }, element node.child { text }* }, element node.objects { element object.heading { element-object_structure_summary, # nametag used only in headings, especially important for segmented html element nametag { text }, element-object }, element object.para { element-object_structure_summary, element-object }* }+, element-external_space }+ } }