You might want to consider the start of this tutorial.

Short introductions to other TF datasets:

Rich display

Text-Fabric offers pretty and plain displays of textual objects.

A plain display of an object is a simple reference to that object if it is big, or the text of that object if it is small.

A pretty display of an object is a representation of the structure of that object. It contains text and features of sub objects. Provided the object is not too big.

In [1]:
%load_ext autoreload
%autoreload 2

Incantation

The ins and outs of installing Text-Fabric, getting the corpus, and initializing a notebook are explained in the start tutorial.

In [2]:
from tf.app import use
In [3]:
A = use('bhsa', hoist=globals())
# A = use('bhsa:clone', checkout="clone", hoist=globals())
Using TF-app in /Users/dirk/text-fabric-data/annotation/app-bhsa/code:
	rv2.0.4=#7b3b9ffba7ee6dbc76a52b8d76475d17babf0daf offline under ~/text-fabric-data (local release)
Using data in /Users/dirk/text-fabric-data/etcbc/bhsa/tf/c:
	rv1.6=#bac4a9f5a2bbdede96ba6caea45e762fe88f88c5 offline under ~/text-fabric-data (local release)
Using data in /Users/dirk/text-fabric-data/etcbc/phono/tf/c:
	r1.2=#1ac68e976ee4a7f23eb6bb4c6f401a033d0ec169 offline under ~/text-fabric-data (local release)
Using data in /Users/dirk/text-fabric-data/etcbc/parallels/tf/c:
	r1.2=#395dfe2cb69c261862fab9f0289e594a52121d5c offline under ~/text-fabric-data (local release)
   |     0.00s Dataset without structure sections in otext:no structure functions in the T-API

Arbitrary nodes

We pretty-print some (arbitrary) nodes.

The first verse.

In [4]:
v1 = A.nodeFromSectionStr('Genesis 1:1')
v1
Out[4]:
1414354

With standard features displayed:

In [6]:
A.pretty(v1, standardFeatures=True)
Genesis 1:1 
verse
sentence 1
clause xQtX NA
phrase PP Time
inpdp=prep
beginningpdp=subs
phrase VP Pred
createpdp=verbvs=qalvt=perf
phrase NP Subj
god(s)pdp=subs
phrase PP Objc
<object marker>pdp=prep
thepdp=art
heavenspdp=subs
andpdp=conj
<object marker>pdp=prep
thepdp=art
earthpdp=subs

Now a phrase. We display it with little and with much information.

In [7]:
phrase = 651574
A.pretty(phrase, withNodes=False, prettyTypes=False)
A.pretty(phrase, withNodes=True, standardFeatures=True, showChunks=True)
Genesis 1:4 
phrase:651574 PP Cmpl
phrase_atom:904781 PP NA
intervalpdp=prep
52 הָ
thepdp=art
lightpdp=subs
54 וּ
andpdp=conj
intervalpdp=prep
56 הַ
thepdp=art
darknesspdp=subs

Where is this phrase on SHEBANQ? You can click on the passage reference.

You can generate a link that points to where a node is on SHEBANQ as follows:

In [8]:
A.webLink(phrase)

If you want just the url:

In [9]:
A.webLink(phrase, urlOnly=True)
Out[9]:
'https://shebanq.ancient-data.org/hebrew/text?book=Genesis&chapter=1&verse=4&version=c&mr=m&qw=q&tp=txt_p&tr=hb&wget=v&qget=v&nget=vt'

A link to another passage:

In [10]:
z = A.nodeFromSectionStr('Ezra 3:4')
In [11]:
A.webLink(z)

Plain

We can represent a node in plain representation and highlight specific portions.

In [12]:
firstVerse = F.otype.s('verse')[0]
allPhrases = F.otype.s('phrase')
phrases = {allPhrases[1], allPhrases[3]}
words = (2, 4, 6, 9)
In [13]:
firstSentence = F.otype.s('sentence')[0]
A.plain(firstSentence)
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

First we highlight some words:

In [14]:
highlights = set(words)
A.plain(firstVerse, highlights=highlights)
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

Now some phrases:

In [15]:
highlights = set(phrases)
print(highlights)
A.plain(firstVerse, highlights=highlights)
{651545, 651543}
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

As you see, when we highlight bigger things than words, we put a highlighted border around the words in those things.

We can do both:

In [16]:
highlights = set(phrases) | set(words)
A.plain(firstVerse, highlights=highlights)
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

We can also highlight the verse itself.

In [17]:
highlights = {firstVerse}
A.plain(firstVerse, highlights=highlights)
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

We can use different colors for highlighting:

  • some words are red
  • some other words are green
  • phrases are blue
In [18]:
highlights = {i: 'lightsalmon' for i in [1, 5, 9]}
highlights.update({i: 'mediumaquamarine' for i in [3, 7]})
highlights.update({i: 'blue' for i in phrases})
highlights.update({firstVerse: '#eeeeee'})
A.plain(firstVerse, highlights=highlights)
Genesis 1:1  בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃

Pretty

We define two verse nodes:

In [19]:
verse1 = A.nodeFromSectionStr('Genesis 1:7')
verse2 = A.nodeFromSectionStr('Genesis 1:17')

and display the first one:

In [20]:
A.pretty(verse1)
Genesis 1:7 
verse
sentence
sentence
clause
phrase
phrase

In the next verse we choose a bit more to display: we include standard features:

In [21]:
A.pretty(verse2, standardFeatures=True)
Genesis 1:17 
verse
sentence 46
clause WayX NA
phrase CP Conj
andpdp=conj
phrase VP Pred
givepdp=verbvs=qalvt=wayq
phrase PP Objc
<object marker>pdp=prep
phrase NP Subj
god(s)pdp=subs
phrase PP Cmpl
inpdp=prep
firmamentpdp=subs
thepdp=art
heavenspdp=subs
clause InfC Adju
phrase VP Pred
topdp=prep
be lightpdp=verbvs=hifvt=infc
phrase PP Cmpl
uponpdp=prep
thepdp=art
earthpdp=subs

The labels of the nodes come from features in the data: hover over a label to see which feature is responsible. The same holds for the unnamed features below the words, in particular the gloss.

Note that the sentence in this verse continues after the verse ends, that is why it has no left border.

In the BHSA,entences, clauses and phrases may be discontinuous. The designers of the BHSA data (Eep Talstra and Constantijn Sikkel et al.) have added node types sentence_atom, clause_atom and phrase_atom.

They are the continuous chunks within the objects of their corresponding non-atom types. The atom types form a nice nest of building blocks.

Usually we hide the atom types from view. However, you still see a weak border where the chunks (atoms) are. But we can make them visible:

In [22]:
A.pretty(verse2, showChunks=True)
Genesis 1:17 
verse
sentence
sentence_atom
clause
clause_atom
phrase
phrase_atom
phrase
phrase_atom
phrase
phrase_atom
phrase
clause
clause_atom
phrase
phrase_atom
phrase

Back to the view without the atoms.

We can even leave out the node types:

We put in the features (again) and also add node numbers:

In [24]:
A.pretty(verse2, withNodes=True, standardFeatures=True)
Genesis 1:17 
verse:1414370
sentence:1172335 46
clause:427611 WayX NA
phrase:651720 CP Conj
314 וַ
andpdp=conj
phrase:651721 VP Pred
givepdp=verbvs=qalvt=wayq
phrase:651722 PP Objc
<object marker>pdp=prep
phrase:651723 NP Subj
god(s)pdp=subs
phrase:651724 PP Cmpl
318 בִּ
inpdp=prep
firmamentpdp=subs
320 הַ
thepdp=art
heavenspdp=subs
clause:427612 InfC Adju
phrase:651725 VP Pred
322 לְ
topdp=prep
be lightpdp=verbvs=hifvt=infc
phrase:651726 PP Cmpl
uponpdp=prep
325 הָ
thepdp=art
earthpdp=subs

Now we selectively remove a few features from the display:

In [25]:
A.pretty(verse2, standardFeatures=True, suppress={'gloss', 'typ'})
Genesis 1:17 
verse
sentence 46
clause NA
phrase Conj
pdp=conj
phrase Pred
pdp=verbvs=qalvt=wayq
phrase Objc
phrase Subj
phrase Cmpl
pdp=prep
pdp=art
clause Adju
phrase Pred
pdp=prep
pdp=verbvs=hifvt=infc
phrase Cmpl
pdp=prep
pdp=art

Now we add features to the display: lex and g_word :

In [26]:
A.displaySetup(extraFeatures=['lex', 'g_word'], standardFeatures=True)

We also made standardFeatures=True) the temporary default.

In [27]:
A.pretty(verse2)
Genesis 1:17 
verse
sentence 46
clause WayX NA
phrase CP Conj
andpdp=conjg_word=WA-lex=W
phrase VP Pred
givepdp=verbvs=qalvt=wayqg_word=J.IT.;71Nlex=NTN[
phrase PP Objc
<object marker>pdp=prepg_word=>[email protected]lex=>T
phrase NP Subj
god(s)pdp=subsg_word=>:ELOHI73JMlex=>LHJM/
phrase PP Cmpl
inpdp=prepg_word=B.I-lex=B
firmamentpdp=subsg_word=R:QI74J<Alex=RQJ</
thepdp=artg_word=HA-lex=H
heavenspdp=subsg_word=[email protected]@92JIMlex=CMJM/
clause InfC Adju
phrase VP Pred
topdp=prepg_word=L:-lex=L
be lightpdp=verbvs=hifvt=infcg_word=[email protected]>I73JRlex=>WR[
phrase PP Cmpl
uponpdp=prepg_word=<ALlex=<L
thepdp=artg_word=[email protected]lex=H
earthpdp=subsg_word=>@75REYlex=>RY/

and we reset the pretty features to the default values:

In [28]:
A.displayReset('extraFeatures')
In [29]:
A.pretty(verse2)
Genesis 1:17 
verse
sentence 46
clause WayX NA
phrase CP Conj
andpdp=conj
phrase VP Pred
givepdp=verbvs=qalvt=wayq
phrase PP Objc
<object marker>pdp=prep
phrase NP Subj
god(s)pdp=subs
phrase PP Cmpl
inpdp=prep
firmamentpdp=subs
thepdp=art
heavenspdp=subs
clause InfC Adju
phrase VP Pred
topdp=prep
be lightpdp=verbvs=hifvt=infc
phrase PP Cmpl
uponpdp=prep
thepdp=art
earthpdp=subs

We can also opt for less detail: suppose we do not want to dig deeper than the phrases:

In [46]:
A.pretty(verse2, baseTypes={"phrase"})
Genesis 1:17 
verse
sentence 46
clause WayX NA
phrase וַ
phrase יִּתֵּ֥ן
phrase אֹתָ֛ם
phrase אֱלֹהִ֖ים
phrase בִּרְקִ֣יעַ הַשָּׁמָ֑יִם
clause InfC Adju
phrase לְהָאִ֖יר
phrase עַל־הָאָֽרֶץ׃

or if clauses are enough:

In [47]:
A.pretty(verse2, baseTypes={"clause"})
Genesis 1:17 
verse
sentence 46
clause וַיִּתֵּ֥ן אֹתָ֛ם אֱלֹהִ֖ים בִּרְקִ֣יעַ הַשָּׁמָ֑יִם
clause לְהָאִ֖יר עַל־הָאָֽרֶץ׃

even sentences are possible:

In [48]:
A.pretty(verse2, baseTypes={"sentence"})
Genesis 1:17 
verse
sentence וַיִּתֵּ֥ן אֹתָ֛ם אֱלֹהִ֖ים בִּרְקִ֣יעַ הַשָּׁמָ֑יִם לְהָאִ֖יר עַל־הָאָֽרֶץ׃

Before we go on, we reset the display completely.

In [49]:
A.displayReset()

Query results

We run a TF query and show some of its results with a lot of pomp and circumstance. The query is written by Stephen Ku, and he is the one who prompted me to write rich display function for query results.

It asks for a sentence in which there are three clauses, each entirely before the next one.

The first clause has a predicate phrase containing a verb.

The second clause has a predicate phrase, a verb is not required nor forbidden.

The third clause has an object phrase containing a (proper) noun or personal/demonstrative/interrogative pronoun.

In [50]:
ellipQuery = '''
sentence
  c1:clause
    phrase function=Pred
      word pdp=verb
  c2:clause
    phrase function=Pred
  c3:clause typ=Ellp
    phrase function=Objc
      word pdp=subs|nmpr|prps|prde|prin
  c1 << c2
  c2 << c3
'''

Above is the query template. Now we run the query.

In [51]:
results = A.search(ellipQuery)
  2.27s 1472 results

There are several ways to present the results. Here are results 10-12 in a table:

In [52]:
A.table(results, start=10, end=12)
npsentenceclausephrasewordclausephraseclausephraseword
10Exodus 18:8וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל אֵ֤ת כָּל־הַתְּלָאָה֙ אֲשֶׁ֣ר מְצָאָ֣תַם בַּדֶּ֔רֶךְ וַיַּצִּלֵ֖ם יְהוָֽה׃ וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־יְסַפֵּ֤ר יְסַפֵּ֤ר אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל עָשָׂ֤ה אֵ֤ת כָּל־הַתְּלָאָה֙ אֵ֤ת כָּל־הַתְּלָאָה֙ כָּל־
11Exodus 18:8וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל אֵ֤ת כָּל־הַתְּלָאָה֙ אֲשֶׁ֣ר מְצָאָ֣תַם בַּדֶּ֔רֶךְ וַיַּצִּלֵ֖ם יְהוָֽה׃ וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־יְסַפֵּ֤ר יְסַפֵּ֤ר אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל עָשָׂ֤ה אֵ֤ת כָּל־הַתְּלָאָה֙ אֵ֤ת כָּל־הַתְּלָאָה֙ תְּלָאָה֙
12Exodus 23:15אֶת־חַ֣ג הַמַּצֹּות֮ תִּשְׁמֹר֒ וְחַ֤ג הַקָּצִיר֙ בִּכּוּרֵ֣י מַעֲשֶׂ֔יךָ אֲשֶׁ֥ר תִּזְרַ֖ע בַּשָּׂדֶ֑ה וְחַ֤ג הָֽאָסִף֙ בְּצֵ֣את הַשָּׁנָ֔ה בְּאָסְפְּךָ֥ אֶֽת־מַעֲשֶׂ֖יךָ מִן־הַשָּׂדֶֽה׃ אֶת־חַ֣ג הַמַּצֹּות֮ תִּשְׁמֹר֒ תִּשְׁמֹר֒ תִּשְׁמֹר֒ אֲשֶׁ֥ר תִּזְרַ֖ע בַּשָּׂדֶ֑ה תִּזְרַ֖ע וְחַ֤ג הָֽאָסִף֙ חַ֤ג הָֽאָסִף֙ חַ֤ג

You can also show the results in pretty displays. The A.show() function asks you for some limits (it will not show more than 100 at a time), and then it displays them.

It lists the results as follows:

  • a heading showing which result in the sequence of all results this is
  • a display of all verses that have result material, with the places highlighted that correspond to a node in the result tuple

We show result 10 only.

In [53]:
A.show(results, start=10, end=10, withNodes=True)

result 10

Exodus 18:8 
verse:1416361
sentence:1178439
clause:435507
typ=WayX
phrase:675471
function=Conjtyp=CP
38604 וַ
pdp=conj
phrase:675472
function=Predtyp=VP
pdp=verb
phrase:675473
function=Subjtyp=PrNP
pdp=nmpr
phrase:675474
function=Cmpltyp=PP
38607 לְ
pdp=prep
pdp=subs
phrase:675475
function=Objctyp=PP
38609 אֵת֩
pdp=prep
pdp=subs
clause:435508
typ=xQtX
phrase:675476
function=Relatyp=CP
pdp=conj
phrase:675477
function=Predtyp=VP
pdp=verb
phrase:675478
function=Subjtyp=PrNP
pdp=nmpr
phrase:675479
function=Cmpltyp=PP
38614 לְ
pdp=prep
pdp=subs
38616 וּ
pdp=conj
38617 לְ
pdp=prep
pdp=nmpr
phrase:675480
function=Adjutyp=PP
38619 עַ֖ל
pdp=prep
pdp=subs
clause:435509
typ=Ellp
phrase:675481
function=Objctyp=PP
38622 אֵ֤ת
pdp=prep
pdp=subs
38624 הַ
pdp=art
pdp=subs
clause:435510
typ=xQt0
phrase:675482
function=Relatyp=CP
pdp=conj
phrase:675483
function=PreOtyp=VP
pdp=verb
phrase:675484
function=Locatyp=PP
38628 בַּ
pdp=prep
38629
pdp=art
pdp=subs
clause:435511
typ=WayX
phrase:675485
function=Conjtyp=CP
38631 וַ
pdp=conj
phrase:675486
function=PreOtyp=VP
pdp=verb
phrase:675487
function=Subjtyp=PrNP
pdp=nmpr

Note that although the standard features are not all shown, the features mentioned in the query are shown. We can suppress that as well:

In [54]:
A.show(results, start=10, end=10, withNodes=True, queryFeatures=False)

result 10

Exodus 18:8 
verse:1416361
sentence:1178439
clause:435507
phrase:675471
38604 וַ
phrase:675472
phrase:675473
phrase:675474
phrase:675475
38609 אֵת֩
clause:435508
phrase:675476
phrase:675477
phrase:675478
phrase:675479
phrase:675480
clause:435509
phrase:675481
clause:435510
phrase:675482
phrase:675483
phrase:675484
38628 בַּ
38629
clause:435511
phrase:675485
38631 וַ
phrase:675486
phrase:675487

We can also package the results tuples in other things than verses, e.g. sentences, and at the same time cut off the displays at phrases:

In [55]:
A.displaySetup(queryFeatures=False)
A.show(results, start=10, end=12, withNodes=True, condenseType='sentence', baseTypes={"phrase"})

result 10

Exodus 18:8 
sentence:1178439
clause:435507
phrase:675471 וַ
phrase:675472 67547238605יְסַפֵּ֤ר
phrase:675473 מֹשֶׁה֙
phrase:675474 לְחֹ֣תְנֹ֔ו
phrase:675475 אֵת֩ כָּל־
clause:435508
phrase:675476 אֲשֶׁ֨ר
phrase:675477 675477עָשָׂ֤ה
phrase:675478 יְהוָה֙
phrase:675479 לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם
phrase:675480 עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל
clause:435509
phrase:675481 675481אֵ֤ת 38623כָּל־הַתְּלָאָה֙
clause:435510
phrase:675482 אֲשֶׁ֣ר
phrase:675483 מְצָאָ֣תַם
phrase:675484 בַּדֶּ֔רֶךְ
clause:435511
phrase:675485 וַ
phrase:675486 יַּצִּלֵ֖ם
phrase:675487 יְהוָֽה׃

result 11

Exodus 18:8 
sentence:1178439
clause:435507
phrase:675471 וַ
phrase:675472 67547238605יְסַפֵּ֤ר
phrase:675473 מֹשֶׁה֙
phrase:675474 לְחֹ֣תְנֹ֔ו
phrase:675475 אֵת֩ כָּל־
clause:435508
phrase:675476 אֲשֶׁ֨ר
phrase:675477 675477עָשָׂ֤ה
phrase:675478 יְהוָה֙
phrase:675479 לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם
phrase:675480 עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל
clause:435509
phrase:675481 675481אֵ֤ת כָּל־הַ38625תְּלָאָה֙
clause:435510
phrase:675482 אֲשֶׁ֣ר
phrase:675483 מְצָאָ֣תַם
phrase:675484 בַּדֶּ֔רֶךְ
clause:435511
phrase:675485 וַ
phrase:675486 יַּצִּלֵ֖ם
phrase:675487 יְהוָֽה׃

result 12

Exodus 23:15 
sentence:1178876
clause:436054
phrase:677181 אֶת־חַ֣ג הַמַּצֹּות֮
phrase:677182 67718241256תִּשְׁמֹר֒
sentence:1178876
clause:436059
phrase:677199 וְ
phrase:677200 חַ֤ג הַקָּצִיר֙
phrase:677201 בִּכּוּרֵ֣י מַעֲשֶׂ֔יךָ
clause:436060
phrase:677202 אֲשֶׁ֥ר
phrase:677203 677203תִּזְרַ֖ע
phrase:677204 בַּשָּׂדֶ֑ה
clause:436061
phrase:677205 וְ
phrase:677206 67720641291חַ֤ג הָֽאָסִף֙
clause:436062
phrase:677207 בְּצֵ֣את
phrase:677208 הַשָּׁנָ֔ה
clause:436063
phrase:677209 בְּאָסְפְּךָ֥
phrase:677210 אֶֽת־מַעֲשֶׂ֖יךָ
phrase:677211 מִן־הַשָּׂדֶֽה׃

Note, that now the phrases are heavily highlighted whereas the highlighted words just have a box around them.

Let's leave out some information:

In [56]:
A.show(results, start=10, end=12, withNodes=False, prettyTypes=False, condenseType='sentence', baseTypes={"clause"}, withPassage=False)

result 10

וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־
אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל
אֵ֤ת כָּל־הַתְּלָאָה֙
אֲשֶׁ֣ר מְצָאָ֣תַם בַּדֶּ֔רֶךְ
וַיַּצִּלֵ֖ם יְהוָֽה׃

result 11

וַיְסַפֵּ֤ר מֹשֶׁה֙ לְחֹ֣תְנֹ֔ו אֵת֩ כָּל־
אֲשֶׁ֨ר עָשָׂ֤ה יְהוָה֙ לְפַרְעֹ֣ה וּלְמִצְרַ֔יִם עַ֖ל אֹודֹ֣ת יִשְׂרָאֵ֑ל
אֵ֤ת כָּל־הַתְּלָאָה֙
אֲשֶׁ֣ר מְצָאָ֣תַם בַּדֶּ֔רֶךְ
וַיַּצִּלֵ֖ם יְהוָֽה׃

result 12

אֶת־חַ֣ג הַמַּצֹּות֮ תִּשְׁמֹר֒
וְחַ֤ג הַקָּצִיר֙ בִּכּוּרֵ֣י מַעֲשֶׂ֔יךָ
אֲשֶׁ֥ר תִּזְרַ֖ע בַּשָּׂדֶ֑ה
וְחַ֤ג הָֽאָסִף֙
בְּצֵ֣את הַשָּׁנָ֔ה
בְּאָסְפְּךָ֥ אֶֽת־מַעֲשֶׂ֖יךָ מִן־הַשָּׂדֶֽה׃

All steps

  • start your first step in mastering the bible computationally
  • display become an expert in creating pretty displays of your text structures
  • search turbo charge your hand-coding with search templates
  • exportExcel make tailor-made spreadsheets out of your results
  • share draw in other people's data and let them use yours
  • export export your dataset as an Emdros database

CC-BY Dirk Roorda