The MAM-parsed-plus JSON files are formed by: (a) parsing the Wikitext downloaded from Hebrew Wikisource, (b) adding some conveniences and (c) removing some inconveniences. Of course, what is considered an inconvenience and what is considered a convenience can only be determined relative to a particular application. Nonetheless, we’ve tried to make MAM-parsed-plus convenient to use for a broad variety of applications. This document covers:
For guidance when writing code to use the data, see Notes for applications.
File names (e.g. A1-Genesis.json) start with two characters that identify the book
(in the “24 books” sense) and provide a standard ordering. The first character
(sec_char) comes from the set ABCDEF and indicates the section of Tanakh. The second
character (book24_char) comes from the set 12345AC and indicates the book within that
section.
Files are named {sec_char}{book24_char}-{EnglishName}.json:
| Prefix | Section | Books |
|---|---|---|
| A1–A5 | Torah | Genesis, Exodus, Leviticus, Numbers, Deuteronomy |
| B1, B2, BA, BC | Former Prophets | Joshua, Judges, Samuel, Kings |
| C1–C3, CA | Latter Prophets | Isaiah, Jeremiah, Ezekiel, The 12 Minor Prophets |
| D1–D3 | Wisdom | Psalms, Proverbs, Job |
| E1–E5 | Five Scrolls | Song of Songs, Ruth, Lamentations, Ecclesiastes, Esther |
| F1, FA, FC | Late Books | Daniel, Ezra-Nehemiah, Chronicles |
When book24_char is A or C, the file is for a book24 with sub-books (e.g. BA-Samuel
has sub-books 1 Samuel and 2 Samuel). The letter B is not used in order to keep compatibility with a
set of codes used for the 39-book system.
{ "header": {...}, "book39s": [...] }
| Key | Type | Description |
|---|---|---|
book24_name |
string | The name of this file’s book24. |
sub_book_names |
array | Array of sub-book names for this book24. (Empty if this book24 has no sub-books.) |
chapter_counts |
array | One object per book39, each with sub_book_name and
chapter_count. (The sub_book_name will be null for a book39 that is not a
sub-book, i.e. a book39 that is also a book24.) |
consumer_notice |
object | Guidance for people and programs using the data, with a summary, a nonempty
array of critical_rules, and the absolute URL of the notes for applications. |
Here’s the header for Job, a book24 that has no sub-books:
{ "book24_name": "ספר איוב", "sub_book_names": [], "chapter_counts": [ { "sub_book_name": null, "chapter_count": 42 } ], "consumer_notice": {...} }
Here’s the header for Samuel, a book24 that has sub-books:
{ "book24_name": "ספר שמואל", "sub_book_names": [ "שמ\"א", "שמ\"ב" ], "chapter_counts": [ { "sub_book_name": "שמ\"א", "chapter_count": 31 }, { "sub_book_name": "שמ\"ב", "chapter_count": 24 } ], "consumer_notice": {...} }
{ "book24_name": "ספר ישעיהו", "sub_book_name": null, "chapters": {...}, "good_ending_plus": {...} }
| Key | Type | Description |
|---|---|---|
book24_name |
string | For a book39 that is not a sub-book, this is its name. For a book39 that is a sub-book, this is the name of the book24 to which this sub-book belongs. |
sub_book_name |
string | null | For a book39 that is not a sub-book, this is null. For a book39 that is a sub-book, this is its name. |
chapters |
object | Object keyed by chapter numbers; values are chapter objects. |
good_ending_plus |
object | null | Non-null only for the 4 book39s with "good endings." See its dedicated page. |
The chapters object is keyed by verse numbers. For example, a chapter with 22 verses
has exactly 22 keys, "1" through "22".
Templates are represented like this:
{ "tmpl_name": "קו״כ", "tmpl_params": {"1": "את", "2": "אַ֠תָּ֠ה"} }
| Key | Type | Description |
|---|---|---|
tmpl_name |
string | Template name |
tmpl_params |
object | Parameters — present only if needed |
Numeric string keys "1", "2", … correspond to positional arguments,
Non-numeric keys (e.g. "ד", "ס", "סדר") represent named
parameters like ד=... in the Wikitext.
The tmpl_params object is absent when the template has no parameters (e.g.
פפ, סס, מ:פסק).
Parameter values can themselves be strings, nested template objects, or arrays mixing strings and templates. See the dedicated page on template nesting.
Example — a word with a special letter inside a ketiv/qere inside a נוסח:
{ "tmpl_name": "נוסח", "tmpl_params": { "1": { "tmpl_name": "כו״ק", "tmpl_params": { "1": { "tmpl_name": "מ:אות-מיוחדת-במילה", "tmpl_params": {...} }, "2": "וְג֣וּשׁ" } }, "2": ... } }
Each verse is a 3-element array for the separator, verse label, and verse proper. These positions retain the C, D, and E names used by a now-obsolete spreadsheet version of MAM.
Column C is an array indicating how this verse is separated from the preceding verse:
"__") is by far the most common value. It indicates a plain
space.Column D is an array that, if not empty, contains exactly one element: either a מ:פסוק template or מ:פסוק wrapped in a נוסח template. Column D is sparse: it omits source boundary records that do not supply retained label data:
סדר or עלייה named params. Direct calls without named params do
not appear, as they are considered uninteresting.For example, here is the D column value for Job 1:1, kept because of its סדר
param:
[{ "tmpl_name": "מ:פסוק", "tmpl_params": {"1": "איוב", "2": "א", "3": "א", "סדר": "א"} }]
Column E is an array mixing strings and templates. Example (Job 1:1):
[ "אִ֛ישׁ הָיָ֥ה בְאֶֽרֶץ־ע֖וּץ אִיּ֣וֹב שְׁמ֑וֹ וְהָיָ֣ה", {"tmpl_name": "מ:לגרמיה-2"}, " הָאִ֣ישׁ הַה֗וּא תָּ֧ם וְיָשָׁ֛ר וִירֵ֥א אֱלֹהִ֖ים וְסָ֥ר מֵרָֽע׃" ]
The following sections describe the templates selected for this data format. Hebrew Wikisource is the maintained textual source.
| Template | Purpose |
|---|---|
| מ:פסוק | Verse label. Takes book name, chapter, and verse as positional params. Optional named params include סדר= (seder number) and עלייה= (value is a מ:עלייה template). |
| מ:עלייה | Torah aliyah identifier. See notes on aliyah portions. |
| Template | Purpose |
|---|---|
| כו״ק | Standard ketiv/qere. Param 1 = unpointed ketiv, param 2 = pointed qere. |
| קו״כ | Qere-first ketiv/qere. Param 1 = unpointed ketiv, param 2 = pointed qere, as in כו״ק. |
| מ:קו״כ-אם-2 | Trivial ketiv/qere. Param 1 = pointed ketiv, param 2 = unpointed ketiv, param 3 = pointed qere. See its dedicated page. |
| כתיב ולא קרי | Ketiv without qere. Param 1 = the ketiv. |
| קרי ולא כתיב | Qere without ketiv. Param 1 = the qere. |
| מ:כו״ק מיוחד | Special ketiv/qere. See its dedicated page. |
For קו״כ, MAM's rendered Wikisource page has the qere first, then the ketiv. This template is used where the pair follows a maqaf, and in three verses where the pair follows a narrow-sense paseq (מ:פסק): 1 Samuel 2:16, Jeremiah 4:19 and Ezekiel 35:12.
Example of standard ketiv/qere (Genesis 8:17):
{ "tmpl_name": "כו״ק", "tmpl_params": {"1": "הוצא", "2": "הַיְצֵ֣א"} }
| Template | Purpose |
|---|---|
| מ:אות-ג מ:אות-ק מ:אות תלויה |
Large, small, or hung letter. Parameter is the letter along with any diacritical marks. |
| מ:נו״ן הפוכה | Reversed (inverted) nun. |
| מ:אות-מיוחדת-במילה | Marks a whole word containing a special letter. (By “special” we mean large, small, or hung.) See its dedicated page. |
| Template | Purpose |
|---|---|
| מ:לגרמיה-2 | Legarmeh. The vertical line ׀ as legarmeh (part of the word’s cantillation). Shares Unicode with paseq but differs in function. |
| מ:פסק | Paseq. The vertical line ׀ as paseq in the narrow sense, i.e. paseq as distinct from legarmeh. |
| מ:מקף אפור | Gray maqaf. A maqaf that is only implicit in the manuscript. Appears only in poetic verses. |
| מ:סילוק לפני געיה | Annotates silluq before meteg. Param 1 is the full marked atom; param 2 has its letters and one U+05BD identifying silluq, without other marks or punctuation. |
Most applications will need to make a choice between the two or three options presented by these templates.
| Template | Purpose |
|---|---|
| מ:דחי מ:צינור |
Deḥi and tsinnor variation. Presents both stress-helped and non-stress-helped versions of a word: param 1 without the stress helper and param 2 with it. Param 2 does not always stand on its own. In a few calls of מ:דחי, param 1 has a meteg on the letter where param 2 has the deḥi stress helper, and param 2 lacks that meteg. Only with param 1 can an application tell that this helper is a special kind: one whose stress a meteg already indicates. Some applications may want to read param 2's helper with param 1's help, as MAM-with-doc does, showing param 2 with that meteg kept; others may not. |
| מ:קמץ | Qamats variation. Named params: ד= (grammatical) and ס= (Sephardic tradition). |
| מ:כפול | Dual-trope span. See its dedicated page. |
A whitespace template can be the only separator between adjacent Scripture strings: the strings before and after מ:ששש or ססס can contain no literal whitespace at that boundary. A plain-text projection that does not preserve layout must therefore supply at least one separator; a layout-preserving renderer implements the documented space or break. Dropping the template fuses separate atoms, while collecting a descriptive parameter such as פסקא באמצע פסוק inserts documentation into Scripture. This rule does not apply to narpas: מ:פסק is a punctuation template, and its missing literal whitespace prescribes no display spacing.
| Template | Purpose |
|---|---|
| פפ / פפפ / סס / ססס | Parashah petuḥah / setumah variants. |
| מ:ששש | Setumah-like section divider for the 8 shirah (song) sections in the 21 prose books; analogous to ססס. |
| ר0–ר4 | Poetic spacing: See their dedicated page. |
| מ:ספר חדש | New-book marker. Placed at the start of each of the 24 books. Parameter is the book name. |
| מ:רווח בתרי עשר בפסוק הראשון |
First-verse spacing marker for minor-prophetic book-parts. Parameter is the prophet name. |
| מ:רווח לספר
בתהלים בפסוק הראשון |
First-verse spacing marker for each Psalms division. Parameter is the division designation (e.g. ספר שני). |
When פפ, פפפ, סס or ססס marks a parashah break within a verse (rather than between verses), it takes the argument פסקא באמצע פסוק, with three rule-based exceptions in column E:
Many editions will choose to skip poetic formatting by treating ר0–ר4 as simple word spaces.
| Template | Purpose |
|---|---|
| מ:אין פרשה ... פרק | No-parashah chapter start (21 books). Tags chapters that begin without a coinciding parashah division, so a space can be added before the first verse when presenting sequential text. |
| מ:אין פרשה ... אמ״ת | No-parashah chapter start (poetic books). Analogous to the previous template for Ps, Prov, and Job; redirects to ר4. |
| מ:אין רווח ... השבוע | No-parashah weekly-portion start. Used only at Gen 47:28 (the only Torah weekly portion that begins without a parashah). |
| Template | Purpose |
|---|---|
| מ:הערה-2 | Targeted scroll-difference note (Torah and Esther only). See dedicated page for מ:הערה-2. |
| Template | Purpose |
|---|---|
| נוסח | Documentation template. See its dedicated page. |
| ש | Paragraph separator within the notes argument (param 2) of נוסח. |
| מודגש | Bold styling within the notes argument (param 2) of נוסח. |
| מ:קישור בהערה | External URL link within the notes argument (param 2) of נוסח. |
| מ:קישור פנימי בהערה | Internal Wikisource link within the notes argument (param 2) of נוסח. |
For מ:קישור פנימי בהערה, parameter 1 is a Wikisource-internal target (path
or fragment) rendered under https://he.wikisource.org/wiki/; for
מ:קישור בהערה, parameter 1 is an external URL used as-is.
Currently MAM has two annotated cases of silluq before meteg: 1 Kings 7:37 and Job 4:12. Each has exactly one meteg after silluq.
The template מ:סילוק לפני געיה identifies silluq before meteg without changing MAM’s text. For example, MAM’s annotation for Job 4:12 is:
{ "tmpl_name": "מ:סילוק לפני געיה", "tmpl_params": { "1": "מֶֽנְהֽוּ", "2": "מֽנהו" } }
Parameter 1 contains the full marked atom. Here, the stroke on מ is silluq, and the later stroke on ה is meteg. Both strokes use U+05BD.
Parameter 2 repeats the Hebrew letters with only the silluq stroke, identifying which stroke marks the stressed syllable.
The template takes exactly these two positional parameters. Parameter 1 includes the identified silluq and at least one later U+05BD. Parameter 2 contains no other marks or punctuation. The following sof pasuq sits outside the template as ordinary text.
A Scripture projection takes parameter 1 only. Parameter 2 is position metadata, not a second reading. A consumer that locates stress uses the explicit position instead of assuming that the final U+05BD is silluq.
The notes below are for writers of programs that read ("consume") the JSON data. Such programs
are the "consumers" named by the header.consumer_notice field. The notes are as
follows:
This is a structured dataset, not ready-to-display Scripture; interpret each structure by its documented role and choose a projection wherever the payload presents alternatives.
Every generated MAM-parsed/plus/*.json file includes these notes in
header.consumer_notice. Its documentation field is an absolute URL to this
section.