To get started: consult start
Text-Fabric is a tool for computing with read only datasets. How can you manually annotate an existing dataset?
The scenario is: export the portions that must be annotated into a plain text file, accompanied with location information.
Use an external tool, e.g. BRAT to manually annotate that text.
Read the resulting annotations, combine them with the location information, and export the result as a new feature or set of features.
These new features can be published anywhere, see the share tutorial, and users that want to make use of the new features, can tell Text-Fabric to fetch it from the published location alongside the main dataset.
From this point on, the new features act as first class citizens in the dataset.
Note how this does not involve modifying existing datasets!
%load_ext autoreload
%autoreload 2
import os
from tf.app import use
from tf.convert.recorder import Recorder
from tf.dataset import Versions
NB: We used version 0.4 of this data set to export material, annotate the exported material, and draw in those annotation as a bunch of new features. However, in the meanwhile we have newer versions of the missieven data, where different encoding decisions have been applied.
Rather than doing the annotation work again, we want to migrate the annotations from 0.4 to 0.7. We shall show how.
First we show how we made the annotations in 0.4, and to that end we use a previous version of the data.
We have to overcome the fact that in those times this repository resided under a different organization on GitHub (Dans-labs
) and
had a different name (clariah-gm
). Also, the TF-app for this dataset resided in annotation/app-missieven
, while
it is now in clariah/wp6-missieven/app
.
It is still possible to work with that old version. We ask for the old TF-app
and override the org
and repo
settings of the old app, by passing the new values in provenanceSpec=...
.
A = use("missieven:v0.4", checkout="clone", version="0.4", hoist=globals(),
legacy=True, provenanceSpec=dict(org="CLARIAH", repo="wp6-missieven"))
Text-Fabric has support for exporting data together with location information and then importing new data and turning it into new features based on the location information.
See Recorder.
We show the workflow by selecting a letter, exporting the original text material as plain text,
manually annotating it for named entities with BRAT and then saving the output
as a new feature name
.
We choose volume 1 page 6:
p = A.nodeFromSectionStr("1 6")
for ln in L.d(p, otype="line"):
A.plain(ln, fmt="text-orig-full")
Quite a bit of names. Let's leave out the notes.
for ln in L.d(p, otype="line"):
A.plain(ln, fmt="layout-orig")
We'll prepare this portion of text for annotation outside TF.
What needs to happen is, that we produce a text file and that we remember the postions of the relevant nodes in that text file.
The Recorder. lets you create a string from nodes, where the positions of the nodes in that string are remembered. You may add all kinds of material in between the texts of the nodes.
And it is up to you how you represent the nodes.
We can add strings to the recorder, and we can tell nodes to start and to stop.
We add all words in all lines to the recorder, provided the words belong to the original material.
We add line numbers to each line.
# start a recorder
rec = Recorder()
for ln in L.d(p, otype="line"):
# start a line node
rec.start(ln)
# add the line number
rec.add(f"{F.n.v(ln)}. ")
for w in L.d(ln, otype="word"):
trans = F.transo.v(w)
# if there is nothing in transo, it is not original text
if not trans:
continue
# start a word node
rec.start(w)
# add the word and its trailing punctuation
rec.add(f"{trans}{F.punco.v(w)}")
# terminate the word node
rec.end(w)
# add a newline
rec.add("\n")
# terminate the line node
rec.end(ln)
As a check, let's print the recorded text:
print(rec.text())
1. 2. 3. 4. Op den 12 deser is een jonge slave van een orancaybij nacht comen 5. swemmen aen onse sloep, cloeck van verstant ende prompt in ’t antwoorden, 6. hebben daeromme den 14en deser goet gevonden 14 soldaeten onder ’t commandement 7. van een sergeant met een prau 3 uuren voor daege aen lant te setten aen 8. d’ander sijde om te maeken een bosschaede waertoe medegenomen werde den 9. overloper tot een guide, niettemin hem gebonden houdende die daertoe seer willich 10. was, haer belastende sich niet te openbaeren, dan voor een persoon van qualiteyt 11. gevangen ofte doot te crijgen. Soo is gebeurt, dat daer quamp alleen met een 12. jongen een groot arancay van Nera, broeder van den sabandaer dewelcke sij 13. tref f ten ende ’t hooft ons hier in ’t casteel gebracht, den voorsz. orancaye was door 14. den jongen ende andere seer wel bekent, 14 daegen te voorens in ’t parlementeren 15. met den onsen gesproken, die hem mede geroemt hadde, 2 van onse Hollanders 16. in den moort van den admirael Verhoeven saliger omgebracht te hebben. 17. 18. 19. 20. 21. Ic hebbe voor mij genomen, soo haest dit casteel gemaeckt is te keeren naer 22. Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 23. de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 24. plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 25. mede Coninck van te maeken onder protexie van E Mogende Heeren Staeten, doch 26. hiervan sal den tijt leeren ende namaels U E adviseeren 27. Dit volck van Banda is superbe, moordadich, wel versien van waepenen, van 28. de onsen voor desen ende van de Engelsche gecomen, dan weynich couraege omme 29. metten onsen te slaen, maer de bergen sijn haer fortressen, die voor ons innaccessible 30. sijn, sij leven mede van de vruchten van de boomen ende wortelen van de aerde, 31. daer wijluyden bij vergaen souden, hier regneert onder d’onse een plaege, genaempt 32. berebery waervan sij worden geheel impotent van handen ende beenen, mede 33. een plage van sere benen, alsoo dat ick er van 20 geen een hebbe sonder plaesters 34. aen de beenen. 35. 36. 37.
and the recorded node positions.
for i in range(20, 30):
print(f"pos {i}: {rec.positions()[i]}")
pos 20: frozenset({5054871, 1039}) pos 21: frozenset({5054871, 1039}) pos 22: frozenset({1040, 5054871}) pos 23: frozenset({1040, 5054871}) pos 24: frozenset({1040, 5054871}) pos 25: frozenset({1041, 5054871}) pos 26: frozenset({1041, 5054871}) pos 27: frozenset({1041, 5054871}) pos 28: frozenset({1041, 5054871}) pos 29: frozenset({1041, 5054871})
This means that the character on position 20 in the plain text string is part of the text of node 1039 and of node 5054871.
With one statement we write the recorded text and the postions to two files:
rec.write("exercises/v01-p0006.txt")
!head -n 10 exercises/v01-p0006.txt
1. 2. 3. 4. Op den 12 deser is een jonge slave van een orancaybij nacht comen 5. swemmen aen onse sloep, cloeck van verstant ende prompt in ’t antwoorden, 6. hebben daeromme den 14en deser goet gevonden 14 soldaeten onder ’t commandement 7. van een sergeant met een prau 3 uuren voor daege aen lant te setten aen 8. d’ander sijde om te maeken een bosschaede waertoe medegenomen werde den 9. overloper tot een guide, niettemin hem gebonden houdende die daertoe seer willich 10. was, haer belastende sich niet te openbaeren, dan voor een persoon van qualiteyt
!head -n 30 exercises/v01-p0006.txt.pos
5054868 5054868 5054868 5054868 5054869 5054869 5054869 5054869 5054870 5054870 5054870 5054870 5054871 5054871 5054871 1038 5054871 1038 5054871 1038 5054871 5054871 1039 5054871 1039 5054871 1039 5054871 1039 1040 5054871 1040 5054871 1040 5054871 1041 5054871 1041 5054871 1041 5054871 1041 5054871 1041 5054871
We head over to a local installation of Brat and annotate our text.
Left you see a quick and dirty manual annotation of some entities that I performed on the Brat interface, served locally.
We captured the output of this annotation session into the file v01-p0006.txt.ann
, it has the following contents:
T1 Person 675 679 Nera
T2 GPE 1181 1189 Ternnate
#1 AnnotatorNotes T2 Ternate
T3 Person 1203 1223 Coninck van Spagnien
T4 GPE 1215 1223 Spagnien
T5 Organization 1240 1254 Heeren Staeten
T6 Person 1293 1300 Coninck
T7 Person 1406 1413 Coninck
T8 Organization 1457 1471 Heeren Staeten
T9 GPE 1557 1562 Banda
T10 GPE 1653 1662 Engelsche
T11 Person 58 65 orancay
T12 Person 663 670 arancay
T13 Person 697 706 sabandaer
T14 Person 794 802 orancaye
T15 GPE 965 975 Hollanders
T16 Person 1010 1019 Verhoeven
T17 GPE 1154 1161 Ambojna
#2 AnnotatorNotes T17 Amboina
T18 GPE 1305 1310;1311 1322 ditto 24. plaetse
#3 AnnotatorNotes T18 Ternate
* Alias T11 T14
R1 Geographical_part Arg1:T2 Arg2:T18
Now we want to feed back these annotations as TF features on word nodes. The Recorder cannot anticipate the formats that tools like Brat deliver their results in. Therefore, it expects the data to be in a straightforward tabular format.
In this case, we must do a small conversion to bring the output annotations
into good shape, namely a tab separated file
with columns start end feature1 feature2 ...
Here we choose to expose the identifier (the T
n values) as feature1
and the kind of entity as feature2.
In case there is a link between two entities, we want to assign
the earliest T
number to all entities involved.
We also want to preserve the annotator notes.
def brat2tsv(inh, outh):
outh.write("start\tend\tentityId\tentityKind\tentityComment\n")
entities = []
notes = {}
maps = {}
for line in inh:
fields = line.rstrip("\n").split("\t")
if line.startswith("T"):
id1 = fields[0]
(kind, *positions) = fields[1].split()
(start, end) = (positions[0], positions[-1])
entities.append([start, end, id1, kind, ""])
elif line.startswith("#"):
id1 = fields[1].split()[1]
notes[id1] = fields[2]
elif line.startswith("*"):
(kind, id1, id2) = fields[1].split()
maps[id2] = id1
elif line.startswith("R"):
(id1, id2) = (f[5:] for f in fields[1].split()[1:])
maps[id2] = id1
for entity in entities:
id1 = entity[2]
if id1 in maps:
entity[2] = maps[id1]
if id1 in notes:
entity[4] = notes[id1]
line = "\t".join(entity)
print(line)
outh.write(f"{line}\n")
print(maps)
with open("exercises/v01-p0006.txt.ann") as inh:
with open("exercises/v01-p0006.txt.tsv", "w") as outh:
brat2tsv(inh, outh)
675 679 T1 Person 1181 1189 T2 GPE Ternate 1203 1223 T3 Person 1215 1223 T4 GPE 1240 1254 T5 Organization 1293 1300 T6 Person 1406 1413 T7 Person 1457 1471 T8 Organization 1557 1562 T9 GPE 1653 1662 T10 GPE 58 65 T11 Person 663 670 T12 Person 697 706 T13 Person 794 802 T11 Person 965 975 T15 GPE 1010 1019 T16 Person 1154 1161 T17 GPE Amboina 1305 1322 T2 GPE Ternate {'T14': 'T11', 'T18': 'T2'}
Our recorder knows how to do transform this file in feature data.
features = rec.makeFeatures("exercises/v01-p0006.txt.tsv")
Let's see.
for (feat, data) in features.items():
print(feat)
print("\t", data)
entityId {1146: 'T1', 5054879: 'T13', 5054889: 'T17', 1255: 'T2', 1259: 'T3', 1260: 'T3', 1261: 'T4', 1264: 'T5', 1265: 'T5', 5054890: 'T2', 1271: 'T6', 1289: 'T7', 5054892: 'T8', 1298: 'T8', 1299: 'T8', 1314: 'T9', 5054894: 'T9', 1330: 'T10', 5054895: 'T10', 1048: 'T11', 1049: 'T11', 5054871: 'T11', 1144: 'T12', 1150: 'T13', 5054880: 'T11', 1167: 'T11', 5054882: 'T15', 1196: 'T15', 5054883: 'T16', 1203: 'T16', 1250: 'T17', 1273: 'T2', 5054891: 'T2', 1274: 'T2'} entityKind {1146: 'Person', 5054879: 'Person', 5054889: 'GPE', 1255: 'GPE', 1259: 'Person', 1260: 'Person', 1261: 'GPE', 1264: 'Organization', 1265: 'Organization', 5054890: 'GPE', 1271: 'Person', 1289: 'Person', 5054892: 'Organization', 1298: 'Organization', 1299: 'Organization', 1314: 'GPE', 5054894: 'GPE', 1330: 'GPE', 5054895: 'GPE', 1048: 'Person', 1049: 'Person', 5054871: 'Person', 1144: 'Person', 1150: 'Person', 5054880: 'Person', 1167: 'Person', 5054882: 'GPE', 1196: 'GPE', 5054883: 'Person', 1203: 'Person', 1250: 'GPE', 1273: 'GPE', 5054891: 'GPE', 1274: 'GPE'} entityComment {5054889: 'Amboina', 1255: 'Ternate', 1250: 'Amboina', 1273: 'Ternate', 5054890: 'Ternate', 5054891: 'Ternate', 1274: 'Ternate'}
We can show this prettier:
for (feat, data) in features.items():
print(feat)
for (node, value) in data.items():
print(f"\t{F.otype.v(node)} {node} => {value}")
entityId word 1146 => T1 line 5054879 => T13 line 5054889 => T17 word 1255 => T2 word 1259 => T3 word 1260 => T3 word 1261 => T4 word 1264 => T5 word 1265 => T5 line 5054890 => T2 word 1271 => T6 word 1289 => T7 line 5054892 => T8 word 1298 => T8 word 1299 => T8 word 1314 => T9 line 5054894 => T9 word 1330 => T10 line 5054895 => T10 word 1048 => T11 word 1049 => T11 line 5054871 => T11 word 1144 => T12 word 1150 => T13 line 5054880 => T11 word 1167 => T11 line 5054882 => T15 word 1196 => T15 line 5054883 => T16 word 1203 => T16 word 1250 => T17 word 1273 => T2 line 5054891 => T2 word 1274 => T2 entityKind word 1146 => Person line 5054879 => Person line 5054889 => GPE word 1255 => GPE word 1259 => Person word 1260 => Person word 1261 => GPE word 1264 => Organization word 1265 => Organization line 5054890 => GPE word 1271 => Person word 1289 => Person line 5054892 => Organization word 1298 => Organization word 1299 => Organization word 1314 => GPE line 5054894 => GPE word 1330 => GPE line 5054895 => GPE word 1048 => Person word 1049 => Person line 5054871 => Person word 1144 => Person word 1150 => Person line 5054880 => Person word 1167 => Person line 5054882 => GPE word 1196 => GPE line 5054883 => Person word 1203 => Person word 1250 => GPE word 1273 => GPE line 5054891 => GPE word 1274 => GPE entityComment line 5054889 => Amboina word 1255 => Ternate word 1250 => Amboina word 1273 => Ternate line 5054890 => Ternate line 5054891 => Ternate word 1274 => Ternate
Note that we assign entity features to line nodes as well.
If that is undesired, we should not have instructed the Recorder to rec.add(ln)
above.
The documentation explains how to save this data into text-fabric data files.
We choose a location where to save it, the exercises
directory next to this notebook.
GITHUB = os.path.expanduser("~/github")
ORG = A.context.org
REPO = A.context.repo
PATH = "exercises"
VERSION = A.version
print(f"{ORG=} {REPO=} {VERSION=}")
ORG='CLARIAH' REPO='wp6-missieven' VERSION='0.4'
Note the version: we have built the version against a specific version of the data.
Later on, we pass this version on, so that users of our data will get the shared data in exactly the same version as their core data.
We have to specify a bit of metadata for this feature:
metaData = {
"entityId": dict(
valueType="str",
description="identifier of a named entity",
creator="Dirk Roorda",
),
"entityKind": dict(
valueType="str",
description="kind of a named entity",
creator="Dirk Roorda",
),
"entityComment": dict(
valueType="str",
description="comment to a named entity",
creator="Dirk Roorda",
),
}
Now we can give the save command:
location = f"{GITHUB}/{ORG}/{REPO}/{PATH}/entities/tf"
TF.save(nodeFeatures=features, metaData=metaData, location=location, module=VERSION, silent="auto")
0.00s Exporting 3 node and 0 edge and 0 config features to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/0.4: | 0.00s T entityComment to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/0.4 | 0.00s T entityId to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/0.4 | 0.00s T entityKind to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/0.4 0.00s Exported 3 node features and 0 edge features and 0 config features to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/0.4
True
We now migrate these annotations to the current version (1.0), which is different from 0.4 in that the footnote texts have been drawn into
the main text.
We use the mapping from 0.4 nodes to 1.0 nodes, which is available as an edge feature omap#0.4-1.0
in the
current version of the dataset.
We load both the old and new versions of the dataset.
entityModule = "clariah/wp6-missieven/exercises/entities/tf"
va = "0.4"
A = {}
A[va] = use(f"missieven:v{va}", mod=f"{entityModule}:clone", checkout="clone", version=va,
legacy=True, provenanceSpec=dict(org="clariah", repo="wp6-missieven"))
Alater = use("CLARIAH/wp6-missieven:clone", checkout="clone")
vb = Alater.version
A[vb] = Alater
Now we can use the function migrateFeatures from TF to migrate our features. See also nodeMaps.
V = Versions({va: A[va].api, vb: A[vb].api}, va, vb)
features = ("entityComment", "entityId", "entityKind")
V.migrateFeatures(features, location=location, silent="auto")
0.46s start migrating 1.90s All additional features loaded - for details use TF.isLoaded() 1.90s Mapping entityComment (node) 1.90s Mapping entityId (node) 1.90s Mapping entityKind (node) 0.00s Exporting 3 node and 0 edge and 0 config features to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/1.0: | 0.00s T entityComment to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/1.0 | 0.00s T entityId to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/1.0 | 0.00s T entityKind to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/1.0 0.00s Exported 3 node features and 0 edge features and 0 config features to ~/github/CLARIAH/wp6-missieven/exercises/entities/tf/1.0 0.00s Done
We load the migrated features:
A[vb] = use("CLARIAH/wp6-missieven:clone", version=vb, mod=f"{entityModule}:clone", checkout="clone")
We compare the features in both versions
def showFeature(v, f):
F = A[v].api.F
Fs = A[v].api.Fs
T = A[v].api.T
for (n, val) in Fs(f).items():
ntp = F.otype.v(n)
print(f"{v} {f} ({ntp:<4} {n:>8}) {val:<8} <= {T.text(n)}")
for f in features:
showFeature(va, f)
print("")
showFeature(vb, f)
print("")
0.4 entityComment (word 1250) Amboina <= Ambojna 0.4 entityComment (word 1255) Ternate <= Ternnate 0.4 entityComment (word 1273) Ternate <= ditto 0.4 entityComment (word 1274) Ternate <= plaetse 0.4 entityComment (line 5054889) Amboina <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 0.4 entityComment (line 5054890) Ternate <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 0.4 entityComment (line 5054891) Ternate <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 1.0 entityComment (word 1545) Amboina <= Ambojna 1.0 entityComment (word 1550) Ternate <= Ternnate 1.0 entityComment (word 1568) Ternate <= ditto 1.0 entityComment (word 1569) Ternate <= plaetse 1.0 entityComment (line 6018931) Amboina <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 1.0 entityComment (line 6018932) Ternate <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 1.0 entityComment (line 6018933) Ternate <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 0.4 entityId (word 1048) T11 <= orancay 0.4 entityId (word 1049) T11 <= bij 0.4 entityId (word 1144) T12 <= arancay 0.4 entityId (word 1146) T1 <= Nera, 0.4 entityId (word 1150) T13 <= sabandaer 0.4 entityId (word 1167) T11 <= orancaye 0.4 entityId (word 1196) T15 <= Hollanders 0.4 entityId (word 1203) T16 <= Verhoeven 0.4 entityId (word 1250) T17 <= Ambojna 0.4 entityId (word 1255) T2 <= Ternnate 0.4 entityId (word 1259) T3 <= Coninck 0.4 entityId (word 1260) T3 <= van 0.4 entityId (word 1261) T4 <= Spagnien 0.4 entityId (word 1264) T5 <= Heeren 0.4 entityId (word 1265) T5 <= Staeten 0.4 entityId (word 1271) T6 <= Coninck 0.4 entityId (word 1273) T2 <= ditto 0.4 entityId (word 1274) T2 <= plaetse 0.4 entityId (word 1289) T7 <= Coninck 0.4 entityId (word 1298) T8 <= Heeren 0.4 entityId (word 1299) T8 <= Staeten, 0.4 entityId (word 1314) T9 <= Banda 0.4 entityId (word 1330) T10 <= Engelsche 0.4 entityId (line 5054871) T11 <= Op den 12 deser is een jonge slave van een orancaybij nacht comen 0.4 entityId (line 5054879) T13 <= jongen een groot arancay van Nera, broeder van den sabandaer dewelcke sij 0.4 entityId (line 5054880) T11 <= tref f ten ende ’t hooft ons hier in ’t casteel gebracht, den voorsz. orancaye was door 0.4 entityId (line 5054882) T15 <= met den onsen gesproken, die hem mede geroemt hadde, 2 van onse Hollanders 0.4 entityId (line 5054883) T16 <= in den moort van den admirael Verhoeven saliger omgebracht te hebben. 0.4 entityId (line 5054889) T17 <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 0.4 entityId (line 5054890) T2 <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 0.4 entityId (line 5054891) T2 <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 0.4 entityId (line 5054892) T8 <= mede Coninck van te maeken onder protexie van E Mogende Heeren Staeten, doch 0.4 entityId (line 5054894) T9 <= Dit volck van Banda is superbe, moordadich, wel versien van waepenen, van 0.4 entityId (line 5054895) T10 <= de onsen voor desen ende van de Engelsche gecomen, dan weynich couraege omme 1.0 entityId (word 1242) T11 <= orancay 1.0 entityId (word 1252) T11 <= bij 1.0 entityId (word 1351) T12 <= arancay 1.0 entityId (word 1353) T1 <= Nera, 1.0 entityId (word 1357) T13 <= sabandaer 1.0 entityId (word 1398) T11 <= orancaye 1.0 entityId (word 1427) T15 <= Hollanders 1.0 entityId (word 1434) T16 <= Verhoeven 1.0 entityId (word 1545) T17 <= Ambojna 1.0 entityId (word 1550) T2 <= Ternnate 1.0 entityId (word 1554) T3 <= Coninck 1.0 entityId (word 1555) T3 <= van 1.0 entityId (word 1556) T4 <= Spagnien 1.0 entityId (word 1559) T5 <= Heeren 1.0 entityId (word 1560) T5 <= Staeten 1.0 entityId (word 1566) T6 <= Coninck 1.0 entityId (word 1568) T2 <= ditto 1.0 entityId (word 1569) T2 <= plaetse 1.0 entityId (word 1584) T7 <= Coninck 1.0 entityId (word 1593) T8 <= Heeren 1.0 entityId (word 1594) T8 <= Staeten, 1.0 entityId (word 1653) T9 <= Banda 1.0 entityId (word 1669) T10 <= Engelsche 1.0 entityId (line 6018904) T11 <= Op den 12 deser is een jonge slave van een orancay Orangkaja, hier aanduiding voor een Bandanees hoofd of aanzienlijke. 1.0 entityId (line 6018905) T11 <= bij nacht comen 1.0 entityId (line 6018914) T13 <= jongen een groot arancay van Nera, broeder van den sabandaer Sjahbandar, uit het Perzisch overgenomen woord, in Zuidoost-Azië gebruikt voor 1.0 entityId (line 6018916) T13 <= dewelcke sij 1.0 entityId (line 6018917) T11 <= tref f ten ende ’t hooft ons hier in ’t casteel gebracht, den voorsz. orancaye was door 1.0 entityId (line 6018919) T15 <= met den onsen gesproken, die hem mede geroemt hadde, 2 van onse Hollanders 1.0 entityId (line 6018920) T16 <= in den moort van den admirael Verhoeven Admiraal Pieter Willemsz. Verhoeff kwam 23 november 1608 met zijn vloot voor 1.0 entityId (line 6018925) T16 <= saliger omgebracht te hebben. 1.0 entityId (line 6018931) T17 <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 1.0 entityId (line 6018932) T2 <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 1.0 entityId (line 6018933) T2 <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 1.0 entityId (line 6018934) T8 <= mede Coninck van te maeken onder protexie van E Mogende Heeren Staeten, doch 1.0 entityId (line 6018938) T9 <= 1.0 entityId (line 6018939) T9 <= Dit volck van Banda is superbe, moordadich, wel versien van waepenen, van 1.0 entityId (line 6018940) T10 <= de onsen voor desen ende van de Engelsche gecomen, dan weynich couraege omme 0.4 entityKind (word 1048) Person <= orancay 0.4 entityKind (word 1049) Person <= bij 0.4 entityKind (word 1144) Person <= arancay 0.4 entityKind (word 1146) Person <= Nera, 0.4 entityKind (word 1150) Person <= sabandaer 0.4 entityKind (word 1167) Person <= orancaye 0.4 entityKind (word 1196) GPE <= Hollanders 0.4 entityKind (word 1203) Person <= Verhoeven 0.4 entityKind (word 1250) GPE <= Ambojna 0.4 entityKind (word 1255) GPE <= Ternnate 0.4 entityKind (word 1259) Person <= Coninck 0.4 entityKind (word 1260) Person <= van 0.4 entityKind (word 1261) GPE <= Spagnien 0.4 entityKind (word 1264) Organization <= Heeren 0.4 entityKind (word 1265) Organization <= Staeten 0.4 entityKind (word 1271) Person <= Coninck 0.4 entityKind (word 1273) GPE <= ditto 0.4 entityKind (word 1274) GPE <= plaetse 0.4 entityKind (word 1289) Person <= Coninck 0.4 entityKind (word 1298) Organization <= Heeren 0.4 entityKind (word 1299) Organization <= Staeten, 0.4 entityKind (word 1314) GPE <= Banda 0.4 entityKind (word 1330) GPE <= Engelsche 0.4 entityKind (line 5054871) Person <= Op den 12 deser is een jonge slave van een orancaybij nacht comen 0.4 entityKind (line 5054879) Person <= jongen een groot arancay van Nera, broeder van den sabandaer dewelcke sij 0.4 entityKind (line 5054880) Person <= tref f ten ende ’t hooft ons hier in ’t casteel gebracht, den voorsz. orancaye was door 0.4 entityKind (line 5054882) GPE <= met den onsen gesproken, die hem mede geroemt hadde, 2 van onse Hollanders 0.4 entityKind (line 5054883) Person <= in den moort van den admirael Verhoeven saliger omgebracht te hebben. 0.4 entityKind (line 5054889) GPE <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 0.4 entityKind (line 5054890) GPE <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 0.4 entityKind (line 5054891) GPE <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 0.4 entityKind (line 5054892) Organization <= mede Coninck van te maeken onder protexie van E Mogende Heeren Staeten, doch 0.4 entityKind (line 5054894) GPE <= Dit volck van Banda is superbe, moordadich, wel versien van waepenen, van 0.4 entityKind (line 5054895) GPE <= de onsen voor desen ende van de Engelsche gecomen, dan weynich couraege omme 1.0 entityKind (word 1242) Person <= orancay 1.0 entityKind (word 1252) Person <= bij 1.0 entityKind (word 1351) Person <= arancay 1.0 entityKind (word 1353) Person <= Nera, 1.0 entityKind (word 1357) Person <= sabandaer 1.0 entityKind (word 1398) Person <= orancaye 1.0 entityKind (word 1427) GPE <= Hollanders 1.0 entityKind (word 1434) Person <= Verhoeven 1.0 entityKind (word 1545) GPE <= Ambojna 1.0 entityKind (word 1550) GPE <= Ternnate 1.0 entityKind (word 1554) Person <= Coninck 1.0 entityKind (word 1555) Person <= van 1.0 entityKind (word 1556) GPE <= Spagnien 1.0 entityKind (word 1559) Organization <= Heeren 1.0 entityKind (word 1560) Organization <= Staeten 1.0 entityKind (word 1566) Person <= Coninck 1.0 entityKind (word 1568) GPE <= ditto 1.0 entityKind (word 1569) GPE <= plaetse 1.0 entityKind (word 1584) Person <= Coninck 1.0 entityKind (word 1593) Organization <= Heeren 1.0 entityKind (word 1594) Organization <= Staeten, 1.0 entityKind (word 1653) GPE <= Banda 1.0 entityKind (word 1669) GPE <= Engelsche 1.0 entityKind (line 6018904) Person <= Op den 12 deser is een jonge slave van een orancay Orangkaja, hier aanduiding voor een Bandanees hoofd of aanzienlijke. 1.0 entityKind (line 6018905) Person <= bij nacht comen 1.0 entityKind (line 6018914) Person <= jongen een groot arancay van Nera, broeder van den sabandaer Sjahbandar, uit het Perzisch overgenomen woord, in Zuidoost-Azië gebruikt voor 1.0 entityKind (line 6018916) Person <= dewelcke sij 1.0 entityKind (line 6018917) Person <= tref f ten ende ’t hooft ons hier in ’t casteel gebracht, den voorsz. orancaye was door 1.0 entityKind (line 6018919) GPE <= met den onsen gesproken, die hem mede geroemt hadde, 2 van onse Hollanders 1.0 entityKind (line 6018920) Person <= in den moort van den admirael Verhoeven Admiraal Pieter Willemsz. Verhoeff kwam 23 november 1608 met zijn vloot voor 1.0 entityKind (line 6018925) Person <= saliger omgebracht te hebben. 1.0 entityKind (line 6018931) GPE <= Ambojna ende van daer naer Ternnate ende soo den Coninck van Spagnien tusschen 1.0 entityKind (line 6018932) GPE <= de Heeren Staeten den treves geobserveert werde, metten Coninck van ditto 1.0 entityKind (line 6018933) GPE <= plaetse te contracteeren om met sijn hulpe dese plaetse te ocuperen ende hem daer 1.0 entityKind (line 6018934) Organization <= mede Coninck van te maeken onder protexie van E Mogende Heeren Staeten, doch 1.0 entityKind (line 6018938) GPE <= 1.0 entityKind (line 6018939) GPE <= Dit volck van Banda is superbe, moordadich, wel versien van waepenen, van 1.0 entityKind (line 6018940) GPE <= de onsen voor desen ende van de Engelsche gecomen, dan weynich couraege omme
CC-BY Dirk Roorda