Project

General

Profile

Task #401

Design the Book Data Model

Added by Luke Murphey over 11 years ago. Updated over 11 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Target version:
Start date:
08/31/2012
Due date:
% Done:

100%


Description

Here are some requirements:

Immediate requirements:
  1. Ability to display a particular verse
  2. Ability to display a particular chapter
  3. An outline of the book (section and sub-sections)
  4. Verse and chapters must be ordered
  5. Chapters need a name (the first chapter may be a preface or introduction, not "chapter one")
  6. Footnote support
Future requirements:
  1. Morphological parsing of individual words
  2. Ability to search contents

History

#1 Updated by Luke Murphey over 11 years ago

  • Description updated (diff)

#2 Updated by Luke Murphey over 11 years ago

There are a few ways to handle this:

  • Use SGML/XML: this provides formatting and the XML structure would allow morphological parsing data to be included. Searching doesn't really work unless using an XML database.
  • Use database model of chapter » verse » word: no formatting allowed but allows easy morphological parsing and seraching.

#3 Updated by Luke Murphey over 11 years ago

  • Status changed from New to In Progress

#4 Updated by Luke Murphey over 11 years ago

May want to redo the model such that the verses and chapters use a foreign key relation. This is necessary to make deletions of the work cascade to the verses and chapters.

See http://stackoverflow.com/questions/3937194/django-cascade-deletion-in-manytomanyrelation

#5 Updated by Luke Murphey over 11 years ago

I could use something like markdown in order to process the text to handle formatting, footnotes and even lemmatization. See https://github.com/trentm/python-markdown2#readme

#6 Updated by Luke Murphey over 11 years ago

I switched the models to use foreign keys so that the deletes cascade.

#7 Updated by Luke Murphey over 11 years ago

I am refactoring the models such that Section and Chapter models are replaced a single model that does both: Division.

#8 Updated by Luke Murphey over 11 years ago

The problem with the model that has verses foreign key to divisions is that it is difficult to find the lowest level of divisions. The lowest level of divisions are the ones that need to be used for chunking.

It may be necessary to have verses be a many-to-many field within Division objects. However, this means that verses will not be deleted when divisions are deleted.

#9 Updated by Luke Murphey over 11 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 0 to 100

This is now basically done. The model will be updated as necessary to support new functionality.

Also available in: Atom PDF