From Seo Wiki - Search Engine Optimization and Programming Languages
|Please help improve this article by expanding it. Further information might be found on the talk page. (April 2007)|
|Stable release||0.70.0 / December 3, 2008|
|Type||Text Structuring, Publishing, Search|
SiSU ("SiSU information Structuring Universe" or "Structured information, Serialized Units"), is a Unix command line-oriented framework for document structuring, publishing and search. Using markup applied to a document, SiSU can produce plain text, HTML, XHTML, XML, OpenDocument, LaTeX or PDF files, and populate an SQL database with objects (equating generally to paragraph-sized chunks) so searches may be performed and matches returned with that degree of granularity (e.g. your search criteria are met by these documents and at these locations within each document). Document output formats share a common object numbering system for locating content. This is particularly suitable for "published" works (finalized texts as opposed to works that are frequently changed or updated) for which it provides a fixed means of reference of content.
Summary of features
- documents are prepared in a single UTF-8 file using a minimalistic mnemonic syntax. Typical literature, documents like "War and Peace" require almost no markup, and most of the headers are optional.
- markup is easily readable/parsable by the human eye, (basic markup is simpler and more sparse than the most basic HTML), [this may also be converted to XML representations of the same input/source document].
- markup defines document structure (this may be done once in a header pattern-match description, or for heading levels individually); basic text attributes (bold, italics, underscore, strike-through etc.) as required; and semantic information related to the document (header information, extended beyond the Dublin core and easily further extended as required); the headers may also contain processing instructions.
- for output utilises established industry and institutionally accepted open standard formats.
- the outputs share a common numbering system that is meaningful (to man and machine) across all digital outputs whether paper, screen, or database oriented, (pdf, HTML, xml, sqlite, postgresql), this numbering system can be used to reference content.
- sql databases are populated at a paragraph level and become searchable at that level of granularity, the output information provides the object/paragraph numbers which are relevant across all generated outputs; it is also possible to look at just the matching paragraphs of the documents in the database; output indexing also work well with search indexing tools like HyperEstraier.
- there is a considerable degree of future-proofing, output representations are "upgradeable", and new document formats may be added.
- SQL search aside, documents are generated as required and static once generated.
- documents produced are static files, and may be batch processed, this needs to be done only once but may be repeated for various reasons as desired (updated content, addition of new output formats, updated technology document presentations/representations)
- document source (plaintext utf-8) if shared on the net may be used as input and processed locally to produce the different document outputs
- document source may be bundled together (automatically) with associated documents (multiple language versions or master document with inclusions) and images and sent as a zip file called a sisupod, if shared on the net these too may be processed locally to produce the desired document outputs
- generated document outputs may automatically be posted to remote sites.
- for basic document generation, the only software dependency is Ruby, and a few standard Unix tools (this covers plaintext, HTML, XML, ODF, LaTeX). To use a database you of course need that, and to convert the LaTeX generated to pdf, a latex processor like tetex or texlive.
- as a developers tool it is flexible and extensible
How it works
SiSU markup is fairly minimalistic, it consists of: a (largely optional) document header, made up of information about the document (such as when it was published, who authored it, and granting what rights) and any processing instructions; and markup within text which is related to document structure and typeface. SiSU must be able to discern the structure of a document, (text headings and their levels in relation to each other), either from information provided in the instruction header or from markup within the text (or from a combination of both). Processing is done against an abstraction of the document comprising of information on the document's structure and its objects, which the program serializes (providing the object numbers) and which are assigned hash sum values based on their content. This abstraction of information about document structure, objects, (and hash sums), provides considerable flexibility in representing documents different ways and for different purposes (e.g. search, document layout, publishing, content certification, concordance etc.), and makes it possible to take advantage of some of the strengths of established ways of representing documents, (or indeed to create new ones).
SiSU has been under development since 1997, and written in Ruby since 2000. It was released under the GPL in January 2005. SiSU developed out of work done on a project started earlier on documents related to (primarily private) international commercial law and international trade law started in 1993 on a site known then as Ananse, and more recently as LexMercatoria
Notes and references
- ↑ also chosen for the meaning of the Finnish term "sisu".
- ↑ objects are described more accurately below.
- ↑ outputs currently include: plaintext (utf-8), HTML, XML, ODF (open document format text), LaTeX, pdf, sql type databases, concordance files, document content certificates (md5 or sha256 digests of headings, paragraphs, images etc.), (currently postgresql and sqlite).
- ↑ objects include: headings, paragraphs, verse, tables, images, but not footnotes/endnotes which are numbered separately and tied to the object from which they are referenced.