Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
3df3cd4
feat(Hoffman Commentary): Initial draft work
saengel Jul 9, 2023
7500439
feat(Hoffman Mishnah Commentary): Parsing progress
saengel Jul 11, 2023
77ffcb2
feat(Hoffman Commentary): Attempt to insert introduction individually
saengel Jul 11, 2023
194faad
feat(Hoffman Mishnah): In-progress, error with ingest for intro
saengel Jul 13, 2023
1f75c31
feat(Hoffman Mishnah): Working Script for Masechet Berakhot
saengel Jul 16, 2023
a83f739
feat(Hoffman Mishnah): Working ingest script with correct links for M…
saengel Jul 17, 2023
420297e
feat(Hoffman Mishnah): Fix ingest to use POST
saengel Jul 18, 2023
0b5a704
feat(Hoffman Mishnah): Fixed code for generating commentary trefs
saengel Jul 18, 2023
49c9236
feat(Hoffman Mishnah): Working regex for DH special cases, including …
saengel Jul 19, 2023
0044dd0
feat(Hoffman Mishnah): Fixed DH cleaning
saengel Jul 19, 2023
4174a70
feat(Hoffman Mishnah): Index upload for all masechtot
saengel Jul 20, 2023
c803bc3
feat(Hoffman Mishnah): XML files for all sedarim
saengel Jul 23, 2023
bf7b706
feat(Hoffman Mishnah): Fix Pirkei Avot index bug
saengel Jul 23, 2023
43283f0
feat(Hoffman Mishnah): Fix version bug, remove code for explicit linking
saengel Jul 24, 2023
ebea70e
feat(Hoffman Mishnah): Working ingest for all masechtot, code clean up
saengel Jul 24, 2023
9bfdae7
feat(Hoffman Mishnah): Generalized pattern for capturing intros for e…
saengel Jul 24, 2023
6780be0
feat(Hoffman Mishnah): Handle footnotes for intros, adjust ingest script
saengel Jul 24, 2023
db3fd2a
feat(Hoffman Mishnah): Working intro POST code (except for nezikin)
saengel Jul 24, 2023
205a8f4
feat(Hoffman Mishnah): Clean up footnote format edge cases in Gittin,…
saengel Jul 25, 2023
8edc8d4
feat(Hoffman Mishnah): Nezikin intro rework
saengel Jul 25, 2023
4b271ef
feat(Hoffman Mishnah): Successful parse and processing of Nezikin intro
saengel Jul 25, 2023
2b2deb4
feat(Hoffman Mishnah): In progress post of Nezikin intro node
saengel Jul 25, 2023
27ca6c0
feat(Hoffman Mishnah): Fix category issues on index
saengel Jul 26, 2023
b8af05b
feat(Hoffman Mishnah): Align Nezikin intro name and ref
saengel Jul 26, 2023
aa7c1d1
feat(Hoffman Mishnah): Fix footnote extraction for punctuation edge c…
saengel Jul 26, 2023
751ea9f
feat(Hoffman Mishnah): Rework Nezikin intro index
saengel Jul 26, 2023
d2129aa
feat(Hoffman Mishnah): Script for term and category cauldron setup
saengel Jul 26, 2023
832f68c
feat(Hoffman Mishnah): Segment validation script
saengel Jul 26, 2023
22d9ba6
feat(Hoffman Mishnah): Aligning parse and text script to new Nezikin …
saengel Jul 26, 2023
13bef7d
feat(Hoffman Mishnah): Fix issue of uncaught punctuation
saengel Jul 30, 2023
57857df
feat(Hoffman Mishnah): Handle asterisks at the start of mishnayot
saengel Jul 30, 2023
5369c97
feat(Hoffman Mishnah): Handle asterisks at end of mishnah
saengel Jul 30, 2023
56ce22f
feat(Hoffman Mishnah): Segment Nezikin intro
saengel Jul 31, 2023
8046cb2
feat(Hoffman Mishnah): Fix Nezikin footnotes with segmentation
saengel Jul 31, 2023
fdb6c13
feat(Hoffman Mishnah): Collect footnotes with improper style
saengel Jul 31, 2023
5cbb0d4
feat(Hoffman Mishnah): Further debugging
saengel Jul 31, 2023
ba91967
feat(Hoffman Mishnah): Patch for cases missing an end italics tag
saengel Aug 1, 2023
1a47879
feat(Hoffman Mishnah): Extend validation to check proper DH
saengel Aug 1, 2023
e0dff6a
feat(Hoffman Mishnah): Altering regex to catch edge cases caught by v…
saengel Aug 1, 2023
fb512f1
feat(Hoffman Mishnah): Add validation for Dibbur HaMatchil edge cases
saengel Aug 1, 2023
eb9bad8
feat(Hoffman Mishnah): Refine regex for edge cases
saengel Aug 2, 2023
1291062
feat(Hoffman Mishnah): Refine validation to catch punct errors only
saengel Aug 2, 2023
a988891
feat(Hoffman Mishnah): Completed validation
saengel Aug 2, 2023
f79ec35
feat(Hoffman Mishnah): Silly bug fixes
saengel Aug 2, 2023
cbef55d
fix(Hoffman Mishnah): Use create_category, add seder category
saengel Aug 3, 2023
44f3681
fix(Hoffman Mishnah): Fix indent to always run, debug
saengel Aug 6, 2023
a80a25a
fix(Hoffman Mishnah): Add Seder Nezikin to intro index
saengel Aug 6, 2023
f97f422
fix(Hoffman Mishnah): Refactor to node-level post for efficiency
saengel Aug 7, 2023
65fec00
fix(Hoffman Mishnah): Add period after DH.
saengel Aug 8, 2023
fd9ce59
fix(Hoffman Mishnah): Revert to local post by ref, fix DH format
saengel Aug 10, 2023
610c418
fix(Hoffman Mishnah): Extend validation to cover too long DHs
saengel Aug 10, 2023
6499b04
fix(Hoffman Mishnah): Account for <span> in DH
saengel Aug 13, 2023
5f9136e
chore(Hoffman Mishnah): Code clean up
saengel Aug 13, 2023
9f53afd
chore(Hoffman Mishnah): Correct version metadata
saengel Aug 20, 2023
382aa5a
fix(Hoffman Mishnah): Fix collective title, Hebrew names
saengel Aug 20, 2023
9939983
feat(Hoffman Mishnah): Add general intro index
saengel Aug 20, 2023
34fc029
chore(Hoffman Mishnah): Final polish
saengel Aug 20, 2023
9f798ca
fix(Hoffman Mishnah): Fix missing Pirkei Avot text, final polishes
saengel Aug 20, 2023
8179c3a
fix(Hoffman Mishnah): Fixing category, collective and index titles
saengel Aug 22, 2023
6f9aa8d
fix(Hoffman Mishnah): Update cauldron term/category script
saengel Aug 22, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions sources/hoffman_de_mishnah_commentary/complete_ingest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import django

django.setup()

import time
from collections import defaultdict
from sefaria.model import *
from sefaria.tracker import modify_bulk_text
from sources.functions import post_text, post_link
from sources.local_settings import SEFARIA_SERVER
from sources.hoffman_de_mishnah_commentary.extract_commentary import create_text_data_dict
from sources.hoffman_de_mishnah_commentary.parse_intro_xml import process_xml
from sources.hoffman_de_mishnah_commentary.create_index import create_index_main, create_term_and_category


def create_mappings():
mappings = defaultdict(dict)
data_dict = create_text_data_dict()

for tref in data_dict:
mappings[Ref(tref).index.title][tref] = data_dict[tref]

return mappings


def generate_text_post_format(intro_text="", require_intro_format=False):
if require_intro_format:
intro_text = [intro_text]
return {
"text": intro_text,
"versionTitle": "Mischnajot mit deutscher Übersetzung und Erklärung. Berlin 1887-1933 [de]",
"versionSource": "https://www.nli.org.il/he/books/NNL_ALEPH002378149/NLI",
"versionNotes": "Ordnung Seraïm, übers. und erklärt von Ascher Samter. 1887.<br>Ordnung Moed, von Eduard Baneth. 1887-1927.<br>Ordnung Naschim, von Marcus Petuchowski u. Simon Schlesinger. 1896-1933.<br>Ordnung Nesikin, von David Hoffmann. 1893-1898.<br>Ordnung Kodaschim, von John Cohn. 1910-1925.<br>Ordnung Toharot, von David Hoffmann, John Cohn und Moses Auerbach. 1910-1933.",
"language": "en"
}


def upload_intros(intro_dict):
tref = f"German Commentary, Introduction to Seder Nezikin"
intro_text = generate_text_post_format(intro_dict["German Commentary, Introduction to Seder Nezikin"],
require_intro_format=False) # different structure than other intros
post_text(ref=tref, text=intro_text, server=SEFARIA_SERVER)

tref="German Commentary, Introduction"
with open("general_intro_to_mishnah.txt", "r") as f:
general_text = f.read()
intro_text = generate_text_post_format(general_text, require_intro_format=True) # different structure than other intros
post_text(ref=tref, text=intro_text, server=SEFARIA_SERVER)


def upload_text(mappings):
intro_dict = process_xml()

upload_intros(intro_dict)

for book, book_map in mappings.items():
print(f"Uploading text for {book}")

if book in intro_dict:
tref = f"{book}, Introduction"
intro_text = generate_text_post_format(intro_dict[book], require_intro_format=True)
post_text(ref=tref, text=intro_text, server=SEFARIA_SERVER)

for tref in book_map:
formatted_text = generate_text_post_format(book_map[tref])
post_text(ref=tref, text=formatted_text, server=SEFARIA_SERVER)


if __name__ == '__main__':
# TODO - Run Term/Category cauldron script

# create_index_main()
# print("UPDATE: Indices created")

# If errors before mapping, trying running admin/reset/cache, then admin/reset/toc, then admin/reset/cache
# and run just from the stage below.

mapper = create_mappings()
print("UPDATE: Text map generated")

upload_text(mapper)
print("UPDATE: Text ingest complete")
160 changes: 160 additions & 0 deletions sources/hoffman_de_mishnah_commentary/create_index.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
# -*- coding: utf-8 -*-
import django

django.setup()

from sefaria.model import *
from sefaria.helper import category
from sources import functions

nezikin_masechtot = ['Mishnah Bava Kamma',
'Mishnah Bava Metzia',
'Mishnah Bava Batra',
'Mishnah Sanhedrin',
'Mishnah Makkot',
'Mishnah Shevuot',
'Mishnah Eduyot',
'Mishnah Avodah Zarah',
'Pirkei Avot',
'Mishnah Horayot']


def create_term_and_category():
# Create Term, if it doesn't yet exist
ts = TermSet({'name': '/German Commentary/'})
if ts.count() == 0:

# Term for the Collective Title
t = Term()
t.name = "German Commentary"
t.add_primary_titles("German Commentary", "פירוש גרמני")
t.save()

# Create a Category, if it doesn't yet exist
cs = CategorySet({'sharedTitle': 'German Commentary'})
if cs.count() == 0:
category.create_category(["Mishnah", "Modern Commentary on Mishnah", "German Commentary"])
sedarim = ["Seder Zeraim", "Seder Moed", "Seder Nashim", "Seder Nezikin", "Seder Kodashim", "Seder Tahorot"]
for seder in sedarim:
category.create_category(["Mishnah", "Modern Commentary on Mishnah", "German Commentary", seder])


def create_index_record(masechet, he_masechet):
record = SchemaNode()
he_title = "פירוש גרמני על " + he_masechet # f-String was not working well with RTL text
en_title = f"German Commentary on {masechet}"
record.add_title(en_title, 'en', primary=True, )
record.add_title(he_title, "he", primary=True, )
record.key = f"German Commentary on {masechet}" if masechet == "Pirkei Avot" else f"German Commentary on {masechet}"
record.collective_title = "German Commentary" # Must be a term
return record


def get_seder(masechet):
return library.get_index(masechet).categories[-1]


# Introduction node:
def add_intro_node(record):
intro_node = JaggedArrayNode()
intro_node.add_title("Introduction", 'en', primary=True)
intro_node.add_title("הקדמה", 'he', primary=True)
intro_node.key = "Introduction"
intro_node.depth = 1
intro_node.addressTypes = ['Integer']
intro_node.sectionNames = ['Paragraph']
record.append(intro_node)


# Text node:
def add_text_node(record, is_nezikin=False):
text_node = JaggedArrayNode()
text_node.key = "default"
text_node.default = True if not is_nezikin else record.primary_title()
text_node.depth = 3
text_node.addressTypes = ['Integer', 'Integer', 'Integer']
text_node.sectionNames = ['Chapter', 'Mishnah', 'Paragraph']
record.append(text_node)


def create_intros(type="nezikin"):
# Create record
record = SchemaNode()

if type == "nezikin":
he_title = "פירוש גרמני על המשנה, הקדמה לסדר נזיקין"
en_title = f"German Commentary, Introduction to Seder Nezikin"
elif type == "general":
he_title = "פירוש גרמני, הקדמה"
en_title = f"German Commentary, Introduction"
record.add_title(en_title, 'en', primary=True, )
record.add_title(he_title, "he", primary=True, )
record.key = f"German Commentary, Introduction to Seder Nezikin" if type == "nezikin" else f"German Commentary, Introduction"
record.collective_title = "German Commentary" # Must be a term

# Add text node
text_node = JaggedArrayNode()
text_node.key = "default"
text_node.default = record.primary_title()
text_node.depth = 1
text_node.addressTypes = ['Integer']
text_node.sectionNames = ['Paragraph']
record.append(text_node)

# Post the index
record.validate()
index = {
"title": record.primary_title(),
"schema": record.serialize(),
"is_dependant": True,
"dependence": "Commentary"
}
if type == "nezikin":
index["categories"] = ['Mishnah', 'Modern Commentary on Mishnah', 'German Commentary',
'Seder Nezikin']
elif type == "general":
index["categories"] = ['Mishnah', 'Modern Commentary on Mishnah', 'German Commentary']

print(index)
functions.post_index(index)


def create_index_main():
mishnayot = library.get_indexes_in_category("Mishnah", full_records=True)

create_intros(type="nezikin")
create_intros(type="general")

for mishnah_index in mishnayot:
en_title = mishnah_index.get_title("en")
he_title = mishnah_index.get_title("he")

record = create_index_record(en_title, he_title)

seder = get_seder(en_title)

# Nezikin masechtot don't have intros
if en_title not in nezikin_masechtot:
add_intro_node(record)
add_text_node(record)
else:
add_text_node(record, is_nezikin=True)

record.validate()
index = {
"title": record.primary_title(),
"categories": ["Mishnah", "Modern Commentary on Mishnah", "German Commentary", seder],
"schema": record.serialize(),
"base_text_titles": [en_title],
"base_text_mapping": "many_to_one",
"is_dependant": True,
"dependence": "Commentary"
}

functions.post_index(index)
print(index)


if __name__ == '__main__':
# create_term_and_category()
create_index_main()
99 changes: 99 additions & 0 deletions sources/hoffman_de_mishnah_commentary/extract_commentary.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# -*- coding: utf-8 -*-
import django

django.setup()

from sefaria.model import *
import re

text = {}


def action(segment_str, tref, he_tref, version):
global text
text[tref] = segment_str


def retrieve_version_text():
version_query = {"versionTitle": "Mischnajot mit deutscher Übersetzung und Erklärung. Berlin 1887-1933 [de]",
"title": {"$regex": "^Mishnah|Pirkei"}}
hoffman_version = VersionSet(version_query)
for v in hoffman_version:
v.walk_thru_contents(action)


def create_text_data_dict():
retrieve_version_text()
data_dict = {}

for mishnah_tref in text:
commentary_ref_counter = 1
mishnah_text = text[mishnah_tref]

# Patching Mishnahs missing </i> at the end
if mishnah_tref in ["Mishnah Eruvin 7:3", "Mishnah Niddah 6:14", "Mishnah Bava Metzia 4:1"]:
mishnah_text = f"{mishnah_text}</i>"

# These two Mishnayot, with images, will be handled manually
if mishnah_tref == "Mishnah Chagigah 3:4" or mishnah_tref == "Mishnah Eruvin 5:4":
continue

res = re.findall(r"(.*?)<sup.*?>(.*?)<\/sup><i class=\"footnote\">(.*?)</i>",
mishnah_text)

if res:
for each_comment in res:
bolded_main_text = f"{each_comment[0]}"
marker = f"{each_comment[1]}"
footnote_text = each_comment[2]

if marker == "*":
dh = [""] # No Dibbur HaMatchil for Asterisk cases
bolded_main_text = ""
if "<ftnote>" in footnote_text:
footnote_text = footnote_text.replace("<ftnote>", "")

# Extract Dibbur HaMatchil based on Punctuation

# Parenthesis
if bolded_main_text and re.search(r"\)[^A-Za-z]?$", bolded_main_text):
dh = re.findall(
r"[:;.,?!()«»„—…·]([a-zA-ZäöüÄÖÜßáéíóúàèëìòùâäêîôûÂÊÎÔÛ\u0590-\u05FF<>\/= \"«]*[:;.,?!()«»„—… ]*?[a-zA-ZäöüÄÖÜßáéíóúàèìòùâêîôûÂÊÎÔÛ\u0590-\u05FF<>\/=\- ’‘\"« \[\] \":;.,?!()«»„—…]*)$",
bolded_main_text)
# End Punctuation
elif bolded_main_text and bolded_main_text[-1] in ["?", ".", ",", ";", ":", "«", "»", "!", "“", "„"]:
dh = re.findall(r"([a-zA-ZäöüÄÖÜßáéíóúàèëìòùâäêîôûÂÊÎÔÛ\u0590-\u05FF<>\/=\- ’‘\"« \[\]]{2,}[:;.,?!()«»„—…“]{0,2})$",
bolded_main_text)
# Initial footnote (i.e. at start, before text)
elif bolded_main_text == "" or bolded_main_text == " ":
dh = ""
else:
bolded_main_text = f"{bolded_main_text}." ## Period added for DH anchor in regex
dh = re.findall(r"[:;.,?!()«»„—…·“]([a-zA-ZäöüÄÖÜßáéíóúàèëìòùâäêîôûÂÊÎÔÛ\u0590-\u05FF<>\/=\- ’‘\"« \[\]]*)\.$",
bolded_main_text)

# Case where first phrase etc
if not dh:
dh = [bolded_main_text]

# Process DH
dh = dh[0].strip()
dh = dh.strip("«»,.:;— ")
dh = re.sub(r"[^A-Za-z>]{1,2}$", "", dh)

commentary_tref = f"German Commentary on {mishnah_tref}:{commentary_ref_counter}"
data_dict[commentary_tref] = f"<b>{dh}.</b> {footnote_text}" if dh else f"{footnote_text}"
commentary_ref_counter += 1

if dh == [] or dh == [""]:
print(f"{mishnah_tref}")
print(f"Main text: {bolded_main_text}")
print(f"Parsed DH: {dh}")
print("\n")

return data_dict


if __name__ == '__main__':
d = create_text_data_dict()
print(d.keys())
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Einleitung.
Das Gesetz Gottes, welches uns als Norm für alle Verhältnisse des Lebens gegeben wurde, besteht aus zwei Theilen: 1) aus der schriftlichen Lehre, תורה שבכתב und 2) aus der mündlichen Lehre, תורה שבעל פה. Beide sind dem Mose auf dem Berge Sinai überliefert worden mit der Weisung, sie zu einem Erbtheil der Gemeinde Jacobs zu machen: תורה צוה לנו משה מורשה קהלת יעקב „Die Lehre, die uns Moses befohlen, ist ein Erbtheil der Gemeinde Jakobs." (Deuteron. 33, 4). An die fünf Bücher Mosis (gemeinhin תורה genannt) schlössen sich im Laufe der folgenden Jahrhunderte noch die Bücher der Propheten = נביאים: und die heiligen Schriften = כתובים, so dass schliesslich die schriftliche Lehre aus 24 Büchern bestand. Die mündliche Lehre aber sollte bleiben, was sie war; sie sollte nicht aufgeschrieben werden, sondern sich durch üeber- lieferung im Gedächtnisse der Geschlechter fortpflanzen. Wie das später geschah, darüber belehrt uns die folgende Mischna: משה קבל תורה מסיני, ומסרה ליהושע, ויהושע לזקנים, וזקנים לנביאים, ונביאים מסרוה לאנשי כנסת הגדולה „Moses empfing die Lehre vom Sinai und überlieferte sie dem Josua, dieser den Aeltesten, die Aeltesten den Propheten, die Propheten überlieferten sie den Männern der grossen Synode (Tract. Aboth, Abschn. 1, Mischn. 1)." — Ohne die mündliche Lehre würden wir' kein Verständniss für die schrift- liche Lehre haben. So wären z. B. die Worte: וקשרתם לאות על ידך „Du sollst sie (die Worte der Lehre) als Zeichen an Deine Hand knüpfen" (Deuteron. 6, 8), ohne die Erläuterung, dass damit die תפלין (Denkriemen) gememt sind, unverständlich. Ebenso findet das Gebot der Heilighaltung des שבת seine Erklärung erst durch die Aufzählung der 39 verbotenen Arbeiten in der Misclma etc.
Jahrhunderte lang erhielt sich die mündliche Lehre auch durch Ueber- lieferung von Geschlecht zu Geschlecht, ohne dass eine Veranlassung zu ihrer schriftlichen Fixirung vorhanden gewesen wäre. Auch während der Dauer des babylonischen Exils (586—537) und eben so in den darauf folgenden Jahren fanden sich Männer in genügender Anzahl, die fähig waren, das Ueberlieferte im Gedächtnisse treu zu bewahren und durch Unterweisung weiterzupflanzen. Diese Männer hiessen סופרים = Schrift- erklärer, und der berühmteste und bekannteste unter ihnen ist עזרא הסופר, der im Verein mit Serubabel und Nehemia die Juden aus dem Exil zurückführte. Aus der Vereinigung dieser סופרים entstand die „grosse Synode" (כנסת הגדולה), die durch mehr als zwei Jahrhunderte alle Ange- legenheiten des jüdischen Staates, sowohl die kulturellen wie die politischen, ordnete. Sie erliess mehrere Verordnungen, die durch die Verhältnisse geboten erschienen und die auch Gesetzeskraft erlangten, einige Verbote bezüglich des Sabbath und der Ehen (cf. Nehemias gegen Ende), auch das Lesen der Megillath Esther, die Benedeiungen (ברכות), die Gebete (תפלות) u. s. w. Ihnen wird ferner die Aufzeichnung von Hesekiel, der zwölf kleinen Propheten, Daniel und Esther zugewiesen (cf. Baba Bathra 15).
Als letzter Vertreter dieser grossen Synode wird Aboth Abschn. I. 2. Simon der Gerechte genannt. Darauf folgen die זוגות (Paare): der נשיא Fürst und ihm zur Seite der pi n-a 3S, Präsidenten des Synhed- rions, des obersten Gerichtshofes, (cf. Aboth 1). Die ersten hiessen: Jose ben Joeser aus Zereda und Jose ben Jochanan aus Jerusalem. Die letzten waren Samai und Hillel (30 vor der gew. Zeitr.) Darauf folgen die תנאים, von ר' יוחנן בן זכאי bis ר' יהודה הנשיא. Als aber um diese Zeit die Macht der äusseren Verhältnisse, der Druck der Fremdherrschaft und die Hinrichtung der edelsten und gelehrtesten Gesetzeslehrer die Gefahr eines allmählichen Verlustes der mündlichen Lehre nahelegte, da entschloss sich R. Jehuda Ha-Nasi durch eine Zusammenstellung wichtiger Aussprüche anerkannter Autoritäten und durch Anführung oft widerstreitender An- sichten eine Grundlage zu schaffen, auf welcher die mündliche Lehre weiter und weiter ausgebaut und fortgepflanzt werden könnte. Ihm war von anderen Männern schon vorgearbeitet worden. Namentlich R. Akiba hatte eine Mischnasammlung verfasst (משנת דרבי עקיבא), die R. Jehuda Ha-Nasi ebenso wie die des R. Meir, des Schülers des R. Akiba, bei Ab- fassung seiner Mischna verwendete. Ausserdem fanden noch einzelne Aus- sprüche und Entscheidungen berühmter Gesetzeslehrer תנאים (deren Namen weiter unten folgen), Aufnahme in die Mischna. Aber mit grosser Strenge und Rigorosität wurde bei der Aufnahme verfahren und Alles, was nicht die strengste Kritik aushalten konnte, ausgeschieden. Daher datirt auch das grössere Ansehen der Mischna gegenüber der ברייתא, תוספתא (die nicht in den Canon aufgenommenen Mischnajot) und den midraschischen Werken: ספרי, ספרא, מכילתא. Als Redacteure der תוספתא und ברייתא werden ר' חייא, ר' נחמיה und ר' אושעיא genannt; die מכילתא wird ספרא, ר' ישמעאל (Midrasch zum III. B. M.) dem ר' יהודה und ספרי (Midrasch zum IV. und V. B. M.) dem ר' שמעון zugeschrieben; die beiden letzteren sollen jedoch nur stets der Ansicht ihres Lehrers R. Akiba gefolgt sein. Der Inhalt dieser Werke wird von den אמוראים (den Nachfolgern der תנאים) in ihren Discussionen in der גמרא (Talmud) oft herangezogen, um etwaige Schwie- rigkeiten in der Erklärung der משנה durch Vergleich mit Stellen in jenen Werken zu heben.
Loading