<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Planning Document for libkeduvocdocument</title>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<meta name="title" content="Planning Document for libkeduvocdocument"/>
<meta name="generator" content="Org-mode"/>
<meta name="generated" content="2014-07-09T06:13-0400"/>
<meta name="author" content="Andreas Xavier"/>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<style type="text/css">
 <!--/*--><![CDATA[/*><!--*/
  html { font-family: Times, serif; font-size: 12pt; }
  .title  { text-align: center; }
  .todo   { color: red; }
  .done   { color: green; }
  .tag    { background-color: #add8e6; font-weight:normal }
  .target { }
  .timestamp { color: #bebebe; }
  .timestamp-kwd { color: #5f9ea0; }
  .right  {margin-left:auto; margin-right:0px;  text-align:right;}
  .left   {margin-left:0px;  margin-right:auto; text-align:left;}
  .center {margin-left:auto; margin-right:auto; text-align:center;}
  p.verse { margin-left: 3% }
  pre {
   border: 1pt solid #AEBDCC;
   background-color: #F3F5F7;
   padding: 5pt;
   font-family: courier, monospace;
        font-size: 90%;
        overflow:auto;
  }
  table { border-collapse: collapse; }
  td, th { vertical-align: top;  }
  th.right  { text-align:center;  }
  th.left   { text-align:center;   }
  th.center { text-align:center; }
  td.right  { text-align:right;  }
  td.left   { text-align:left;   }
  td.center { text-align:center; }
  dt { font-weight: bold; }
  div.figure { padding: 0.5em; }
  div.figure p { text-align: center; }
  div.inlinetask {
    padding:10px;
    border:2px solid gray;
    margin:10px;
    background: #ffffcc;
  }
  textarea { overflow-x: auto; }
  .linenr { font-size:smaller }
  .code-highlighted {background-color:#ffff00;}
  .org-info-js_info-navigation { border-style:none; }
  #org-info-js_console-label { font-size:10px; font-weight:bold;
                               white-space:nowrap; }
  .org-info-js_search-highlight {background-color:#ffff00; color:#000000;
                                 font-weight:bold; }
  /*]]>*/-->
</style>
<script type="text/javascript">
/*
@licstart  The following is the entire license notice for the
JavaScript code in this tag.

Copyright (C) 2012-2013 Free Software Foundation, Inc.

The JavaScript code in this tag is free software: you can
redistribute it and/or modify it under the terms of the GNU
General Public License (GNU GPL) as published by the Free Software
Foundation, either version 3 of the License, or (at your option)
any later version.  The code is distributed WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.

As additional permission under GNU GPL version 3 section 7, you
may distribute non-source (e.g., minimized or compacted) forms of
that code without the copy of the GNU GPL normally required by
section 4, provided you include this license notice and a URL
through which recipients can access the Corresponding Source.


@licend  The above is the entire license notice
for the JavaScript code in this tag.
*/
<!--/*--><![CDATA[/*><!--*/
 function CodeHighlightOn(elem, id)
 {
   var target = document.getElementById(id);
   if(null != target) {
     elem.cacheClassElem = elem.className;
     elem.cacheClassTarget = target.className;
     target.className = "code-highlighted";
     elem.className   = "code-highlighted";
   }
 }
 function CodeHighlightOff(elem, id)
 {
   var target = document.getElementById(id);
   if(elem.cacheClassElem)
     elem.className = elem.cacheClassElem;
   if(elem.cacheClassTarget)
     target.className = elem.cacheClassTarget;
 }
/*]]>*///-->
</script>

</head>
<body>

<div id="preamble">

</div>

<div id="content">
<h1 class="title">Planning Document for libkeduvocdocument</h1>



<hr/>


<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#sec-1">1 Overview</a></li>
<li><a href="#sec-2">2 License</a></li>
<li><a href="#sec-3">3 Conventions</a>
<ul>
<li><a href="#sec-3-1">3.1 Bullets</a></li>
<li><a href="#sec-3-2">3.2 Non English Words</a></li>
</ul>
</li>
<li><a href="#sec-4">4 Unshelved but credited notes</a>
<ul>
<li><a href="#sec-4-1">4.1 irc</a>
<ul>
<li><a href="#sec-4-1-1">4.1.1 Naming Conventions</a></li>
<li><a href="#sec-4-1-2">4.1.2 IDs of things</a></li>
<li><a href="#sec-4-1-3">4.1.3 Definitions</a></li>
<li><a href="#sec-4-1-4">4.1.4 File Formats</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-5">5 Typical Limits</a>
<ul>
<li><a href="#sec-5-1">5.1 Words</a>
<ul>
<li><a href="#sec-5-1-1">5.1.1 Words Min 0</a></li>
<li><a href="#sec-5-1-2">5.1.2 Words Max 1e6</a></li>
</ul>
</li>
<li><a href="#sec-5-2">5.2 File Size Max</a></li>
<li><a href="#sec-5-3">5.3 Number Practice events</a>
<ul>
<li><a href="#sec-5-3-1">5.3.1 Max 10,000 per day</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-6">6 Requirements</a>
<ul>
<li><a href="#sec-6-1">6.1 Common</a></li>
<li><a href="#sec-6-2">6.2 Parley</a>
<ul>
<li><a href="#sec-6-2-1">6.2.1 Language</a></li>
<li><a href="#sec-6-2-2">6.2.2 Other Knowlege</a></li>
<li><a href="#sec-6-2-3">6.2.3 </a></li>
</ul>
</li>
<li><a href="#sec-6-3">6.3 Kanagram</a>
<ul>
<li><a href="#sec-6-3-1">6.3.1 Language Requirements</a></li>
<li><a href="#sec-6-3-2">6.3.2 Unit/Lesson Requirements</a></li>
<li><a href="#sec-6-3-3">6.3.3 Assessment Requirements</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-7">7 Definitions</a></li>
<li><a href="#sec-8">8 File Formats</a>
<ul>
<li><a href="#sec-8-1">8.1 Text Based (XML etc.)</a></li>
<li><a href="#sec-8-2">8.2 Binary (database)</a></li>
<li><a href="#sec-8-3">8.3 Text index with archive of media files and/data base</a></li>
<li><a href="#sec-8-4">8.4 Text index with fetchable media</a></li>
<li><a href="#sec-8-5">8.5 Use a existing standard ODF / OPC</a></li>
</ul>
</li>
<li><a href="#sec-9">9 Individual File Bits</a>
<ul>
<li><a href="#sec-9-1">9.1 Overview</a></li>
<li><a href="#sec-9-2">9.2 Header Information</a>
<ul>
<li><a href="#sec-9-2-1">9.2.1 Title</a></li>
<li><a href="#sec-9-2-2">9.2.2 Author</a></li>
<li><a href="#sec-9-2-3">9.2.3 License</a></li>
<li><a href="#sec-9-2-4">9.2.4 Comment</a></li>
<li><a href="#sec-9-2-5">9.2.5 Category</a></li>
<li><a href="#sec-9-2-6">9.2.6 Version</a></li>
</ul>
</li>
<li><a href="#sec-9-3">9.3 Per Lexicon Header</a>
<ul>
<li><a href="#sec-9-3-1">9.3.1 Id</a></li>
<li><a href="#sec-9-3-2">9.3.2 Primary List Separator</a></li>
<li><a href="#sec-9-3-3">9.3.3 Secondary List Seprator</a></li>
<li><a href="#sec-9-3-4">9.3.4 Whitespace Character</a></li>
<li><a href="#sec-9-3-5">9.3.5 Ignore Extra Whitespace Bool</a></li>
<li><a href="#sec-9-3-6">9.3.6 Add an empty element character in case blank is a valid construct output</a></li>
<li><a href="#sec-9-3-7">9.3.7 Font</a></li>
<li><a href="#sec-9-3-8">9.3.8 Locale</a></li>
<li><a href="#sec-9-3-9">9.3.9 Grammar</a></li>
<li><a href="#sec-9-3-10">9.3.10 The words</a></li>
</ul>
</li>
<li><a href="#sec-9-4">9.4 Per Word</a>
<ul>
<li><a href="#sec-9-4-1">9.4.1 Id</a></li>
<li><a href="#sec-9-4-2">9.4.2 The word</a></li>
</ul>
</li>
<li><a href="#sec-9-5">9.5 Per Media Object</a>
<ul>
<li><a href="#sec-9-5-1">9.5.1 Id</a></li>
<li><a href="#sec-9-5-2">9.5.2 Type</a></li>
<li><a href="#sec-9-5-3">9.5.3 Location</a></li>
</ul>
</li>
<li><a href="#sec-9-6">9.6 Per Target/Cue set</a>
<ul>
<li><a href="#sec-9-6-1">9.6.1 Id</a></li>
<li><a href="#sec-9-6-2">9.6.2 Target Id</a></li>
<li><a href="#sec-9-6-3">9.6.3 List of cues</a></li>
</ul>
</li>
<li><a href="#sec-9-7">9.7 Unit/Lesson Header/Plan</a>
<ul>
<li><a href="#sec-9-7-1">9.7.1 Id</a></li>
<li><a href="#sec-9-7-2">9.7.2 Name</a></li>
<li><a href="#sec-9-7-3">9.7.3 Application/Tool</a></li>
</ul>
</li>
<li><a href="#sec-9-8">9.8 Per Unit/Lesson</a>
<ul>
<li><a href="#sec-9-8-1">9.8.1 Id</a></li>
<li><a href="#sec-9-8-2">9.8.2 Name</a></li>
<li><a href="#sec-9-8-3">9.8.3 Things to Practice</a></li>
<li><a href="#sec-9-8-4">9.8.4 Method to practice</a></li>
</ul>
</li>
<li><a href="#sec-9-9">9.9 Per Goal</a>
<ul>
<li><a href="#sec-9-9-1">9.9.1 Active Lessons</a></li>
<li><a href="#sec-9-9-2">9.9.2 Active Modes/Games</a></li>
<li><a href="#sec-9-9-3">9.9.3 Target Performance</a></li>
</ul>
</li>
<li><a href="#sec-9-10">9.10 Per Student</a>
<ul>
<li><a href="#sec-9-10-1">9.10.1 GUI stuff</a></li>
<li><a href="#sec-9-10-2">9.10.2 Assessment</a></li>
</ul>
</li>
<li><a href="#sec-9-11">9.11 Word Set</a>
<ul>
<li><a href="#sec-9-11-1">9.11.1 Id</a></li>
<li><a href="#sec-9-11-2">9.11.2 Name</a></li>
<li><a href="#sec-9-11-3">9.11.3 Word</a></li>
<li><a href="#sec-9-11-4">9.11.4 Word Set</a></li>
<li><a href="#sec-9-11-5">9.11.5 Constructed Set</a></li>
</ul>
</li>
<li><a href="#sec-9-12">9.12 Constructed Set Definition</a>
<ul>
<li><a href="#sec-9-12-1">9.12.1 Id</a></li>
<li><a href="#sec-9-12-2">9.12.2 Name</a></li>
<li><a href="#sec-9-12-3">9.12.3 Paramsets</a></li>
<li><a href="#sec-9-12-4">9.12.4 Regular Expression Element</a></li>
<li><a href="#sec-9-12-5">9.12.5 Basic</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-10">10 Example Files</a>
<ul>
<li><a href="#sec-10-1">10.1 XML</a>
<ul>
<li><a href="#sec-10-1-1">10.1.1 File to show use of constructed set in translation relationship</a></li>
<li><a href="#sec-10-1-2">10.1.2 File to show lesson planning for parley</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-11">11 External Facing API</a></li>
<li><a href="#sec-12">12 Todo Lists</a>
<ul>
<li><a href="#sec-12-1">12.1 Todo List Maintenance</a>
<ul>
<li><a href="#sec-12-1-1">12.1.1 Decide where this list resides and put it there</a></li>
</ul>
</li>
<li><a href="#sec-12-2">12.2 Library Maintenance</a>
<ul>
<li><a href="#sec-12-2-1">12.2.1 Decide on a library name and relocate the library</a></li>
</ul>
</li>
<li><a href="#sec-12-3">12.3 libkeduvocdocument</a>
<ul>
<li><a href="#sec-12-3-1">12.3.1 Diry Bit Clean up</a></li>
<li><a href="#sec-12-3-2">12.3.2 KVTML2 Clean up/Prep for Change</a></li>
<li><a href="#sec-12-3-3">12.3.3 Expand file lock into autosave feature</a></li>
<li><a href="#sec-12-3-4">12.3.4 Translate grammar from kvtml2 to new format</a></li>
<li><a href="#sec-12-3-5">12.3.5 </a></li>
</ul>
</li>
<li><a href="#sec-12-4">12.4 Parley</a>
<ul>
<li><a href="#sec-12-4-1">12.4.1 Move timed backup into vocdoc</a></li>
<li><a href="#sec-12-4-2">12.4.2 Why can't parley do conjugation, comparison etc with just 1 language?</a></li>
</ul></li>
</ul>
</li>
<li><a href="#sec-13">13 Unshelved Ideas</a>
<ul>
<li><a href="#sec-13-1">13.1 Add constructs to XML spec</a>
<ul>
<li><a href="#sec-13-1-1">13.1.1 Make translations standalone and then pair them with each other to create an entry</a></li>
<li><a href="#sec-13-1-2">13.1.2 Nest constructs</a></li>
<li><a href="#sec-13-1-3">13.1.3 Pass back parts of object</a></li>
<li><a href="#sec-13-1-4">13.1.4 Parse regexs</a></li>
</ul>
</li>
<li><a href="#sec-13-2">13.2 Add constructs read/write to kvocdoc objects</a>
<ul>
<li><a href="#sec-13-2-1">13.2.1 Create unit-tests for construct read/write</a></li>
<li><a href="#sec-13-2-2">13.2.2 Pass all unit-tests for read/write</a></li>
</ul>
</li>
<li><a href="#sec-13-3">13.3 Make xml to use constructs in lessons/units</a>
<ul>
<li><a href="#sec-13-3-1">13.3.1 Let lesson describe a subset of container inputs to a construct</a></li>
<li><a href="#sec-13-3-2">13.3.2 Let lesson restrict which games can be played with the constructs</a></li>
<li><a href="#sec-13-3-3">13.3.3 Let lesson restrict games played by performance</a></li>
</ul>
</li>
<li><a href="#sec-13-4">13.4 Add lesson constructs read/write to kvocdoc objects</a>
<ul>
<li><a href="#sec-13-4-1">13.4.1 Create unit-tests for construct read/write</a></li>
<li><a href="#sec-13-4-2">13.4.2 Pass all unit-tests for read/write</a></li>
</ul>
</li>
<li><a href="#sec-13-5">13.5 Consider how should performance be tracked for construct with hundreds to elements.</a></li>
<li><a href="#sec-13-6">13.6 Update parley to play games with constructs.</a></li>
<li><a href="#sec-13-7">13.7 Convert legacy version 1 and version 2 grammar objects to construct tree representation</a></li>
<li><a href="#sec-13-8">13.8 Convert legacy api to use the underlying constructs</a></li>
<li><a href="#sec-13-9">13.9 Break XML files into 3 parts in 3 files: definitions, lessons and practice data.</a>
<ul>
<li><a href="#sec-13-9-1">13.9.1 This allows multiple lesson plans to use 1 definiton file</a></li>
<li><a href="#sec-13-9-2">13.9.2 This allows multiple students/sessions to practice and track separate practice results.</a></li>
<li><a href="#sec-13-9-3">13.9.3 Make indexs words not numbers so that they are stable, student editable and referencable from other files.</a></li>
</ul>
</li>
<li><a href="#sec-13-10">13.10 Fix doxygen documentation syntax for sections in keduvocdocument.h</a></li>
<li><a href="#sec-13-11">13.11 Rename KEduVocTranslation to KEduVocLexeme</a></li>
</ul>
</li>
</ul>
</div>
</div>

<div id="outline-container-1" class="outline-2">
<h2 id="sec-1"><span class="section-number-2">1</span> Overview</h2>
<div class="outline-text-2" id="text-1">

<ul>
<li>Don't panic.
</li>
<li>The purpose of this document is two-fold:
<ul>
<li>To collect the requirements of all interested people
      , so that the file format and the api are open to hacking in future features.
</li>
<li>A concrete set of TODO lists
      Each item on a TODO should be short, clear, a day's hacking.
      I will aim for my TODO items to be unittest then add feature, that way both
      the old features and new features are tested and breakage is minimal, hopefully non-existent.

</li>
</ul>

</li>
<li>If I have failed to credit your idea, tell me and I will add you name.
    If I have butchered your idea, I can fix it or remove any attribution.

</li>
<li>The file format and the api can be expanded to encompass grammar.  There are 2 key bits:
<dl>
<dt>Relationships</dt><dd>Two or more words/phrases are associated by a relationship
</dd>
<dt>Constructs Sets</dt><dd>A generated set of words/phrases from the product of one or more sets of words.
</dd>
</dl>

<p>    Together they allow the generation of sophisticated grammatically correct phrases.  For a clearer
    understanding see the Definitions chapter and then the example XML file.
</p></li>
</ul>


</div>

</div>

<div id="outline-container-2" class="outline-2">
<h2 id="sec-2"><span class="section-number-2">2</span> License</h2>
<div class="outline-text-2" id="text-2">

<p>Copyright 2014 Andreas Xavier andxav@zoho.com
</p>
<p>
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 any later version accepted by the membership of
KDE e.V. (or its successor approved by the membership of KDE
e.V.), which shall act as a proxy defined in Section 14 of
version 3 of the license.
</p>
<p>
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.
</p>
<p>
You should have received a copy of the GNU General Public License
along with this program.  If not, see <a href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</a>.
</p>
</div>

</div>

<div id="outline-container-3" class="outline-2">
<h2 id="sec-3"><span class="section-number-2">3</span> Conventions</h2>
<div class="outline-text-2" id="text-3">


</div>

<div id="outline-container-3-1" class="outline-3">
<h3 id="sec-3-1"><span class="section-number-3">3.1</span> Bullets</h3>
<div class="outline-text-3" id="text-3-1">

<ul>
<li>+ bullet points are pro feature
</li>
<li>- bullet points are con/arguments against feature
</li>
<li>? are questions
</li>
</ul>

</div>

</div>

<div id="outline-container-3-2" class="outline-3">
<h3 id="sec-3-2"><span class="section-number-3">3.2</span> Non English Words</h3>
<div class="outline-text-3" id="text-3-2">

<p>   Please correct any mistakes in my German, or English.
   All non-English translation examples use words from this list :
</p><dl>
<dt>der Hund</dt><dd>the dog (German, word gender male)
</dd>
<dt>die Katze</dt><dd>the cat (German, word gender female)
</dd>
<dt>das Auto</dt><dd>the car (German, word gender neutral)
</dd>
<dt>ich</dt><dd>I (German, pronoun first person singular)
</dd>
<dt>du</dt><dd>you (German, pronoun second person )
</dd>
<dt>wir</dt><dd>I (German, pronoun first person plural)
</dd>
<dt>ihr</dt><dd>you all (German, pronoun second person plural) no real English equivalent
</dd>
</dl>



</div>
</div>

</div>

<div id="outline-container-4" class="outline-2">
<h2 id="sec-4"><span class="section-number-2">4</span> Unshelved but credited notes</h2>
<div class="outline-text-2" id="text-4">


</div>

<div id="outline-container-4-1" class="outline-3">
<h3 id="sec-4-1"><span class="section-number-3">4.1</span> irc</h3>
<div class="outline-text-3" id="text-4-1">


</div>

<div id="outline-container-4-1-1" class="outline-4">
<h4 id="sec-4-1-1"><span class="section-number-4">4.1.1</span> Naming Conventions</h4>
<div class="outline-text-4" id="text-4-1-1">

<ul>
<li id="sec-4-1-1-1">Library<br/>
<dl>
<dt>+ jpwhiting</dt><dd>Rename repo to libkvocdoc or libvocdoc
</dd>
<dt>- jpwhiting</dt><dd>Rename classes in the api (don't)
</dd>
</dl>

</li>
</ul>
<ul>
<li id="sec-4-1-1-2">File Format<br/>
<dl>
<dt>jpwhiting</dt><dd>Dont name it kvtml (kde vocabulary trainer meta language) it is historical
</dd>
<dt>+ jpwhiting</dt><dd>Rename repo to libkvocdoc or libvocdoc
</dd>
<dt>+ ingwa</dt><dd>Make it a global standard
</dd>
<dt>+ ingwa</dt><dd>Use an existing standard (ODF, OPC)
</dd>
</dl>

</li>
</ul>
</div>

</div>

<div id="outline-container-4-1-2" class="outline-4">
<h4 id="sec-4-1-2"><span class="section-number-4">4.1.2</span> IDs of things</h4>
<div class="outline-text-4" id="text-4-1-2">

<dl>
<dt>ingwa</dt><dd>can't be a word, because words aren't unique
</dd>
</dl>

</div>

</div>

<div id="outline-container-4-1-3" class="outline-4">
<h4 id="sec-4-1-3"><span class="section-number-4">4.1.3</span> Definitions</h4>
<div class="outline-text-4" id="text-4-1-3">

<dl>
<dt>ingwa :: relationship</dt><dd>awesome idea see below
</dd>
</dl>

</div>

</div>

<div id="outline-container-4-1-4" class="outline-4">
<h4 id="sec-4-1-4"><span class="section-number-4">4.1.4</span> File Formats</h4>
<div class="outline-text-4" id="text-4-1-4">

<dl>
<dt>jpwhiting</dt><dd>established dictionary formats DICT, XDF, dicML
</dd>
</dl>


</div>
</div>
</div>

</div>

<div id="outline-container-5" class="outline-2">
<h2 id="sec-5"><span class="section-number-2">5</span> Typical Limits</h2>
<div class="outline-text-2" id="text-5">

<p>  The limits in this section are for purposes of estimating typical performance.
  If the student works with typical numbers on typical hardware then they will have decent performance.
  None of the numbers is intended as a hard limit on the application (except 0 in obvious cases).
</p>
</div>

<div id="outline-container-5-1" class="outline-3">
<h3 id="sec-5-1"><span class="section-number-3">5.1</span> Words</h3>
<div class="outline-text-3" id="text-5-1">


</div>

<div id="outline-container-5-1-1" class="outline-4">
<h4 id="sec-5-1-1"><span class="section-number-4">5.1.1</span> Words Min 0</h4>
<div class="outline-text-4" id="text-5-1-1">

</div>

</div>

<div id="outline-container-5-1-2" class="outline-4">
<h4 id="sec-5-1-2"><span class="section-number-4">5.1.2</span> Words Max 1e6</h4>
<div class="outline-text-4" id="text-5-1-2">

<ol>
<li>I think that English has a maximum of 200e3 words so to avoid over-designing I'd say 1e6 is very fair.
       small vocab < 1000 words
       med/typical vocab 1000 < 10000 words
       large vocab < 1e6 words.
</li>
</ol>

</div>
</div>

</div>

<div id="outline-container-5-2" class="outline-3">
<h3 id="sec-5-2"><span class="section-number-3">5.2</span> File Size Max</h3>
<div class="outline-text-3" id="text-5-2">

<p>   ? reasonalbe download limit?
</p><ul>
<li>segmented file words all downloaded and media on demand/trickle down
</li>
</ul>




</div>

</div>

<div id="outline-container-5-3" class="outline-3">
<h3 id="sec-5-3"><span class="section-number-3">5.3</span> Number Practice events</h3>
<div class="outline-text-3" id="text-5-3">


</div>

<div id="outline-container-5-3-1" class="outline-4">
<h4 id="sec-5-3-1"><span class="section-number-4">5.3.1</span> Max 10,000 per day</h4>
<div class="outline-text-4" id="text-5-3-1">

<ul>
<li>1 hour/day * 1 sec/event = 3600
</li>
<li>? typical 100
</li>
</ul>



</div>
</div>
</div>

</div>

<div id="outline-container-6" class="outline-2">
<h2 id="sec-6"><span class="section-number-2">6</span> Requirements</h2>
<div class="outline-text-2" id="text-6">


</div>

<div id="outline-container-6-1" class="outline-3">
<h3 id="sec-6-1"><span class="section-number-3">6.1</span> Common</h3>
<div class="outline-text-3" id="text-6-1">

<ul>
<li>? Do we only want to support the smallest subset of features common to all language learning applications?
     In which case we are reduced to just storing words, cues for words and translations.
</li>
<li>? Do we also want to store lessons/units, goals and assessment/data/statistics which may be more application specific?
</li>
</ul>


</div>

</div>

<div id="outline-container-6-2" class="outline-3">
<h3 id="sec-6-2"><span class="section-number-3">6.2</span> Parley</h3>
<div class="outline-text-3" id="text-6-2">


</div>

<div id="outline-container-6-2-1" class="outline-4">
<h4 id="sec-6-2-1"><span class="section-number-4">6.2.1</span> Language</h4>
<div class="outline-text-4" id="text-6-2-1">

<ul>
<li id="sec-6-2-1-1">Existing Features<br/>
<ul>
<li>words
</li>
<li>sets of words for language a, b, c etc.
</li>
<li>lateral groups of words for translations i.e. dog <-> Hund
</li>
<li>grammar features (fixed)
<ul>
<li>gender
</li>
<li>conjugation
</li>
<li>special groups i.e. synonyms, antonyms
</li>
</ul>

</li>
<li>Assessment is Leitner boxes, with an extra 7 preGrades
<ul>
<li>stored per translation/expression
</li>
</ul>

</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-6-2-1-2">New Features<br/>
<ul>
<li>auto save managed by kvocdoc as it is the object that opens the file
</li>
<li>words are stored separately with their own id.  They can be used in multiple lessons,
       used as labels/names, used a parts of speech for grammar.
</li>
<li>parley lessons use relationships which enables:
<ul>
<li>Single language modes like comparison, synonym, homonyms, colors etc just work.  For example
         parley gets this relationship,  (colors, English, "red" "blue" "green"), for two way
         flash card training it can only
         show either (front = colors, back = red green blue) or (front = red green blue, back = colors)
</li>
</ul>

</li>
<li>grammar is no longer special, just a relationship tree with a root called grammar.
<ul>
<li>Obviously translating grammar from kvtml2 files to the new format must just work
</li>
</ul>

</li>
<li>build grammar
</li>
</ul>


<ul>
<li id="sec-6-2-1-2-1">Profiles<br/>
<ul>
<li>By separating the vocdoc into 5 sections : words, translation pairs, lesson/unit plans, goals and assessment/data/statistics we can more easily support student profiles.
</li>
<li>A student might have one master word file with many languages, a common set of visual cues, and language specific audio, mnemonic etc. cues
         and use it with different language A -> language  B lesson/unit plans.
</li>
<li>In bug 25248 Ansa describes scenarios where the student wants to focus on different goals
</li>
<li>Profiles for marking vocabulary to learn
</li>
<li>Profiles for choosing vocabulary to practise
</li>
</ul>


</li>
</ul>
<ul>
<li id="sec-6-2-1-2-2">Assessment/Data/Statistics<br/>
<ul>
<li>? Do we want to store this information with the words, with the lesson/units or on its own in the vocdoc or a seperate file?
<ul>
<li>- Storing it all in one files means that people will upload their assessments when they want to share vocab/lesson units, which is probably undesired
</li>
</ul>

</li>
<li>? If multiple files should each application manage it on its own.
</li>
<li>? Should parley store per mode/game data
<ul>
<li>- I don't think so as many modes/games test the same skill at different levels of cue difficulty. i.e. full written word is harder than word jumble.
</li>
<li>- Per mode/game data is very parley specific and not useful to other apps
</li>
</ul>

</li>
<li>? Should we store data or statistics
<ul>
<li>Data - processed statistics (i.e. leitner boxes) is app specific and the student can't change their mind on how to view their performance.
</li>
<li>Amount of data for heavy use = 10,000 events/day * 365 = 4e6 data items per year
</li>
</ul>

</li>
<li>Profiles for marking vocabulary to learn
</li>
</ul>

<ul>
<li id="sec-6-2-1-2-2-1">Types of Data<br/>
        In parley if we store data for recognition, production and spelling along with timestamps
        we can then generate statistics (like lietner boxes), time profiles, expected number of
        words to practice in the future etc.  We do not need to store the leitner box
<ul>
<li id="sec-6-2-1-2-2-1-1">Recognition<br/>
<ul>
<li>(bool, timestamp)
</li>
<li>I think boolean is acceptable here, but if we actually store the wrong answers we can automatically populate the false friends on a per student basis and do something(?) helpful with the data.
</li>
<li>in multiple choice the student is given der Hunde as a cue, they answer the dog, store 1 successful recognition of der Hunde with timestamp
</li>
<li>in multiple choice the student is given der Hunde as a cue, they answer the cat, store 1 failed recognition of der Hunde with timestamp
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-6-2-1-2-2-1-2">Production<br/>
<ul>
<li>(bool, timestamp)
</li>
<li>I think boolean is acceptable here, but if we actually store the wrong answers we can automatically populate the false friends on a per student basis and do something(?) helpful with the data.
</li>
<li>in multiple choice the student is given der Hunde as a cue, they answer the dog, store 1 successful production of the dog with timestamp
</li>
<li>in multiple choice the student is given der Hunde as a cue, they answer the cat, store 1 failed production of the dog  with timestamp
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-6-2-1-2-2-1-3">Spelling<br/>
<ul>
<li>(bool, incorrect word, timestamp)
</li>
<li>in written mode the student is given a picture of a dog  as a cue, they answer the dog, store 1 sucessful spelling with timestamp
</li>
<li>in written mode the student is given a picture of a dog  as a cue, they answer the dogge, store 1 failed spelling with dogge and  timestamp
</li>
</ul>


</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-6-2-1-2-1">Relevant Bugs<br/>
<dl>
<dt>Bug 317994 :: <a href="https://bugs.kde.org/show_bug.cgi?id=317994">https://bugs.kde.org/show_bug.cgi?id=317994</a></dt><dd>Entries in synonyms vies get lost when moving the vocabulary into another lesson
</dd>
<dt>Bug 278437 :: <a href="https://bugs.kde.org/show_bug.cgi?id=278437">https://bugs.kde.org/show_bug.cgi?id=278437</a></dt><dd>incorrect number of verbs displayed when in conjugation mode
</dd>
<dt>Bug 278438 :: <a href="https://bugs.kde.org/show_bug.cgi?id=278438">https://bugs.kde.org/show_bug.cgi?id=278438</a></dt><dd>Verbs in conjugation mode are not marked correctly after training
</dd>
<dt>Bug 310112 :: <a href="https://bugs.kde.org/show_bug.cgi?id=310112">https://bugs.kde.org/show_bug.cgi?id=310112</a></dt><dd>verbs duplicated in conjugation practise (times no. of personal pronouns)
</dd>
<dt>Bug 310127 :: <a href="https://bugs.kde.org/show_bug.cgi?id=310127">https://bugs.kde.org/show_bug.cgi?id=310127</a></dt><dd>after File/Save, next conjugation practice asks for unused conjugations
</dd>
<dt>Bug 311320 :: <a href="https://bugs.kde.org/show_bug.cgi?id=311320">https://bugs.kde.org/show_bug.cgi?id=311320</a></dt><dd>I can't configurate adverbs
</dd>
<dt>Bug 317993 :: <a href="https://bugs.kde.org/show_bug.cgi?id=317993">https://bugs.kde.org/show_bug.cgi?id=317993</a></dt><dd>It is not possible to mark 2 vocabularies in 2 different lesson as synonyms.
</dd>
<dt>Bug 164213 :: <a href="https://bugs.kde.org/show_bug.cgi?id=164213">https://bugs.kde.org/show_bug.cgi?id=164213</a></dt><dd>"Language properties" fields are too restrictive
</dd>
<dt>Bug 252482 :: <a href="https://bugs.kde.org/show_bug.cgi?id=252482">https://bugs.kde.org/show_bug.cgi?id=252482</a></dt><dd>Profiles for marking vocabulary to learn
</dd>
<dt>Bug 312955 :: <a href="https://bugs.kde.org/show_bug.cgi?id=312955">https://bugs.kde.org/show_bug.cgi?id=312955</a></dt><dd>Profiles for choosing vocabulary to practise
</dd>
<dt>Bug 252604 :: <a href="https://bugs.kde.org/show_bug.cgi?id=252604">https://bugs.kde.org/show_bug.cgi?id=252604</a></dt><dd>Additional statistical information
</dd>
<dt>Bug 257391 :: <a href="https://bugs.kde.org/show_bug.cgi?id=257391">https://bugs.kde.org/show_bug.cgi?id=257391</a></dt><dd>Add Question and Answer Practice
</dd>
<dt>Bug 273037 :: <a href="https://bugs.kde.org/show_bug.cgi?id=273037">https://bugs.kde.org/show_bug.cgi?id=273037</a></dt><dd>Make it possible for entries of words that have dual genders
</dd>
<dt>Bug 279512 :: <a href="https://bugs.kde.org/show_bug.cgi?id=279512">https://bugs.kde.org/show_bug.cgi?id=279512</a></dt><dd>wish: allow one word to be part of several lessons
</dd>
<dt>Bug 286728 :: <a href="https://bugs.kde.org/show_bug.cgi?id=286728">https://bugs.kde.org/show_bug.cgi?id=286728</a></dt><dd>Add prepositions to the type of words
</dd>
<dt>Bug 312955 :: <a href="https://bugs.kde.org/show_bug.cgi?id=312955">https://bugs.kde.org/show_bug.cgi?id=312955</a></dt><dd>Profiles for choosing vocabulary to practise
</dd>
<dt>Bug 191392 :: <a href="https://bugs.kde.org/show_bug.cgi?id=191392">https://bugs.kde.org/show_bug.cgi?id=191392</a></dt><dd>Proposed translation mode for verb conjugation…
</dd>
<dt>Bug 153012 :: <a href="https://bugs.kde.org/show_bug.cgi?id=153012">https://bugs.kde.org/show_bug.cgi?id=153012</a></dt><dd>More random questioning of conjugations
</dd>
<dt>Bug 153008 :: <a href="https://bugs.kde.org/show_bug.cgi?id=153008">https://bugs.kde.org/show_bug.cgi?id=153008</a></dt><dd>Save how a kvtml file or lesson was used the last time in the kvtml file
</dd>
<dt>Bug 156224 :: <a href="https://bugs.kde.org/show_bug.cgi?id=156224">https://bugs.kde.org/show_bug.cgi?id=156224</a></dt><dd>I need to seperate the single vocables in the exercises
</dd>
<dt>Bug 161004 :: <a href="https://bugs.kde.org/show_bug.cgi?id=161004">https://bugs.kde.org/show_bug.cgi?id=161004</a></dt><dd>Support for blocking in conjugation, article, and comparason training
</dd>
<dt>Bug 238259 :: <a href="https://bugs.kde.org/show_bug.cgi?id=238259">https://bugs.kde.org/show_bug.cgi?id=238259</a></dt><dd>synonyms are deleted when vocabularies are moved
</dd>
<dt>Bug 205261 :: <a href="https://bugs.kde.org/show_bug.cgi?id=205261">https://bugs.kde.org/show_bug.cgi?id=205261</a></dt><dd>can't properly specify multiple translations
</dd>
<dt>Bug 201572 :: <a href="https://bugs.kde.org/show_bug.cgi?id=201572">https://bugs.kde.org/show_bug.cgi?id=201572</a></dt><dd>Wish of new option in order to be able to disable full match in Practicing (Written type of test)
</dd>
<dt>Bug 170991 :: <a href="https://bugs.kde.org/show_bug.cgi?id=170991">https://bugs.kde.org/show_bug.cgi?id=170991</a></dt><dd>Konjugation with own grades
</dd>
<dt>Bug 164872 :: <a href="https://bugs.kde.org/show_bug.cgi?id=164872">https://bugs.kde.org/show_bug.cgi?id=164872</a></dt><dd>Can you make conjugations of regular verbs follow a pattern?
</dd>
<dt>Bug 254765 :: <a href="https://bugs.kde.org/show_bug.cgi?id=254765">https://bugs.kde.org/show_bug.cgi?id=254765</a></dt><dd>enhancement: enable multiple translations for one word
</dd>
<dt>Bug 177478 :: <a href="https://bugs.kde.org/show_bug.cgi?id=177478">https://bugs.kde.org/show_bug.cgi?id=177478</a></dt><dd>setting espagnol conjugaisons in Parley with groups of verbs
</dd>
<dt>Bug 152832 :: <a href="https://bugs.kde.org/show_bug.cgi?id=152832">https://bugs.kde.org/show_bug.cgi?id=152832</a></dt><dd>Support for non-personal tenses
</dd>
<dt>Bug 151383 :: <a href="https://bugs.kde.org/show_bug.cgi?id=151383">https://bugs.kde.org/show_bug.cgi?id=151383</a></dt><dd>Allow inflected forms in examples
</dd>
<dt>Bug 150127 :: <a href="https://bugs.kde.org/show_bug.cgi?id=150127">https://bugs.kde.org/show_bug.cgi?id=150127</a></dt><dd>Add declensions to Parley
</dd>
<dt>Bug 244664 :: <a href="https://bugs.kde.org/show_bug.cgi?id=244664">https://bugs.kde.org/show_bug.cgi?id=244664</a></dt><dd>Allow resizing fields
</dd>
<dt>???</dt><dd>
</dd>
</dl>


</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-6-2-1-3">Anti Features<br/>
<ul>
<li>Manage its own auto-save
</li>
<li>Hard coded grammar (pronouns)
</li>
<li>Words are only exported as lessons so they can't be in more thatn one lesson.
</li>
<li>Hard code grammar games (conjugation, declension).  There is no declension, case … .
       Any additional grammar requires code changes.
</li>
<li>
</li>
</ul>



</li>
</ul>
</div>

</div>

<div id="outline-container-6-2-2" class="outline-4">
<h4 id="sec-6-2-2"><span class="section-number-4">6.2.2</span> Other Knowlege</h4>
<div class="outline-text-4" id="text-6-2-2">

<ul>
<li id="sec-6-2-2-1">Existing Features<br/>
<ul>
<li>words
</li>
<li>sets of words for language a, b, c etc.
</li>
<li>lateral groups of words for translations
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-6-2-2-2">New Features<br/>
</li>
</ul>
<ul>
<li id="sec-6-2-2-3">Anti Features<br/>

</li>
</ul>
</div>

</div>

<div id="outline-container-6-2-3" class="outline-4">
<h4 id="sec-6-2-3"><span class="section-number-4">6.2.3</span> </h4>
<div class="outline-text-4" id="text-6-2-3">


</div>
</div>

</div>

<div id="outline-container-6-3" class="outline-3">
<h3 id="sec-6-3"><span class="section-number-3">6.3</span> Kanagram</h3>
<div class="outline-text-3" id="text-6-3">

<p>   I have compiled and looked at the new version, and it is a huge improvement on the old version.
   I need help compiling the requirements
</p>
</div>

<div id="outline-container-6-3-1" class="outline-4">
<h4 id="sec-6-3-1"><span class="section-number-4">6.3.1</span> Language Requirements</h4>
<div class="outline-text-4" id="text-6-3-1">

</div>

</div>

<div id="outline-container-6-3-2" class="outline-4">
<h4 id="sec-6-3-2"><span class="section-number-4">6.3.2</span> Unit/Lesson Requirements</h4>
<div class="outline-text-4" id="text-6-3-2">

</div>

</div>

<div id="outline-container-6-3-3" class="outline-4">
<h4 id="sec-6-3-3"><span class="section-number-4">6.3.3</span> Assessment Requirements</h4>
<div class="outline-text-4" id="text-6-3-3">



</div>
</div>
</div>

</div>

<div id="outline-container-7" class="outline-2">
<h2 id="sec-7"><span class="section-number-2">7</span> Definitions</h2>
<div class="outline-text-2" id="text-7">

<dl>
<dt>constructed set</dt><dd>A set of words/phrases contructed with one item for every product term (tuple) of its input sets.

<p>
       For example, in English for the verb to be, we can make a grid with two sides
</p><table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup><col class="left" /><col class="left" /><col class="left" /><col class="left" />
</colgroup>
<thead>
<tr><th scope="col" class="left"></th><th scope="col" class="left">First Person</th><th scope="col" class="left">Second Person</th><th scope="col" class="left">Third Person</th></tr>
</thead>
<tbody>
<tr><td class="left">Singular</td><td class="left">I am</td><td class="left">you are</td><td class="left">he/she/it is</td></tr>
<tr><td class="left">Plural</td><td class="left">we are</td><td class="left">you are</td><td class="left">they are</td></tr>
</tbody>
</table>


</dd>
<dt>constructed set (regex)</dt><dd>A set of words generated by a regular expression used to parse
      strings made of the product terms of its input sets.
      Now instead of having to provide a concrete phrase for each box we will
      provide a regular expression, and we get generalized grammar.

<p>
      For example, in English for the set of verbs to walk, to talk, to run and to help and the
      set of pronouns I, you , he, she, it, we, they we only need 2 regexs to produce all
      of the present tenses.  The regex is provided the pronoun and the infinitive
       separated by a ';', and we only need 2 regexs to do all of the present tenses.
</p><table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">
<colgroup><col class="left" /><col class="left" /><col class="left" /><col class="left" /><col class="left" />
</colgroup>
<thead>
<tr><th scope="col" class="left"></th><th scope="col" class="left">Example input</th><th scope="col" class="left">Regular expression</th><th scope="col" class="left">Replacement expression</th><th scope="col" class="left">Example output</th></tr>
</thead>
<tbody>
<tr><td class="left">I, you, we, they</td><td class="left">"I;to walk"</td><td class="left">(\*.);to (\*.)</td><td class="left">\1 \2</td><td class="left">"I walk"</td></tr>
<tr><td class="left">he, she, it</td><td class="left">"she;to walk"</td><td class="left">(\*.);to (\*.)</td><td class="left">\1 \2s</td><td class="left">"she walks"</td></tr>
</tbody>
</table>


<p>
      I think that this will generalize to much of the grammar of
       proto-indo-european language, but I have no idea if it will work for anything else.
</p>
<p>
       The cool thing is constructed sets generate sets, which can be used as inputs to other constructed sets.
</p>
</dd>
<dt>cue</dt><dd>a question/word(s)/media file(s)/hint(s)/mnemonic(s) to quide the student towards an answer
</dd>
<dt>known word</dt><dd>For language learning this is the mother tongue word.  For other learning this is the known concept.
</dd>
<dt>lexeme</dt><dd>a word the lowest unit in kvocdoc
               Perhaps lexemes are only target words, words with cues.  Other words could be paraphrases, labels or cues
               but only target words can be answers.
</dd>
<dt>lexicon</dt><dd>An index of words.  I chose this to avoid overloading the word dictionary which has programming implications.
</dd>
<dt>production</dt><dd>the student answers with the target word given a cue
</dd>
<dt>recognition</dt><dd>the student answers with the known word given the target word as a cue.
</dd>
<dt>relationship</dt><dd>Two or more words are associated by a relationship.  :ingwa:
         There is word, a set of words and a name for the relationship.
         For example (relationship, single word, set of words)
         , (verbs of , English, ["to walk", "to run", "to talk"])
         , (pronouns, English, [I, you, he])
         , (colors, English, [red, green, blue])
         , (translates, "the dog", ["der Hund"])
</dd>
<dt>target word</dt><dd>For language learning this is usually the foreign word.
                   For learning sign language it might be an image.
</dd>
</dl>



</div>

</div>

<div id="outline-container-8" class="outline-2">
<h2 id="sec-8"><span class="section-number-2">8</span> File Formats</h2>
<div class="outline-text-2" id="text-8">


</div>

<div id="outline-container-8-1" class="outline-3">
<h3 id="sec-8-1"><span class="section-number-3">8.1</span> Text Based (XML etc.)</h3>
<div class="outline-text-3" id="text-8-1">

<ul>
<li>maximum hackability encourages the advanced student to get involved
</li>
<li>inefficient, but I don't think this matters even phones can manage a typical vocab in all text
</li>
</ul>

</div>

</div>

<div id="outline-container-8-2" class="outline-3">
<h3 id="sec-8-2"><span class="section-number-3">8.2</span> Binary (database)</h3>
<div class="outline-text-3" id="text-8-2">

<ul>
<li>indexed, fast sortable and searchable (editors or large sets care, students don't)
</li>
<li>opaque to the student
</li>
</ul>

</div>

</div>

<div id="outline-container-8-3" class="outline-3">
<h3 id="sec-8-3"><span class="section-number-3">8.3</span> Text index with archive of media files and/data base</h3>
<div class="outline-text-3" id="text-8-3">

<ul>
<li>hackable if it is very robust to discrepancies between text and archive.  (Side with text)
</li>
<li>larger
</li>
</ul>

</div>

</div>

<div id="outline-container-8-4" class="outline-3">
<h3 id="sec-8-4"><span class="section-number-3">8.4</span> Text index with fetchable media</h3>
<div class="outline-text-3" id="text-8-4">

<ul>
<li>hackable
</li>
<li>needs internet
</li>
</ul>



</div>

</div>

<div id="outline-container-8-5" class="outline-3">
<h3 id="sec-8-5"><span class="section-number-3">8.5</span> Use a existing standard ODF / OPC    <span class="tag"><span class="ingwa">ingwa</span></span></h3>
<div class="outline-text-3" id="text-8-5">

<ul>
<li>+ Existing readers/writers and easier adoption
</li>
</ul>



</div>
</div>

</div>

<div id="outline-container-9" class="outline-2">
<h2 id="sec-9"><span class="section-number-2">9</span> Individual File Bits</h2>
<div class="outline-text-2" id="text-9">


</div>

<div id="outline-container-9-1" class="outline-3">
<h3 id="sec-9-1"><span class="section-number-3">9.1</span> Overview</h3>
<div class="outline-text-3" id="text-9-1">

<ul>
<li>Make all ids strings, file and type unique
<ul>
<li>Order no longer matters
</li>
<li>make the code generated ids stable with small edits and
      meaningful, easy to guess for humans. Don't use just numbers.
</li>
</ul>

</li>
</ul>

</div>

</div>

<div id="outline-container-9-2" class="outline-3">
<h3 id="sec-9-2"><span class="section-number-3">9.2</span> Header Information</h3>
<div class="outline-text-3" id="text-9-2">

<ul>
<li>Copied from kvtml2
</li>
<li>- We should drop elements that have never been used like category?
</li>
</ul>


</div>

<div id="outline-container-9-2-1" class="outline-4">
<h4 id="sec-9-2-1"><span class="section-number-4">9.2.1</span> Title</h4>
<div class="outline-text-4" id="text-9-2-1">

<ul>
<li id="sec-9-2-1-1">optional<br/>
<ul>
<li>use the filename when the student saves the file
</li>
<li>use a random temp file for  auto saves before first save
</li>
</ul>

</li>
</ul>
</div>

</div>

<div id="outline-container-9-2-2" class="outline-4">
<h4 id="sec-9-2-2"><span class="section-number-4">9.2.2</span> Author</h4>
<div class="outline-text-4" id="text-9-2-2">

<ul>
<li id="sec-9-2-2-1">optional<br/>

</li>
</ul>
</div>

</div>

<div id="outline-container-9-2-3" class="outline-4">
<h4 id="sec-9-2-3"><span class="section-number-4">9.2.3</span> License</h4>
<div class="outline-text-4" id="text-9-2-3">

<ul>
<li id="sec-9-2-3-1">optional<br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-2-4" class="outline-4">
<h4 id="sec-9-2-4"><span class="section-number-4">9.2.4</span> Comment</h4>
<div class="outline-text-4" id="text-9-2-4">

<ul>
<li id="sec-9-2-4-1">optional<br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-2-5" class="outline-4">
<h4 id="sec-9-2-5"><span class="section-number-4">9.2.5</span> Category</h4>
<div class="outline-text-4" id="text-9-2-5">

<ul>
<li id="sec-9-2-5-1">optional<br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-2-6" class="outline-4">
<h4 id="sec-9-2-6"><span class="section-number-4">9.2.6</span> Version</h4>
<div class="outline-text-4" id="text-9-2-6">

<ul>
<li>? Trying to think of ways to stabilize the multiple file cross-file id problem.
      The lesson plan needs a way to determine if a given set of words still has the same
      ids as when the lesson plan was created.
</li>
</ul>


<ul>
<li id="sec-9-2-6-1">optional<br/>

</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-3" class="outline-3">
<h3 id="sec-9-3"><span class="section-number-3">9.3</span> Per Lexicon Header</h3>
<div class="outline-text-3" id="text-9-3">

<ul>
<li>Corresponds to the kvtml2 indentifier
</li>
<li>Corresponds to human languages
</li>
<li>Corresponds to concept areas (i.e heraldic flags, boating flags)
</li>
</ul>


</div>

<div id="outline-container-9-3-1" class="outline-4">
<h4 id="sec-9-3-1"><span class="section-number-4">9.3.1</span> Id</h4>
<div class="outline-text-4" id="text-9-3-1">

<ul>
<li>human readable (i.e. not just a number)
</li>
</ul>

</div>

</div>

<div id="outline-container-9-3-2" class="outline-4">
<h4 id="sec-9-3-2"><span class="section-number-4">9.3.2</span> Primary List Separator</h4>
<div class="outline-text-4" id="text-9-3-2">

<ul>
<li>default ","
</li>
<li>If it is a regex special charactor does this kill constructs/ lead to a warning
</li>
<li>I need to seperate the single vocables in the exercises
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-3" class="outline-4">
<h4 id="sec-9-3-3"><span class="section-number-4">9.3.3</span> Secondary List Seprator</h4>
<div class="outline-text-4" id="text-9-3-3">

<ul>
<li>default ";"
</li>
<li>If the secondary list separator is used in a list then the primary list separator is a regular character
</li>
<li>If it is a regex special charactor does this kill constructs/ lead to a warning
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-4" class="outline-4">
<h4 id="sec-9-3-4"><span class="section-number-4">9.3.4</span> Whitespace Character</h4>
<div class="outline-text-4" id="text-9-3-4">

<ul>
<li>default ' '
</li>
<li>If it is a regex special charactor does this kill constructs/ lead to a warning
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-5" class="outline-4">
<h4 id="sec-9-3-5"><span class="section-number-4">9.3.5</span> Ignore Extra Whitespace Bool</h4>
<div class="outline-text-4" id="text-9-3-5">

<ul>
<li>default true
</li>
<li>If it is a regex special charactor does this kill constructs/ lead to a warning
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-6" class="outline-4">
<h4 id="sec-9-3-6"><span class="section-number-4">9.3.6</span> Add an empty element character in case blank is a valid construct output</h4>
<div class="outline-text-4" id="text-9-3-6">

<ul>
<li>? Could use a tag on the construct outputs
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-7" class="outline-4">
<h4 id="sec-9-3-7"><span class="section-number-4">9.3.7</span> Font</h4>
<div class="outline-text-4" id="text-9-3-7">

<ul>
<li>Allows each language to be displayed approriately
</li>
<li>- I don't like putting gui stuff, which could morph into per student settings in a common data file
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-8" class="outline-4">
<h4 id="sec-9-3-8"><span class="section-number-4">9.3.8</span> Locale</h4>
<div class="outline-text-4" id="text-9-3-8">

</div>

</div>

<div id="outline-container-9-3-9" class="outline-4">
<h4 id="sec-9-3-9"><span class="section-number-4">9.3.9</span> Grammar</h4>
<div class="outline-text-4" id="text-9-3-9">

<ul>
<li>Indicates the root of the grammar relationship tree for this lexicon
</li>
</ul>


</div>

</div>

<div id="outline-container-9-3-10" class="outline-4">
<h4 id="sec-9-3-10"><span class="section-number-4">9.3.10</span> The words</h4>
<div class="outline-text-4" id="text-9-3-10">

<ul>
<li>all the words in this lexicon
</li>
<li>words can be in more than one lexicon (i.e. also is word in both English and German)
</li>
</ul>



</div>
</div>

</div>

<div id="outline-container-9-4" class="outline-3">
<h3 id="sec-9-4"><span class="section-number-3">9.4</span> Per Word</h3>
<div class="outline-text-3" id="text-9-4">


</div>

<div id="outline-container-9-4-1" class="outline-4">
<h4 id="sec-9-4-1"><span class="section-number-4">9.4.1</span> Id</h4>
<div class="outline-text-4" id="text-9-4-1">

<ul>
<li>human readable (i.e. not just a number)
</li>
<li>stable across files/load edit and save, so that we can splice off
      units/lessons, goals, assesment/data/statistics into separate files.
</li>
</ul>


</div>

</div>

<div id="outline-container-9-4-2" class="outline-4">
<h4 id="sec-9-4-2"><span class="section-number-4">9.4.2</span> The word</h4>
<div class="outline-text-4" id="text-9-4-2">



</div>
</div>

</div>

<div id="outline-container-9-5" class="outline-3">
<h3 id="sec-9-5"><span class="section-number-3">9.5</span> Per Media Object</h3>
<div class="outline-text-3" id="text-9-5">


</div>

<div id="outline-container-9-5-1" class="outline-4">
<h4 id="sec-9-5-1"><span class="section-number-4">9.5.1</span> Id</h4>
<div class="outline-text-4" id="text-9-5-1">

</div>

</div>

<div id="outline-container-9-5-2" class="outline-4">
<h4 id="sec-9-5-2"><span class="section-number-4">9.5.2</span> Type</h4>
<div class="outline-text-4" id="text-9-5-2">

<ul>
<li>Audio/Image/Video
</li>
</ul>

</div>

</div>

<div id="outline-container-9-5-3" class="outline-4">
<h4 id="sec-9-5-3"><span class="section-number-4">9.5.3</span> Location</h4>
<div class="outline-text-4" id="text-9-5-3">



</div>
</div>

</div>

<div id="outline-container-9-6" class="outline-3">
<h3 id="sec-9-6"><span class="section-number-3">9.6</span> Per Target/Cue set</h3>
<div class="outline-text-3" id="text-9-6">


</div>

<div id="outline-container-9-6-1" class="outline-4">
<h4 id="sec-9-6-1"><span class="section-number-4">9.6.1</span> Id</h4>
<div class="outline-text-4" id="text-9-6-1">

</div>

</div>

<div id="outline-container-9-6-2" class="outline-4">
<h4 id="sec-9-6-2"><span class="section-number-4">9.6.2</span> Target Id</h4>
<div class="outline-text-4" id="text-9-6-2">

</div>

</div>

<div id="outline-container-9-6-3" class="outline-4">
<h4 id="sec-9-6-3"><span class="section-number-4">9.6.3</span> List of cues</h4>
<div class="outline-text-4" id="text-9-6-3">

<ul>
<li>? Use the list order as a rating from easiest/most helpful to hardest cue ?
</li>
</ul>

<ul>
<li id="sec-9-6-3-1">word/media id<br/>
</li>
</ul>
<ul>
<li id="sec-9-6-3-2">Type<br/>
<ul>
<li>string
</li>
<li>is tool/application specific Parley already uses a great variety
       (hint, mnemonic, sound, image, paraphrase, pronunciation)
</li>
<li>
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-9-6-3-3">Rating<br/>
<ul>
<li>Maybe we want to allow rating the cues, so that they can be filtered in the lessons
</li>
</ul>



</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-7" class="outline-3">
<h3 id="sec-9-7"><span class="section-number-3">9.7</span> Unit/Lesson Header/Plan</h3>
<div class="outline-text-3" id="text-9-7">


</div>

<div id="outline-container-9-7-1" class="outline-4">
<h4 id="sec-9-7-1"><span class="section-number-4">9.7.1</span> Id</h4>
<div class="outline-text-4" id="text-9-7-1">

<ul>
<li>unique among lesson plans
</li>
<li>This allows multiple lessons in the same vocdoc to target a common set of lexicons
</li>
</ul>

</div>

</div>

<div id="outline-container-9-7-2" class="outline-4">
<h4 id="sec-9-7-2"><span class="section-number-4">9.7.2</span> Name</h4>
<div class="outline-text-4" id="text-9-7-2">

<ul>
<li>for the student
</li>
</ul>

</div>

</div>

<div id="outline-container-9-7-3" class="outline-4">
<h4 id="sec-9-7-3"><span class="section-number-4">9.7.3</span> Application/Tool</h4>
<div class="outline-text-4" id="text-9-7-3">

<ul>
<li>Name of the tool this lesson plan targets
</li>
</ul>



</div>
</div>

</div>

<div id="outline-container-9-8" class="outline-3">
<h3 id="sec-9-8"><span class="section-number-3">9.8</span> Per Unit/Lesson</h3>
<div class="outline-text-3" id="text-9-8">


</div>

<div id="outline-container-9-8-1" class="outline-4">
<h4 id="sec-9-8-1"><span class="section-number-4">9.8.1</span> Id</h4>
<div class="outline-text-4" id="text-9-8-1">

<ul>
<li>unique among lessons
</li>
</ul>

</div>

</div>

<div id="outline-container-9-8-2" class="outline-4">
<h4 id="sec-9-8-2"><span class="section-number-4">9.8.2</span> Name</h4>
<div class="outline-text-4" id="text-9-8-2">

<ul>
<li>title for the student
</li>
</ul>

</div>

</div>

<div id="outline-container-9-8-3" class="outline-4">
<h4 id="sec-9-8-3"><span class="section-number-4">9.8.3</span> Things to Practice</h4>
<div class="outline-text-4" id="text-9-8-3">

<ul>
<li>Parley needs a set of relationships (tranlates, synonyms, conjugates, phrases etc.)
<ul>
<li>Use an already named set of relationships
</li>
<li>Construct a set of relationships in place
</li>
</ul>

</li>
<li>Other applications (Kanagram) probably just needs a set of words
</li>
</ul>


</div>

</div>

<div id="outline-container-9-8-4" class="outline-4">
<h4 id="sec-9-8-4"><span class="section-number-4">9.8.4</span> Method to practice</h4>
<div class="outline-text-4" id="text-9-8-4">

<ul>
<li>? app specific
</li>
</ul>

<ul>
<li id="sec-9-8-4-1">Filter Mode/Games<br/>
<ul>
<li>This allows the lesson planner to decide how to use modes for best effect:
<ul>
<li>In lesson 1 only use flashcards
</li>
<li>Always use flashcards or multiple choice for words with less than 30% recognition
</li>
<li>Never use flashcards or multiple choice for words with greater than 50% recognition
</li>
<li>Always use anangram and written word for words with production greater than 30%
</li>
<li>etc.
</li>
</ul>

</li>
<li>Obviously, we can try to come up with a set of default setting that use the
       standard modes/games in an intelligent fashion so that most students/lesson planners
       never need to fiddle with this settting.
</li>
</ul>


<ul>
<li id="sec-9-8-4-1-1">Enable Mode bool<br/>
      Hard cutoff On/Off
</li>
</ul>
<ul>
<li id="sec-9-8-4-1-2">Mode Threshold<br/>
<ul>
<li>Low Threshold recognition/production/spelling
</li>
<li>High Threshold
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-9-8-4-1-3">Construction Threshold<br/>
<ul>
<li>lower threshold before words are used in contructed words/phrases
<ul>
<li>Once "he" and "to walk" hit 20% recognition, start asking about
          the constructed answer "he walks"
</li>
</ul>

</li>
<li>Low Threshold recognition/production/spelling
</li>
</ul>



</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-9-8-4-2">Filter Cues<br/>
<ul>
<li id="sec-9-8-4-2-1">Bool Based<br/>
<ul>
<li>enable/disable types of cues
</li>
<li>- since the types are string based with hand editting this is succecptible to mis-typed types
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-9-8-4-2-2">Assessment Based<br/>
<ul>
<li>enable or disable based on current recognition/production/spelling performance
</li>
</ul>



</li>
</ul>
</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-9" class="outline-3">
<h3 id="sec-9-9"><span class="section-number-3">9.9</span> Per Goal</h3>
<div class="outline-text-3" id="text-9-9">

<ul>
<li>The same student might have different goals with the same lesson plan.  They might switch regularly.
     For example a student study a language for 1 year might:
<ul>
<li>typically practice 15 minutes a day, with whatever mode the lesson
       plan dictates, with new words selected to promote long term learning
       , but limited to words in the course.
</li>
<li>the day before a multiple choice test.  No time limit, no new words, only words on the test
       , only multiple choice and practice until recognition and production are 95%.
</li>
<li>the day before a conjugation test.  No time limit, no new words, only verbs words on the test
       , only conjugation, anagram or written word and practice until spelling is 95%.
</li>
</ul>

</li>
</ul>


</div>

<div id="outline-container-9-9-1" class="outline-4">
<h4 id="sec-9-9-1"><span class="section-number-4">9.9.1</span> Active Lessons</h4>
<div class="outline-text-4" id="text-9-9-1">

</div>

</div>

<div id="outline-container-9-9-2" class="outline-4">
<h4 id="sec-9-9-2"><span class="section-number-4">9.9.2</span> Active Modes/Games</h4>
<div class="outline-text-4" id="text-9-9-2">

<ul>
<li id="sec-9-9-2-1">Size Hints<br/>

</li>
</ul>
</div>

</div>

<div id="outline-container-9-9-3" class="outline-4">
<h4 id="sec-9-9-3"><span class="section-number-4">9.9.3</span> Target Performance</h4>
<div class="outline-text-4" id="text-9-9-3">

<ul>
<li id="sec-9-9-3-1">Recognition<br/>
</li>
</ul>
<ul>
<li id="sec-9-9-3-2">Prodcution<br/>
</li>
</ul>
<ul>
<li id="sec-9-9-3-3">Written<br/>


</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-10" class="outline-3">
<h3 id="sec-9-10"><span class="section-number-3">9.10</span> Per Student</h3>
<div class="outline-text-3" id="text-9-10">


</div>

<div id="outline-container-9-10-1" class="outline-4">
<h4 id="sec-9-10-1"><span class="section-number-4">9.10.1</span> GUI stuff</h4>
<div class="outline-text-4" id="text-9-10-1">

<p>    There a probably better standard places for save GUI state.
</p></div>

</div>

<div id="outline-container-9-10-2" class="outline-4">
<h4 id="sec-9-10-2"><span class="section-number-4">9.10.2</span> Assessment</h4>
<div class="outline-text-4" id="text-9-10-2">

<ul>
<li>? Should this be per student/per goal or both?
</li>
<li>? Should this be in a separate file/zip so the lexicon can be more global/easily shared
</li>
</ul>

<ul>
<li id="sec-9-10-2-1">Data<br/>
<ul>
<li id="sec-9-10-2-1-1">Recognition<br/>
<ul>
<li>(word, issuccess, timestamp, incorrect word)
</li>
<li>Knowing the the incorrect word will allow removing it from multi-choice options
        so that the student has more success and learns the correct answer
</li>
<li>We should not ever make it easy for students to see their incorrect answers.
        We avoid helping student accidentally rehearse incorrect word associations.
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-9-10-2-1-2">Production<br/>
<ul>
<li>(word, issuccess, timestamp, incorrect word)
</li>
<li>I don't know how having the incorrect word here can help the student
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-9-10-2-1-3">Spelling<br/>
<ul>
<li>(word, issuccess, timestamp, incorrect word)
</li>
<li>Useful things to do with incorrect word
<ul>
<li>Calculate Hamming distance so the student can see that their spelling is 90% correct
</li>
<li>Highlight most frequently misspelled letters in the correct word to focus attention on
          problem areas without reinforcing incorrect answers.
          (i.e. Write friend as fr<bold green>ie</bold green>nd in all cues)
</li>
</ul>

</li>
</ul>


</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-9-10-2-2">Statistics/Grades<br/>
<ul>
<li>- Could store Leitner boxes, but I think they are trivially calculated by the app (Parley)
</li>
</ul>




</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-11" class="outline-3">
<h3 id="sec-9-11"><span class="section-number-3">9.11</span> Word Set</h3>
<div class="outline-text-3" id="text-9-11">


</div>

<div id="outline-container-9-11-1" class="outline-4">
<h4 id="sec-9-11-1"><span class="section-number-4">9.11.1</span> Id</h4>
<div class="outline-text-4" id="text-9-11-1">

</div>

</div>

<div id="outline-container-9-11-2" class="outline-4">
<h4 id="sec-9-11-2"><span class="section-number-4">9.11.2</span> Name</h4>
<div class="outline-text-4" id="text-9-11-2">

</div>

</div>

<div id="outline-container-9-11-3" class="outline-4">
<h4 id="sec-9-11-3"><span class="section-number-4">9.11.3</span> Word</h4>
<div class="outline-text-4" id="text-9-11-3">

<ul>
<li id="sec-9-11-3-1">optional<br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-11-4" class="outline-4">
<h4 id="sec-9-11-4"><span class="section-number-4">9.11.4</span> Word Set</h4>
<div class="outline-text-4" id="text-9-11-4">

<ul>
<li id="sec-9-11-4-1">optional<br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-11-5" class="outline-4">
<h4 id="sec-9-11-5"><span class="section-number-4">9.11.5</span> Constructed Set</h4>
<div class="outline-text-4" id="text-9-11-5">

<ul>
<li id="sec-9-11-5-1">optional<br/>
</li>
</ul>
<ul>
<li id="sec-9-11-5-2">Params<br/>
<ul>
<li>You can partially instantiate a contructed set by providing
</li>
</ul>

<p>     a partial list of its input parameters
</p>

</li>
</ul>
</div>
</div>

</div>

<div id="outline-container-9-12" class="outline-3">
<h3 id="sec-9-12"><span class="section-number-3">9.12</span> Constructed Set Definition</h3>
<div class="outline-text-3" id="text-9-12">

<ul>
<li>requires either a basic section or a regex section
</li>
</ul>


</div>

<div id="outline-container-9-12-1" class="outline-4">
<h4 id="sec-9-12-1"><span class="section-number-4">9.12.1</span> Id</h4>
<div class="outline-text-4" id="text-9-12-1">

<ul>
<li>For the computer/hacker
</li>
</ul>

</div>

</div>

<div id="outline-container-9-12-2" class="outline-4">
<h4 id="sec-9-12-2"><span class="section-number-4">9.12.2</span> Name</h4>
<div class="outline-text-4" id="text-9-12-2">

<ul>
<li>For the student
</li>
</ul>

</div>

</div>

<div id="outline-container-9-12-3" class="outline-4">
<h4 id="sec-9-12-3"><span class="section-number-4">9.12.3</span> Paramsets</h4>
<div class="outline-text-4" id="text-9-12-3">

<ul>
<li>at least one input parameter word set
</li>
</ul>

<ul>
<li id="sec-9-12-3-1">WordSet<br/>

</li>
</ul>
</div>

</div>

<div id="outline-container-9-12-4" class="outline-4">
<h4 id="sec-9-12-4"><span class="section-number-4">9.12.4</span> Regular Expression Element</h4>
<div class="outline-text-4" id="text-9-12-4">

<ul>
<li>Requires either elements for every combination of input parameter or a default element
</li>
</ul>

<ul>
<li id="sec-9-12-4-1">Default Element<br/>
<ul>
<li id="sec-9-12-4-1-1">optional<br/>
</li>
</ul>
<ul>
<li id="sec-9-12-4-1-2">Name<br/>
</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-9-12-4-2">Element<br/>
<ul>
<li>All the parameters that are not explicitly provided to the regex element
       will be concatenated with the seperator character and provided as input
       to the pattern and replace pair.
</li>
<li>? Note there is a slight logical discrepancy as the constructed set is not a child
       of the lexicon where the separator characters are defined.  That will probably have to be
       a requirement.
</li>
</ul>

<ul>
<li id="sec-9-12-4-2-1">Parameter<br/>
</li>
</ul>
<ul>
<li id="sec-9-12-4-2-2">Pattern<br/>
</li>
</ul>
<ul>
<li id="sec-9-12-4-2-3">Replacement<br/>

</li>
</ul>
</li>
</ul>
</div>

</div>

<div id="outline-container-9-12-5" class="outline-4">
<h4 id="sec-9-12-5"><span class="section-number-4">9.12.5</span> Basic</h4>
<div class="outline-text-4" id="text-9-12-5">

<ul>
<li>Requires either an element for every combination of input parameter or a default element
</li>
</ul>

<ul>
<li id="sec-9-12-5-1">Default Element<br/>
<ul>
<li id="sec-9-12-5-1-1">optional<br/>
</li>
</ul>
<ul>
<li id="sec-9-12-5-1-2">Name<br/>
</li>
</ul>
</li>
</ul>
<ul>
<li id="sec-9-12-5-2">Element<br/>


</li>
</ul>
</div>
</div>
</div>

</div>

<div id="outline-container-10" class="outline-2">
<h2 id="sec-10"><span class="section-number-2">10</span> Example Files</h2>
<div class="outline-text-2" id="text-10">


</div>

<div id="outline-container-10-1" class="outline-3">
<h3 id="sec-10-1"><span class="section-number-3">10.1</span> XML</h3>
<div class="outline-text-3" id="text-10-1">

<ul>
<li>This example is just to show what elements are parallel/serial, before progressing to dtd/xsd.
</li>
<li>Try to choose tag names etc/ that are obvious to english language speakers.
</li>
<li>? Should it be one pass so that constructs must be defined before their use or multi pass?
</li>
<li>? Should the format be flexible and forgiving or inflexible but verbose in its error messages?
</li>
<li>? Does Parley need/expect some special ids for the parts of speech that it knows about
<ul>
<li>?  Should we stick those special ids in a helpful header for hackers
</li>
</ul>

</li>
<li>The sections words, wordsets, relationships may be unecessary to indicate a definition section
     as their child tags word, wordset, relationship  and implicit defintion may be sufficient.
</li>
</ul>



</div>

<div id="outline-container-10-1-1" class="outline-4">
<h4 id="sec-10-1-1"><span class="section-number-4">10.1.1</span> File to show use of constructed set in translation relationship</h4>
<div class="outline-text-4" id="text-10-1-1">




<pre class="example"><kvtml2p1>
   <information> ... </information>    ///Same as kvtml2 has to be unique

  <words>                          /// Multiple words sections allowed

      <word>
         <id>dog</id>               ///sets the id of this word, must be file unique?
         <text>dog</text>           ///the word
      </word>

      <word>
         <id>dog1</id>
         <text>puppy</text>
      </word>

      <word>
         <id>dogsid</id>
         <text>dogs</text>
      </word>
      ...
                                    ///I assume that other words with ids like cat, kitten
                                   /// and German words like der, die, das, Hund etc are defined here
      ...
      <word>
         <id>noun_en</id>
         <text>Noun</text>
      </word>

      <word>
         <id>en</id>
         <text>English</text>
      </word>

   </words>

   <wordsets>                       ///Multiples are allowed
      <wordset>
         <id>dogs</id>           /// sets id ?do set id need to be in a different namespace from words
         <name id=dogsid>           /// Uses a previously defined word to name the set (human readable)
         <word id=dog>              /// Adds 2 words by id to the set
         <word id=dog1>
      </wordset>
   </wordsets>

   <relationships>                  ///Multiples are allowed
      <relationship>                /// :ingwa:
         <id>noun</id>              /// sets id
         <name id=noun_en>          /// Names the relationship using an id
         <relatee id=en>            ///This is the relatee -axavier this is a poor non-obvious name perhaps referent
         <relations id=dogs>        /// This adds the entire word set dogs by id
         <relation id=cat>          /// This adds the word cat by id
         <relation id=hawk>
      </relationship >

      <relationship>                /// :ingwa:
         <id>dogEnToDe</id>         /// sets id
         <name id=translate>        /// Does transate (or something similar) need to be a special id for Parley
         <relatee id=dog>
         <relation id=Hund>
      </relationship >

      <relationship>                /// :ingwa:
         <id>partsOfSpeech</id>
         <name id=partsofspeech-en>
         <relatee id=en>
         <relationship id=noun>       ///relationships can nest provided they refer back to the same root
         <relationship id=verb>
         <relationship id=pronoun>
      </relationship >

   </relationships>

/// The next chunk shows how generic grammar will work

   <wordsets>                       ///Multiples are allowed
      <wordset>
         <id>en-grammar-persons</id>
         <name id=en-persons>
         <word id=FirstPerson>    /// i.e I and we
         <word id=SecondPerson>   /// i.e. you and you
      </wordset>
      <wordset>
         <id>en-grammar-number</id>
         <name id=en-number>
         <word id=Single>     /// i.e. I and you
         <word id=Plural>     /// i.e. we and you
      </wordset>
      ... and the same for German
      <wordset>
         <id>regular-en</id>
         <name id=reg-enlish-verbs>
         <word id=towalk>
         <word id=totalk>
         <word id=tohelp>
         ...
      </wordset>
   </wordsets>

   <constructedsets>                ///Multiples are allowed

// This first constructed set defines the verb conjugation
// I am , you are and we are.
      <constructedset>              /// Basic Form each item specified individually
         <id>conjugations-to-be</id>
         <name id=conjugates-to-be_en>    /// Names the constructedset using an id of a word
         <paramset id=en-grammar-persons>   ///This is the set of words in the first dimension
         <paramset id=engrammar-number>   ///This is the set of words in the second dimension
         <param id=tobe>                 ///This 1 dimensional third dimension

         <basic>                      ///This is the basic method of specifying: each alternative is listed individually
            <element>
               <param id=FirstPerson>
               <param id=Single>
               <param id=tobe>        ///This is optional for 1D params
               <name>I am</name>
            </element>
            <element>
               <param id=SecondPerson>
               <param id=Single>
               <param id=tobe>        ///This is optional for 1D params
               <name>you are</name>
            </element>
            <element>
               <param id=FirstPerson>
               <param id=Plural>
               <name>we are</name>
            </element>
            <element>
               <param id=SecondPerson>
               <param id=Plural>
               <name>you are</name>
            </element>
         </basic>
      </constructedset >

// This second constructed set defines the general verb conjugation
// It assumes one more level of indirection not shown from the
//name (First Person etc., Single/Plural) to (I,we,you,he,she,it)
      <constructedset>              /// Regex form
         <id>conjugations-to-whatever</id>
         <name id=conjugates-to-whatever-en>
         <paramset id=en-pronouns>      ///This is the set of words in the first dimension
         <param id=regular-verbs>             ///This last dimension

         <regex>
         ///This is the regex method of specifying:
         /// Alternatives are specified with a regex and a replacement pattern
         /// All parameters not listed specifically are input to the regex sepearated
         /// by the seprator given ?somewhere? in the lexicon section
            <element>
               <param id=he>
               <pattern>to (.*)</pattern> /// pattern to strip the root out of the infinitive
               <replace>he \1s</replace>       ///  conjugate he/she/it walks
            </element>
            <element>
               <param id=she>
               <pattern>to (.*)</pattern> /// pattern to strip the root out of the infinitive
               <replace>she \1s</replace>       ///  conjugate he/she/it walks
            </element>
            <element>
               <param id=it>
               <pattern>to (.*)</pattern> /// pattern to strip the root out of the infinitive
               <replace>it \1s</replace>       ///  conjugate he/she/it walks
            </element>
            <default>                          ///default pattern
               <pattern>(.*);to (.*)</pattern> /// pattern to strip the root out of the infinitive
               <replace>\1 \2</replace>       ///  conjugate I/we/they/you walk
            </element>
         </basic>
      </constructedset >

   </constructedsets>


   <wordsets>
      <wordset>
         <id>en-verbs</id>
         <constructedset id=en-tobe>              /// Instantiate the constructed set and
                                                  /// use all of the elems

         <constructedset id=en-regular-verbs>     /// Instantiate the regular-verb set but only use
               <paramset id=en-pronouns>          /// conjugations for to walk
               <paramset>
                 <word id=towalk>
               </paramset>
         </constructedset id=en-regular-verbs>
      </wordset>
      ... and the same for German
   </wordsets>

   <relationships>
      <relationshipset type=onetoone>     /// type onotoone pairs up every item in the sets and create the given relationship
                                          /// If the sets are not the same size do as many as possible
         <id>regular-verbs-en-de</id>
         <name id=translate>        /// Does transate (or something similar) need to be a special id for Parley
         <relationset id=en-verbs>
         <relationset id=de-verbs>
      </relationshipset>

   </relationships>


</pre>



</div>

</div>

<div id="outline-container-10-1-2" class="outline-4">
<h4 id="sec-10-1-2"><span class="section-number-4">10.1.2</span> File to show lesson planning for parley</h4>
<div class="outline-text-4" id="text-10-1-2">




<pre class="example"><kvtml2p1>
   <information> ... </information>    ///Same as kvtml2 has to be unique
   <words> ...  </words>
   <wordsets> ... </wordsets>
   <relationships> ... </relationships>
   <constructedsets> ... </constructedsets>

   <lessons>                                    ///Define lessons
      <lesson>
         <id>en-de-nouns</id>                    /// sets id
         <name>The Nouns</name>                  /// Names the lesson plan hard coded
         <relationshipset id=nouns-en-de>
      </lesson>
      <lesson>
         <id>en-de-verbs</id>                    /// sets id
         <name>The Verbs</name>                  /// Names the lesson plan hard coded
         <relationshipset id=nouns-en-de>
         <mode filters>

           /// This section needs more thought

         </mode filters>
      </lesson>
   </lessons>

   <lessonplans>                                         ///define some lesson plans
      <lessonplan>                                      ///The first lesson plan
         <id>allenglishtogerman</id>                    /// sets id
         <name>Comprehensive English to German</name>   /// Names the lesson plan hard coded
         <tool>Parley</tool>
         <lesson id=pronouns>
         <lesson id=presenttense>
         <lesson id=verbs>
         <lesson id=nouns>
         <lesson id=childrensgames>
      </lessonplan>

      <lessonplan>                      ///Another lesson plan
         <id>business-en-de</id>           /// sets id
         <name id=business-en-de>          /// Names the relationship using an id
         <tool>Parley</tool>
         <lesson id=pronouns>
         <lesson id=presenttense>
         <lesson id=verbs>
         <lesson id=nouns>
         <lesson id=businesstravel>
   </lessonplans>



</pre>



</div>
</div>
</div>

</div>

<div id="outline-container-11" class="outline-2">
<h2 id="sec-11"><span class="section-number-2">11</span> External Facing API</h2>
<div class="outline-text-2" id="text-11">

<ul>
<li>
</li>
<li>make kvocdoc a Q<sub>OBJECT</sub> with no data except the d->
</li>
</ul>


</div>

</div>

<div id="outline-container-12" class="outline-2">
<h2 id="sec-12"><span class="section-number-2">12</span> Todo Lists</h2>
<div class="outline-text-2" id="text-12">

<ul>
<li>The list is somewhat chronological, but many tasks can be parallelized.
</li>
<li>tags like :linked milestone: are places where two or more libraries do things in sync.
</li>
</ul>


</div>

<div id="outline-container-12-1" class="outline-3">
<h3 id="sec-12-1"><span class="section-number-3">12.1</span> Todo List Maintenance</h3>
<div class="outline-text-3" id="text-12-1">


</div>

<div id="outline-container-12-1-1" class="outline-4">
<h4 id="sec-12-1-1"><span class="section-number-4">12.1.1</span> Decide where this list resides and put it there</h4>
<div class="outline-text-4" id="text-12-1-1">

</div>
</div>

</div>

<div id="outline-container-12-2" class="outline-3">
<h3 id="sec-12-2"><span class="section-number-3">12.2</span> Library Maintenance</h3>
<div class="outline-text-3" id="text-12-2">


</div>

<div id="outline-container-12-2-1" class="outline-4">
<h4 id="sec-12-2-1"><span class="section-number-4">12.2.1</span> Decide on a library name and relocate the library</h4>
<div class="outline-text-4" id="text-12-2-1">

</div>
</div>

</div>

<div id="outline-container-12-3" class="outline-3">
<h3 id="sec-12-3"><span class="section-number-3">12.3</span> libkeduvocdocument</h3>
<div class="outline-text-3" id="text-12-3">


</div>

<div id="outline-container-12-3-1" class="outline-4">
<h4 id="sec-12-3-1"><span class="section-number-4">12.3.1</span> Diry Bit Clean up</h4>
<div class="outline-text-4" id="text-12-3-1">

<ul>
<li id="sec-12-3-1-1">Unittest clean on save/saveAs/open, dirty on header changes<br/>
</li>
</ul>
<ul>
<li id="sec-12-3-1-2">Unittest dirty status of each pseudo child<br/>
<ul>
<li>KEduVocArticle, KEduVocConjugation, KEduVocDeclension, KEduVocExpression
</li>
</ul>

<p>     , KEduVocIdentifier, KEduVocLesson, KEduVocMultipleChoice, KEduVocPersonalPronoun
     , KEduVocText, KEduVocTranslation, KEduVocWordFlag, KEduVocWordType, KEduVocWqlReader
</p><ul>
<li>d object should track the status and
<ol>
<li>signal other d objects and
</li>
<li>use the q object to signal the world
</li>
</ol>

</li>
</ul>


</li>
</ul>
<ul>
<li id="sec-12-3-1-3">Unittest the entire heirarchy's dirty status<br/>
<ul>
<li>additons/removals should cascade through identifier->word->lexicon->translation->lessons
</li>
</ul>

</li>
</ul>
</div>

</div>

<div id="outline-container-12-3-2" class="outline-4">
<h4 id="sec-12-3-2"><span class="section-number-4">12.3.2</span> KVTML2 Clean up/Prep for Change</h4>
<div class="outline-text-4" id="text-12-3-2">

<ul>
<li id="sec-12-3-2-1">Add unittests for reader<br/>
     This work can be reused for the new format
<dl>
<dt>Fixes Bug 336780 ::<a href="https://bugs.kde.org/show_bug.cgi?id=336780">https://bugs.kde.org/show_bug.cgi?id=336780</a></dt><dd>Empty file without identifiers segfault
</dd>
</dl>


</li>
</ul>
</div>

</div>

<div id="outline-container-12-3-3" class="outline-4">
<h4 id="sec-12-3-3"><span class="section-number-4">12.3.3</span> Expand file lock into autosave feature</h4>
<div class="outline-text-4" id="text-12-3-3">

<ul>
<li id="sec-12-3-3-1">Unitest timed backup<br/>
</li>
</ul>
<ul>
<li id="sec-12-3-3-2">Add timed backup<br/>
<ul>
<li>Easy since the file is already using KAutoSave
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-12-3-3-3">Unitest recover a timed backup<br/>
</li>
</ul>
<ul>
<li id="sec-12-3-3-4">Move autosave from parley into kvocdoc    <span class="tag"><span class="autosave">autosave</span></span><br/>
</li>
</ul>
</div>

</div>

<div id="outline-container-12-3-4" class="outline-4">
<h4 id="sec-12-3-4"><span class="section-number-4">12.3.4</span> Translate grammar from kvtml2 to new format</h4>
<div class="outline-text-4" id="text-12-3-4">

<ul>
<li id="sec-12-3-4-1">Write a unit test for each part of speech in kvtml2.dtd<br/>
<ul>
<li>load kvtml2 save as new format
</li>
<li>reuse the load kvtml2 unitest and just check that it saves correctly as something
</li>
</ul>

</li>
</ul>
</div>

</div>

<div id="outline-container-12-3-5" class="outline-4">
<h4 id="sec-12-3-5"><span class="section-number-4">12.3.5</span> </h4>
<div class="outline-text-4" id="text-12-3-5">


</div>
</div>

</div>

<div id="outline-container-12-4" class="outline-3">
<h3 id="sec-12-4"><span class="section-number-3">12.4</span> Parley</h3>
<div class="outline-text-3" id="text-12-4">


</div>

<div id="outline-container-12-4-1" class="outline-4">
<h4 id="sec-12-4-1"><span class="section-number-4">12.4.1</span> Move timed backup into vocdoc</h4>
<div class="outline-text-4" id="text-12-4-1">

<ul>
<li id="sec-12-4-1-1">Instrument and unittest parleydocument<br/>
<ul>
<li>-A lot of work for limited gain
</li>
<li>Make mock of all the dialogs (format unrecognized, file locked, file-rename etc.)
</li>
</ul>

</li>
</ul>
<ul>
<li id="sec-12-4-1-2">Make a file recovery dialog<br/>
</li>
</ul>
<ul>
<li id="sec-12-4-1-3">Move functionality into kvocdoc    <span class="tag"><span class="autosave">autosave</span></span><br/>

</li>
</ul>
</div>

</div>

<div id="outline-container-12-4-2" class="outline-4">
<h4 id="sec-12-4-2"><span class="section-number-4">12.4.2</span> Why can't parley do conjugation, comparison etc with just 1 language?</h4>
<div class="outline-text-4" id="text-12-4-2">


</div>
</div>
</div>

</div>

<div id="outline-container-13" class="outline-2">
<h2 id="sec-13"><span class="section-number-2">13</span> Unshelved Ideas</h2>
<div class="outline-text-2" id="text-13">


</div>

<div id="outline-container-13-1" class="outline-3">
<h3 id="sec-13-1"><span class="section-number-3">13.1</span> Add constructs to XML spec</h3>
<div class="outline-text-3" id="text-13-1">


</div>

<div id="outline-container-13-1-1" class="outline-4">
<h4 id="sec-13-1-1"><span class="section-number-4">13.1.1</span> Make translations standalone and then pair them with each other to create an entry</h4>
<div class="outline-text-4" id="text-13-1-1">

</div>

</div>

<div id="outline-container-13-1-2" class="outline-4">
<h4 id="sec-13-1-2"><span class="section-number-4">13.1.2</span> Nest constructs</h4>
<div class="outline-text-4" id="text-13-1-2">

<p>    e.g. I watched his game and you play with my piano.
         <<<pronoun> <regular verb past tense>> conjugate <<pronoun> <regular verb present tense>> <preposition phra
se>
  ** Calling convention
  ** prevent loops or infinite recursion
      ? Make it stack based and limit the stack size
        X Not very student intuitive
      ? Make it maximum character length
      ** Add an kdocvocoption maximumConstructedCharacterLength xxxx
  ** Combine irregular constructs with regex constructs
</p></div>

</div>

<div id="outline-container-13-1-3" class="outline-4">
<h4 id="sec-13-1-3"><span class="section-number-4">13.1.3</span> Pass back parts of object</h4>
<div class="outline-text-4" id="text-13-1-3">

<p>     ? Indicate which parts are suitable for fill in the blanks
</p></div>

</div>

<div id="outline-container-13-1-4" class="outline-4">
<h4 id="sec-13-1-4"><span class="section-number-4">13.1.4</span> Parse regexs</h4>
<div class="outline-text-4" id="text-13-1-4">

<p>     ? What regex syntax do we use
</p></div>
</div>

</div>

<div id="outline-container-13-2" class="outline-3">
<h3 id="sec-13-2"><span class="section-number-3">13.2</span> Add constructs read/write to kvocdoc objects</h3>
<div class="outline-text-3" id="text-13-2">


</div>

<div id="outline-container-13-2-1" class="outline-4">
<h4 id="sec-13-2-1"><span class="section-number-4">13.2.1</span> Create unit-tests for construct read/write</h4>
<div class="outline-text-4" id="text-13-2-1">

</div>

</div>

<div id="outline-container-13-2-2" class="outline-4">
<h4 id="sec-13-2-2"><span class="section-number-4">13.2.2</span> Pass all unit-tests for read/write</h4>
<div class="outline-text-4" id="text-13-2-2">

</div>
</div>

</div>

<div id="outline-container-13-3" class="outline-3">
<h3 id="sec-13-3"><span class="section-number-3">13.3</span> Make xml to use constructs in lessons/units</h3>
<div class="outline-text-3" id="text-13-3">


</div>

<div id="outline-container-13-3-1" class="outline-4">
<h4 id="sec-13-3-1"><span class="section-number-4">13.3.1</span> Let lesson describe a subset of container inputs to a construct</h4>
<div class="outline-text-4" id="text-13-3-1">

</div>

</div>

<div id="outline-container-13-3-2" class="outline-4">
<h4 id="sec-13-3-2"><span class="section-number-4">13.3.2</span> Let lesson restrict which games can be played with the constructs</h4>
<div class="outline-text-4" id="text-13-3-2">

</div>

</div>

<div id="outline-container-13-3-3" class="outline-4">
<h4 id="sec-13-3-3"><span class="section-number-4">13.3.3</span> Let lesson restrict games played by performance</h4>
<div class="outline-text-4" id="text-13-3-3">

<p>     ? Is this the right todo list for this feature
</p></div>
</div>

</div>

<div id="outline-container-13-4" class="outline-3">
<h3 id="sec-13-4"><span class="section-number-3">13.4</span> Add lesson constructs read/write to kvocdoc objects</h3>
<div class="outline-text-3" id="text-13-4">


</div>

<div id="outline-container-13-4-1" class="outline-4">
<h4 id="sec-13-4-1"><span class="section-number-4">13.4.1</span> Create unit-tests for construct read/write</h4>
<div class="outline-text-4" id="text-13-4-1">

</div>

</div>

<div id="outline-container-13-4-2" class="outline-4">
<h4 id="sec-13-4-2"><span class="section-number-4">13.4.2</span> Pass all unit-tests for read/write</h4>
<div class="outline-text-4" id="text-13-4-2">

</div>
</div>

</div>

<div id="outline-container-13-5" class="outline-3">
<h3 id="sec-13-5"><span class="section-number-3">13.5</span> Consider how should performance be tracked for construct with hundreds to elements.</h3>
<div class="outline-text-3" id="text-13-5">

<ul>
<li>- track performance per product element
</li>
</ul>

</div>

</div>

<div id="outline-container-13-6" class="outline-3">
<h3 id="sec-13-6"><span class="section-number-3">13.6</span> Update parley to play games with constructs.</h3>
<div class="outline-text-3" id="text-13-6">

</div>

</div>

<div id="outline-container-13-7" class="outline-3">
<h3 id="sec-13-7"><span class="section-number-3">13.7</span> Convert legacy version 1 and version 2 grammar objects to construct tree representation</h3>
<div class="outline-text-3" id="text-13-7">

</div>

</div>

<div id="outline-container-13-8" class="outline-3">
<h3 id="sec-13-8"><span class="section-number-3">13.8</span> Convert legacy api to use the underlying constructs</h3>
<div class="outline-text-3" id="text-13-8">

</div>

</div>

<div id="outline-container-13-9" class="outline-3">
<h3 id="sec-13-9"><span class="section-number-3">13.9</span> Break XML files into 3 parts in 3 files: definitions, lessons and practice data.</h3>
<div class="outline-text-3" id="text-13-9">

<p>   ? Does this belong in another branch
</p>
</div>

<div id="outline-container-13-9-1" class="outline-4">
<h4 id="sec-13-9-1"><span class="section-number-4">13.9.1</span> This allows multiple lesson plans to use 1 definiton file</h4>
<div class="outline-text-4" id="text-13-9-1">

</div>

</div>

<div id="outline-container-13-9-2" class="outline-4">
<h4 id="sec-13-9-2"><span class="section-number-4">13.9.2</span> This allows multiple students/sessions to practice and track separate practice results.</h4>
<div class="outline-text-4" id="text-13-9-2">

</div>

</div>

<div id="outline-container-13-9-3" class="outline-4">
<h4 id="sec-13-9-3"><span class="section-number-4">13.9.3</span> Make indexs words not numbers so that they are stable, student editable and referencable from other files.</h4>
<div class="outline-text-4" id="text-13-9-3">

<ul>
<li>That's the point of XML.
</li>
</ul>


</div>
</div>

</div>

<div id="outline-container-13-10" class="outline-3">
<h3 id="sec-13-10"><span class="section-number-3">13.10</span> Fix doxygen documentation syntax for sections in keduvocdocument.h</h3>
<div class="outline-text-3" id="text-13-10">

</div>

</div>

<div id="outline-container-13-11" class="outline-3">
<h3 id="sec-13-11"><span class="section-number-3">13.11</span> Rename KEduVocTranslation to KEduVocLexeme</h3>
<div class="outline-text-3" id="text-13-11">

<ul>
<li>it isn't a translation only one side of a flash card. (i.e. only one word)
</li>
<li>it includes synonym, antonym, and grading stuff
</li>
</ul>

</div>
</div>
</div>
</div>

<div id="postamble">
<p class="date">Date: 2014-07-09T06:13-0400</p>
<p class="author">Author: Andreas Xavier</p>
<p class="creator"><a href="http://orgmode.org">Org</a> version 7.9.3f with <a href="http://www.gnu.org/software/emacs/">Emacs</a> version 24</p>
<a href="http://validator.w3.org/check?uri=referer">Validate XHTML 1.0</a>

</div>
</body>
</html>