Skip to content
Snippets Groups Projects
mocks.py 80.3 KiB
Newer Older
from collections import OrderedDict
from datetime import datetime
from typing import List, Tuple, Dict
from unittest.mock import patch

from conllu import TokenList
from flask import Flask
from flask.ctx import AppContext
from flask.testing import FlaskClient
from gensim.models import Word2Vec
from gensim.models.keyedvectors import Vocab
from networkx import Graph
from numpy.core.multiarray import ndarray

from mcserver import Config, TestingConfig
from mcserver.app import db, shutdown_session
from mcserver.app.models import Phenomenon, PartOfSpeech, CitationLevel, ExerciseData, GraphData, \
    LinkMC, NodeMC, Language, Dependency, Case, AnnisResponse, Solution, TextPart, Citation, ExerciseMC, CorpusMC, \
    SolutionElement
from mcserver.app.services import AnnotationService, CustomCorpusService, TextService, DatabaseService
from mcserver.models_auto import Corpus, Exercise, UpdateInfo


class MockFilterBy:
    def __init__(self, ui: UpdateInfo = None):
        self.ui: UpdateInfo = ui

    def first(self):
    def __init__(self, ui: UpdateInfo = None):
        self.ui: UpdateInfo = ui

    def all(self):
        return db.session.query(Corpus).all()

    def filter_by(self, **kwargs):
        return MockFilterBy(self.ui)


class MockResponse:
    def __init__(self, text: str, ok: bool = True, content: bytes = b""):
        self.content: bytes = content
        self.encoding: str = "utf-8"
        self.ok: bool = ok
        self.text: str = text

    def raise_for_status(self) -> None:
        pass


class MockWV:
    def __init__(self):
        self.vocab: Dict[str, Vocab] = {"ueritas": Vocab(count=50), "uera": Vocab(count=50)}
        ret_val: ndarray = ndarray((100,))
        ret_val.fill(0.5)
        self.get_vector_return_value: ndarray = ret_val

    def get_vector(self, word: str) -> ndarray:
        return self.get_vector_return_value


class MockW2V:
    def __init__(self):
        self.wv = MockWV()


class TestHelper:
    def __init__(self, app: Flask):
        self.app: Flask = app
        self.app_context: AppContext = self.app.app_context()
        self.client: FlaskClient = self.app.test_client()

    @staticmethod
    def update_flask_app(class_name: str, app_factory: callable) -> None:
        """Sets up and tears down the testing environment for each Test Case."""
        if len(Mocks.app_dict) and list(Mocks.app_dict.keys())[0] != class_name:
            if Config.CORPUS_STORAGE_MANAGER:
                Config.CORPUS_STORAGE_MANAGER.__exit__(None, None, None)
            if os.path.exists(Config.GRAPH_DATABASE_DIR):
                shutil.rmtree(Config.GRAPH_DATABASE_DIR)
            list(Mocks.app_dict.values())[0].app_context.pop()
            shutdown_session()
            db.drop_all()
            Mocks.app_dict = {}
        if not len(Mocks.app_dict):
            with patch.object(TextService, "init_stop_words_latin"):
                Mocks.app_dict[class_name] = TestHelper(app_factory(TestingConfig))
            Mocks.app_dict[class_name].app.logger.setLevel(logging.WARNING)
            Mocks.app_dict[class_name].app.testing = True
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650
class Mocks:
    """This class contains mock objects for unit testing purposes."""
    annotations: List[TokenList] = [TokenList(
        tokens=[{"id": 1, "form": "Caesar", "lemma": "Caeso", "upostag": "VERB", "xpostag": "L3|modJ|tem3|gen4|stAV",
                 "feats": {"Mood": "Ind", "Number": "Sing", "Person": "1", "Tense": "Fut", "VerbForm": "Fin",
                           "Voice": "Pass"}, "head": 0, "deprel": "root", "deps": None, "misc": {"ref": "1.1"}},
                {"id": 2, "form": "et", "lemma": "et", "upostag": "CCONJ", "xpostag": "O4|stRL", "feats": None,
                 "head": 3, "deprel": "cc", "deps": None, "misc": None},
                {"id": 3, "form": "Galli", "lemma": "Gallo", "upostag": "VERB", "xpostag": "L3|modQ|tem1|stAC",
                 "feats": {"Tense": "Pres", "VerbForm": "Inf", "Voice": "Pass"}, "head": 1, "deprel": "conj",
                 "deps": None, "misc": None},
                {"id": 4, "form": "fortes", "lemma": "fors", "upostag": "NOUN", "xpostag": "C1|grn1|casJ|gen2|stRS",
                 "feats": {"Case": "Nom", "Degree": "Pos", "Gender": "Fem", "Number": "Plur"}, "head": 3,
                 "deprel": "nsubj:pass", "deps": None, "misc": None},
                {"id": 5, "form": "sunt", "lemma": "sum", "upostag": "AUX", "xpostag": "N3|modA|tem1|gen9|stAV",
                 "feats": {"Mood": "Ind", "Number": "Plur", "Person": "3", "Tense": "Pres", "VerbForm": "Fin",
                           "Voice": "Act"}, "head": 3, "deprel": "aux:pass", "deps": None,
                 "misc": {"SpaceAfter": "No"}},
                {"id": 6, "form": ".", "lemma": ".", "upostag": "PUNCT", "xpostag": "Punc", "feats": None, "head": 1,
                 "deprel": "punct", "deps": None, "misc": None}],
        metadata=OrderedDict([("sent_id", "1"), ("urn", "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1")]))]
    annis_response_dict: dict = {"graph_data_raw": {"directed": True, "multigraph": True, "graph": {}, "nodes": [
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "Pars", "udep::lemma": "pars",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Nom|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "formator", "udep::lemma": "formator",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Nom|Gender=Masc|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "praecepturus", "udep::lemma": "praecipio",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Case=Nom|Gender=Masc|Number=Sing|Tense=Fut|VerbForm=Part|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok16",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "qui", "udep::lemma": "qvi",
         "udep::upostag": "PRON", "udep::xpostag": "Pr", "udep::feats": "Case=Nom|Gender=Masc|Number=Plur|PronType=Rel",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok16"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok9",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "rhetores", "udep::lemma": "rhetor",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Acc|Gender=Masc|Number=Plur",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok9"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok2",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "est", "udep::lemma": "sum",
         "udep::upostag": "AUX", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok2"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok17",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "dum", "udep::lemma": "dum",
         "udep::upostag": "SCONJ", "udep::xpostag": "G-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok17"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok4",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "agricolae", "udep::lemma": "Agricola",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Gen|Gender=Masc|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok4"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok8",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "es", "udep::lemma": "sum",
         "udep::upostag": "AUX", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Sing|Person=2|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok8"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok12",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "a", "udep::lemma": "ab",
         "udep::upostag": "ADP", "udep::xpostag": "R-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok12"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "aemulari", "udep::lemma": "aemulor",
         "udep::upostag": "VERB", "udep::xpostag": "V-", "udep::feats": "Tense=Pres|VerbForm=Inf|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok3",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "prima", "udep::lemma": "primus",
         "udep::upostag": "ADJ", "udep::xpostag": "Mo", "udep::feats": "Case=Nom|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok3"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "plerisque", "udep::lemma": "plerusque",
         "udep::upostag": "ADJ", "udep::xpostag": "A-", "udep::feats": "Case=Abl|Degree=Pos|Gender=Masc|Number=Plur",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok18",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "diserte", "udep::lemma": "diserte",
         "udep::upostag": "ADV", "udep::xpostag": "Df", "udep::feats": "Degree=Pos",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok18"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "debet", "udep::lemma": "debeo",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act", "udep::deps": "root",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "aestimare", "udep::lemma": "aestimo",
         "udep::upostag": "VERB", "udep::xpostag": "V-", "udep::feats": "Tense=Pres|VerbForm=Inf|Voice=Act",
         "udep::deps": "root", "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok11",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "quod", "udep::lemma": "qui",
         "udep::upostag": "PRON", "udep::xpostag": "Pr", "udep::feats": "Case=Acc|Gender=Neut|Number=Sing|PronType=Rel",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok11"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "factum", "udep::lemma": "facio",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Aspect=Perf|Case=Nom|Gender=Neut|Number=Sing|Tense=Past|VerbForm=Part|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "loquuntur", "udep::lemma": "loquor",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok4",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "prudentiae", "udep::lemma": "prudentia",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Gen|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok4"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "personam", "udep::lemma": "persona",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Acc|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "artibus", "udep::lemma": "ars",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Abl|Gender=Fem|Number=Plur",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok15",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "est", "udep::lemma": "sum",
         "udep::upostag": "AUX", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok15"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok7",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "et", "udep::lemma": "et",
         "udep::upostag": "CCONJ", "udep::xpostag": "C-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok7"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok20",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "rusticis", "udep::lemma": "rusticus",
         "udep::upostag": "ADJ", "udep::xpostag": "A-", "udep::feats": "Case=Abl|Degree=Pos|Gender=Masc|Number=Plur",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok20"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok11",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": ".", "udep::lemma": ".",
         "udep::upostag": "PUNCT", "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok11"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok5",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "ipsam", "udep::lemma": "ipse",
         "udep::upostag": "DET", "udep::xpostag": "Pd", "udep::feats": "Case=Acc|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok5"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok8",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "eloquentia", "udep::lemma": "eloquentia",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Abl|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok8"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok22",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "sunt", "udep::lemma": "sum",
         "udep::upostag": "AUX", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok22"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "adsecuti", "udep::lemma": "assequor",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Aspect=Perf|Case=Nom|Gender=Masc|Number=Plur|Tense=Past|VerbForm=Part|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok1",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "Neque", "udep::lemma": "neque",
         "udep::upostag": "ADV", "udep::xpostag": "Df",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok1"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok6",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "cui", "udep::lemma": "qui",
         "udep::upostag": "PRON", "udep::xpostag": "Pr", "udep::feats": "Case=Dat|Gender=Fem|Number=Sing|PronType=Rel",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok6"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok4",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "praefationis", "udep::lemma": "praefatio",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Gen|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok4"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok23",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "ut", "udep::lemma": "ut",
         "udep::upostag": "SCONJ", "udep::xpostag": "G-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok23"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok2",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "enim", "udep::lemma": "enim",
         "udep::upostag": "ADV", "udep::xpostag": "Df",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok2"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok1",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "Sed", "udep::lemma": "sed",
         "udep::upostag": "CCONJ", "udep::xpostag": "C-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok1"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "doctrina", "udep::lemma": "doctrina",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Nom|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok24",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "eorum", "udep::lemma": "is",
         "udep::upostag": "PRON", "udep::xpostag": "Pp",
         "udep::feats": "Case=Gen|Gender=Masc|Number=Plur|Person=3|PronType=Prs",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok24"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "moram", "udep::lemma": "mora",
         "udep::upostag": "NOUN", "udep::xpostag": "Nb", "udep::feats": "Case=Acc|Gender=Fem|Number=Sing",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok2",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "nos", "udep::lemma": "nos",
         "udep::upostag": "PRON", "udep::xpostag": "Pp",
         "udep::feats": "Case=Nom|Gender=Masc|Number=Plur|Person=1|PronType=Prs",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok2"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok7",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "quos", "udep::lemma": "qui",
         "udep::upostag": "PRON", "udep::xpostag": "Pr", "udep::feats": "Case=Acc|Gender=Masc|Number=Plur|PronType=Rel",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok7"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok26",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "nec", "udep::lemma": "neque",
         "udep::upostag": "ADV", "udep::xpostag": "Df",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok26"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok27",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "a", "udep::lemma": "ab",
         "udep::upostag": "ADP", "udep::xpostag": "R-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok27"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok6",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "ne", "udep::lemma": "ne",
         "udep::upostag": "SCONJ", "udep::xpostag": "G-",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok6"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "recidamus", "udep::lemma": "recido#2",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin|Voice=Act", "udep::deps": "root",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "reprehendimus",
         "udep::lemma": "repr(eh)endo", "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Ind|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "intelligi", "udep::lemma": "intellego",
         "udep::upostag": "VERB", "udep::xpostag": "V-", "udep::feats": "Tense=Pres|VerbForm=Inf|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "disertissimis", "udep::lemma": "dissero",
         "udep::upostag": "ADJ", "udep::xpostag": "A-", "udep::feats": "Case=Abl|Degree=Sup|Gender=Masc|Number=Plur",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok31",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": ".", "udep::lemma": ".",
         "udep::upostag": "PUNCT", "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok31"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "imitemur", "udep::lemma": "imitor",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Sub|Number=Plur|Person=1|Tense=Pres|VerbForm=Fin|Voice=Pass",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok10",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": ".", "udep::lemma": ".",
         "udep::upostag": "PUNCT", "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok10"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "possit", "udep::lemma": "possum",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29"},
        {"annis::node_name": "urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30",
         "annis::node_type": "node", "annis::type": "node", "annis::tok": "possit", "udep::lemma": "possum",
         "udep::upostag": "VERB", "udep::xpostag": "V-",
         "udep::feats": "Mood=Sub|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
         "id": 1}
    ], "links": [
        {"udep::deprel": "nmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok3", "key": 0},
        {"udep::deprel": "nmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok4", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok2", "key": 0},
        {"udep::deprel": "nmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok4", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok4", "key": 1},
        {"udep::deprel": "iobj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok6", "key": 0},
        {"udep::deprel": "aux", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok8", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok8", "key": 1},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok16",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok17", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok2",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok3", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok17",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok18", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok4",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok8",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok12",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13", "key": 0},
        {"udep::deprel": "obl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6", "key": 0},
        {"udep::deprel": "obj:dir", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok9", "key": 0},
        {"udep::deprel": "advcl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok11", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok4", "key": 0},
        {"udep::deprel": "case", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok12", "key": 0},
        {"udep::deprel": "advcl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok18",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19", "key": 0},
        {"udep::deprel": "advmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok1", "key": 0},
        {"udep::deprel": "discourse", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok2", "key": 0},
        {"udep::deprel": "nsubj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3", "key": 0},
        {"udep::deprel": "xcomp", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok10", "key": 0},
        {"annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok31", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6", "key": 0},
        {"udep::deprel": "nsubj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1", "key": 0},
        {"udep::deprel": "cop", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok2", "key": 0},
        {"udep::deprel": "obj:dir", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10", "key": 1},
        {"annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok11", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok11",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok12", "key": 0},
        {"udep::deprel": "nsubj:pass", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok11", "key": 0},
        {"udep::deprel": "obl:agent", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok13", "key": 0},
        {"udep::deprel": "aux:pass", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok15", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok14",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok15", "key": 1},
        {"udep::deprel": "mark", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok17", "key": 0},
        {"udep::deprel": "advmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok18", "key": 0},
        {"udep::deprel": "iobj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok20", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok20", "key": 1},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok4",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok5", "key": 0},
        {"udep::deprel": "det", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok5", "key": 0},
        {"udep::deprel": "acl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok10",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok11", "key": 0},
        {"udep::deprel": "cc", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok7", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok7", "key": 1},
        {"udep::deprel": "conj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok6",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok8", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok15",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok16", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok7",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok8", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok20",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok11",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok1", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok6", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok8",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok9", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok22",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok23", "key": 0},
        {"udep::deprel": "nsubj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok16", "key": 0},
        {"udep::deprel": "advcl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok19", "key": 0},
        {"udep::deprel": "aux", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok22", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok22", "key": 1},
        {"udep::deprel": "advcl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok21",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok1",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok2", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok6",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok4",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok23",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok24", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok2",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok3", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok1",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok2", "key": 0},
        {"udep::deprel": "det", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok24", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok26", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok24",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25", "key": 0},
        {"udep::deprel": "nmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok4", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok6", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok2",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok7",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok26",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok27", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok27",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok6",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok7", "key": 0},
        {"udep::deprel": "cc", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok1", "key": 0},
        {"udep::deprel": "nsubj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok2", "key": 0},
        {"udep::deprel": "obj:dir", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok5", "key": 0},
        {"udep::deprel": "advcl", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9", "key": 0},
        {"annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok10", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok3",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok4", "key": 0},
        {"udep::deprel": "obj:dir", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok7", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9", "key": 0},
        {"udep::deprel": "obl:agent", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok31", "key": 0},
        {"udep::deprel": "case", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok27", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok28",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok31",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok1", "key": 0},
        {"udep::deprel": "mark", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok6", "key": 0},
        {"udep::deprel": "obj:dir", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok8", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok9",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159695tok10", "key": 0},
        {"udep::deprel": "mark", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok23", "key": 0},
        {"udep::deprel": "nsubj", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok25", "key": 0},
        {"udep::deprel": "advmod", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok26", "key": 0},
        {"udep::deprel": "xcomp", "annis::component_name": "dep", "annis::component_type": "Pointing",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30", "key": 0},
        {"annis::component_name": "", "annis::component_type": "Ordering",
         "source": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok29",
         "target": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok30", "key": 1}]},
                                 "solutions": [{"target": {"sentence_id": 159692, "token_id": 7,
                                                           "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok7",
                                                           "content": "praecepturus"},
                                                "value": {"sentence_id": 0, "token_id": 0, "content": "",
                                                          "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1"}},
                                               {
                                                   "target": {"sentence_id": 159692, "token_id": 9,
                                                              "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok9",
                                                              "content": "aestimare"},
                                                   "value": {"sentence_id": 0, "token_id": 0, "content": "",
                                                             "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1"}},
                                               {
                                                   "target": {"sentence_id": 159693, "token_id": 5,
                                                              "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159693tok5",
                                                              "content": "debet"},
                                                   "value": {"sentence_id": 0, "token_id": 0, "content": "",
                                                             "salt_id": "salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent159692tok1"}}],
                                 "conll": "# newdoc id = /var/folders/30/yqnv6lz56r14dqhpw18knn2r0000gp/T/tmp7qn86au9\n# sent_id = 1\n# text = Caesar fortis est.\n1\tCaesar\tCaeso\tVERB\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t2\tcsubj\t_\t_\n2\tfortis\tfortis\tADJ\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t0\troot\troot\t_\n3\test\tsum\tAUX\tN3|modA|tem1|gen6|stAV\tMood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act\t2\tcop\t_\tSpaceAfter=No\n4\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\t_\n\n# sent_id = 2\n# text = Galli moriuntur.\n1\tGalli\tGallus\tPRON\tF1|grn1|casJ|gen1|stPD\tCase=Nom|Degree=Pos|Gender=Masc|Number=Plur|PronType=Dem\t2\tnsubj:pass\t_\t_\n2\tmoriuntur\tmorior\tVERB\tL3|modJ|tem1|gen9|stAV\tMood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Pass\t0\troot\troot\tSpaceAfter=No\n3\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\tSpacesAfter=\\n\n\n"}
    app_dict: Dict[str, TestHelper] = {}
    aqls: List[str] = ["=".join([Phenomenon.UPOSTAG, '"{0}"'.format(
        AnnotationService.phenomenon_map[Phenomenon.UPOSTAG][PartOfSpeech.verb.name][0])])]
    graph_data: GraphData = AnnotationService.map_graph_data(annis_response_dict["graph_data_raw"])
    annis_response: AnnisResponse = AnnisResponse(graph_data=graph_data)
    corpora: List[Corpus] = [
        CorpusMC.from_dict(title="title1", source_urn="urn1", author="author1",
                           citation_level_1=CitationLevel.default.value),
        CorpusMC.from_dict(title="title2", source_urn="urn2", author="author2",
                           citation_level_1=CitationLevel.default.value)]
    cts_capabilities_xml: str = '<GetCapabilities xmlns="http://chs.harvard.edu/xmlns/cts"><request><requestName>GetInventory</requestName><requestFilters>urn=urn:cts:latinLit</requestFilters></request><reply><ti:TextInventory xmlns:ti=\'http://chs.harvard.edu/xmlns/cts\'><ti:textgroup urn=\'urn:cts:latinLit:phi0660\' xmlns:ti=\'http://chs.harvard.edu/xmlns/cts\'><ti:groupname xml:lang=\'eng\'>Tibullus</ti:groupname><ti:groupname xml:lang=\'lat\'>Corpus Tibullianum</ti:groupname><ti:work xml:lang="lat" urn=\'urn:cts:latinLit:phi0660.phi001\' groupUrn=\'urn:cts:latinLit:phi0660\' xmlns:ti=\'http://chs.harvard.edu/xmlns/cts\'><ti:title xml:lang=\'lat\'>Elegiae</ti:title><ti:edition urn=\'urn:cts:latinLit:phi0660.phi001.perseus-lat2\' workUrn=\'urn:cts:latinLit:phi0660.phi001\' xmlns:ti=\'http://chs.harvard.edu/xmlns/cts\'><ti:label xml:lang=\'eng\'>Elegiae, Aliorumque carminum libri tres</ti:label><ti:description xml:lang=\'eng\'>Tibullus, creator; Postgate, J. P. (John Percival), 1853- 1926, editor </ti:description><ti:online><ti:citationMapping><ti:citation label="book" xpath="/tei:div[@n=\'?\']" scope="/tei:TEI/tei:text/tei:body/tei:div"><ti:citation label="poem" xpath="/tei:div[@n=\'?\']" scope="/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'?\']"><ti:citation label="line" xpath="//tei:l[@n=\'?\']" scope="/tei:TEI/tei:text/tei:body/tei:div/tei:div[@n=\'?\']/tei:div[@n=\'?\']"></ti:citation></ti:citation></ti:citation></ti:citationMapping></ti:online></ti:edition></ti:work><ti:work xml:lang="lat" urn=\'urn:cts:latinLit:phi0660.phi003\' groupUrn=\'urn:cts:latinLit:phi0660\' xmlns:ti=\'http://chs.harvard.edu/xmlns/cts\'> </ti:work></ti:textgroup></ti:TextInventory></reply></GetCapabilities>'
    cts_passage_xml: str = '<GetPassage xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns="http://chs.harvard.edu/xmlns/cts"><request><requestName>GetPassage</requestName><requestUrn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.2</requestUrn></request><reply><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.2</urn><passage><TEI xmlns="http://www.tei-c.org/ns/1.0"><text><body><div type="edition" xml:lang="lat" n="urn:cts:latinLit:phi0448.phi001.perseus-lat2"><div n="1" type="textpart" subtype="book"><div type="textpart" subtype="chapter" n="1"><div type="textpart" subtype="section" n="1"><p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.</p></div><div type="textpart" subtype="section" n="2"><p>Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit.</p></div></div></div></div></body></text></TEI></passage></reply></GetPassage>'
    cts_passage_xml_1_level: str = '<GetPassage xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns="http://chs.harvard.edu/xmlns/cts"><request><requestName>GetPassage</requestName><requestUrn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1-1.2</requestUrn></request><reply><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1-1.2</urn><passage><TEI xmlns="http://www.tei-c.org/ns/1.0"><text><body><div type="edition" xml:lang="lat" n="urn:cts:latinLit:phi0448.phi001.perseus-lat2"><div n="1" type="textpart" subtype="book"><p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.</p></div><div n="2" type="textpart" subtype="book"><p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.</p></div><div n="3" type="textpart" subtype="book"><p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.</p></div></div></body></text></TEI></passage></reply></GetPassage>'
    cts_passage_xml_2_levels: str = '<GetPassage xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns="http://chs.harvard.edu/xmlns/cts"><request><requestName>GetPassage</requestName><requestUrn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1-1.2</requestUrn></request><reply><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1-1.2</urn><passage><TEI xmlns="http://www.tei-c.org/ns/1.0"><text><body><div type="edition" xml:lang="lat" n="urn:cts:latinLit:phi0448.phi001.perseus-lat2"><div n="1" type="textpart" subtype="book"><div type="textpart" subtype="section" n="1"><p>Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur.</p></div></div></div></body></text></TEI></passage></reply></GetPassage>'
    cts_reff_xml: str = '<GetValidReff xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns="http://chs.harvard.edu/xmlns/cts"><request><requestName>GetValidReff</requestName><requestUrn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1</requestUrn><requestLevel>3</requestLevel></request><reply><reff><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.2</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.3</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.4</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.5</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.6</urn><urn>urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.7</urn></reff></reply></GetValidReff>'
    exercise: Exercise = ExerciseMC.from_dict(
        eid="test", last_access_time=datetime.utcnow().timestamp(), exercise_type='ddwtos',
        search_values=f'["{Phenomenon.FEATS}={Case.accusative.name}", "{Phenomenon.DEPENDENCY}={Dependency.object.name}", "{Phenomenon.LEMMA}=bellum", "{Phenomenon.DEPENDENCY}={Dependency.root.name}"]',
        language=Language.English.value,
        conll="# newdoc id = /var/folders/30/yqnv6lz56r14dqhpw18knn2r0000gp/T/tmp7qn86au9\n# newpar\n# sent_id = 1\n# text = Caesar fortis est.\n1\tCaesar\tCaeso\tVERB\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t2\tcsubj\t_\t_\n2\tfortis\tfortis\tADJ\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t0\troot\t_\t_\n3\test\tsum\tAUX\tN3|modA|tem1|gen6|stAV\tMood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act\t2\tcop\t_\tSpaceAfter=No\n4\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\t_\n\n# sent_id = 2\n# text = Galli moriuntur.\n1\tGalli\tGallus\tPRON\tF1|grn1|casJ|gen1|stPD\tCase=Nom|Degree=Pos|Gender=Masc|Number=Plur|PronType=Dem\t2\tnsubj:pass\t_\t_\n2\tmoriuntur\tmorior\tVERB\tL3|modJ|tem1|gen9|stAV\tMood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Pass\t0\troot\t_\tSpaceAfter=No\n3\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\tSpacesAfter=\\n\n\n",
        solutions=json.dumps([
            Solution(target=SolutionElement(
                sentence_id=1, token_id=1, content="praecepturus",
                salt_id="salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent1tok1"),
                value=SolutionElement(
                    sentence_id=1, token_id=2, content="Caesar",
                    salt_id="salt:/urn:custom:latinLit:proiel.pal-agr.lat:1.1.1/doc1#sent1tok2")).to_dict()
        ]).replace(" ", ""),
        urn=f"{CustomCorpusService.custom_corpora[4].corpus.source_urn}:2.23.1-2.23.1")
    exercise_data: ExerciseData = ExerciseData(
        graph=GraphData(directed=False, graph={}, links=[
            LinkMC(annis_component_name=Config.GRAPHANNIS_DEPENDENCY_LINK, annis_component_type="act",
                   source="doc1#sent1tok1", target="doc1#sent1tok2", udep_deprel="uddr")],
                        multigraph=False, nodes=[
                NodeMC(annis_node_name="ann", annis_node_type="ant", annis_tok="atk", annis_type="atp",
                       id="doc1#sent1tok1", udep_upostag="udupt", udep_xpostag="udxpt", udep_feats="udf",
                       udep_lemma="udl"),
                NodeMC(annis_node_name="ann", annis_node_type="ant", annis_tok="atk", annis_type="atp",
                       id="doc1#sent1tok2", udep_upostag="udupt", udep_xpostag="udxpt", udep_feats="udf",
                       udep_lemma="udl")]), uri="/test", solutions=[])
    exercise_pdf: bytes = b'%PDF-1.4\n%\x93\x8c\x8b\x9e ReportLab Generated PDF document http://www.reportlab.com\n1 0 obj\n<<\n/F1 2 0 R\n>>\nendobj\n2 0 obj\n<<\n/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font\n>>\nendobj\n3 0 obj\n<<\n/BitsPerComponent 1 /ColorSpace /DeviceGray /Filter [ /ASCII85Decode ] /Height 23 /Length 223 /Subtype /Image \n  /Type /XObject /Width 24\n>>\nstream\n\n            003B00 002700 002480 0E4940 114920 14B220 3CB650\n            75FE88 17FF8C 175F14 1C07E2 3803C4 703182 F8EDFC\n            B2BBC2 BB6F84 31BFC2 18EA3C 0E3E00 07FC00 03F800\n            1E1800 1FF800>\n            endstream\nendobj\n4 0 obj\n<<\n/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources <<\n/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject <<\n/FormXob.c7485dcc8d256a6f197ed7802687f252 3 0 R\n>>\n>> /Rotate 0 /Trans <<\n\n>> \n  /Type /Page\n>>\nendobj\n5 0 obj\n<<\n/PageMode /UseNone /Pages 7 0 R /Type /Catalog\n>>\nendobj\n6 0 obj\n<<\n/Author () /CreationDate'
    exercise_xml: str = '<quiz>   <question type="matching">       <name>           <text></text>       </name>       <questiontext format="html">           <text><![CDATA[<br><p></p><p></p><br><br>]]></text>       </questiontext>       <generalfeedback format="html">           <text></text>       </generalfeedback>       <defaultgrade>1.0000000</defaultgrade>       <penalty>0.1000000</penalty>       <hidden>0</hidden>       <shuffleanswers>1</shuffleanswers>       <correctfeedback format="html">           <text></text>       </correctfeedback>       <partiallycorrectfeedback format="html">           <text></text>       </partiallycorrectfeedback>       <incorrectfeedback format="html">           <text></text>       </incorrectfeedback>       <shownumcorrect/>              <tags></tags>   </question></quiz>'
    graph_data_raw_part: str = '{"directed":true,"multigraph":true,"graph":{},"nodes":[{"annis::node_name":"'
    h5p_json_cloze: str = '{"textField":"*Caesar* fortis est. Galli moriuntur."}'
    h5p_json_matching: str = '{"textField":"praecepturus *Caesar*\\n"}'
    h5p_json_fill_blanks_1: Tuple[str, str] = ("1_en",
                                               '{"questions": [ "<p>Gaius --> *C.* --> *make*<\/p>", "<p>scribo --> *scribere* --> *write*<\/p>", "<p>commoveri --> *commovere* --> *move / unsettle*<\/p>", "<p>gaudeas --> *gaudere* --> *rejoice / be glad*<\/p>" ], "showSolutions": "Show solutions", "tryAgain": "Try again", "text": "<p><b>Vocabulary knowledge<\/b><br>Fill in the basic form and give a translation of this form.</p>\\n"}')
    h5p_json_fill_blanks_3: Tuple[str, str] = ("3_en",
                                               '{"questions": [ "<p>signum --> *sign*<\/p>", "<p>vas --> *jar*<\/p>", "<p>condicio --> *condition / requirement / term*<\/p>", "<p>clarus --> *clear / bright*<\/p>" ], "showSolutions": "Show solutions", "tryAgain": "Try again", "text": "<p>Translate this word of origin:<\/p>\\n"}')
    h5p_json_fill_blanks_4: Tuple[str, str] = ("4_en",
                                               '{"questions": [ "<p>deducere --> *de*-*ducere* --> *lead away*<\/p>", "<p>commovere --> *com / cum*-*movere* --> *move / to move*<\/p>", "<p>praeclarus --> *prae*-*clarus* --> *highly famous / famous*" ], "showSolutions": "Show solutions", "tryAgain": "Try again", "text": "<p>Break down the compounds into their components and give a possible English translation:<\/p>\\n"}')
    h5p_json_fill_blanks_13: Tuple[str, str] = ("13_en",
                                                '{"questions": [ "<p>Name the Latin phrase for \\"your efficiency\\".<br> *istam virtutem*<\/p>", "<p>Which English word corresponds to the Latin combination of words \\"moderationem animi\\"?<br> *serenity / the serenity / your serenity*<\/p>", "<p>Who sees and hears of the efficiency of Quintus? Indicate the appropriate genitive attributes.<br> *clarissimae provinciae* and *omnium gentium ac nationum*<\/p>" ], "showSolutions": "Show solutions", "tryAgain": "Try again", "text": "<p><b><i>Quid autem reperiri tam eximium aut tam expetendum potest quam istam virtutem, moderationem animi, temperantiam [...] in luce Asiae, in oculis clarissimae provinciae atque in auribus omnium gentium ac nationum esse positam?<\/i><\/b><\/p><br><p>But what can turn out to be greater and more desirable than that your efficiency, your serenity and your modesty [...] were spread out in the public of the province of Asia, before the eyes of the highly famous province and before the ears of all tribes and peoples?<\/p>\\n"}')
    h5p_json_multi_choice: str = '{"answers":[{"correct":false,"text":"<div>He is satisfied.<\/div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":true,"text":"<div>It is enough.<\/div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":false,"text":"<div>He has enough.<\/div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}}],"question":"<p>Choose the correct meaning:<\/p><p><em>satis est.<\/em><\/p>\\n"}'
    h5p_json_multi_choice_2: str = '{"answers":[{"correct":true,"text":"<div>provincia</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":true,"text":"<div>civis</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":true,"text":"<div>socius</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":true,"text":"<div>publicus</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":false,"text":"<div>adventus</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":false,"text":"<div>omnis</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":false,"text":"<div>autem</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}},{"correct":false,"text":"<div>res</div>\\n","tipsAndFeedback":{"tip":"","chosenFeedback":"","notChosenFeedback":""}}],"question":"<p>Choose words (4) that belong to the word field <b>government</b>:</p>\\n"}'
    h5p_json_multi_choice_9: Tuple[str, str] = ("9_en",
                                                '{"answers": [ { "correct": true, "text": "<div>provincia<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": true, "text": "<div>civis<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": true, "text": "<div>socius<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": true, "text": "<div>publicus<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": false, "text": "<div>adventus<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": false, "text": "<div>omnis<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": false, "text": "<div>autem<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } }, { "correct": false, "text": "<div>res<\/div>\\n", "tipsAndFeedback": { "tip": "", "chosenFeedback": "", "notChosenFeedback": "" } } ], "question": "<p>Choose words (4) that belong to the word field <b>government</b>:<\/p>\\n"}')
    h5p_json_voc_list: str = '{"questions":["<p><h4>atque </h4> *and : and*</p>"]}'
    headers_form_data: dict = {"Content-Type": "application/x-www-form-urlencoded"}
    kwic_svg: bytes = b'"<svg height=\\"360\\" id=\\"svg1\\" width=\\"1252\\">'
    nodes: List[dict] = [{"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok1",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": "Caesar",
                          "udep::upostag": "VERB", "udep::xpostag": "L3|modJ|tem3|gen4|stAV",
                          "udep::feats": "Mood=Ind|Number=Sing|Person=1|Tense=Fut|VerbForm=Fin|Voice=Pass",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok1"},
                         {"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok5",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": "sunt",
                          "udep::upostag": "AUX", "udep::xpostag": "N3|modA|tem1|gen9|stAV",
                          "udep::feats": "Mood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok5"},
                         {"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok4",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": "fortes",
                          "udep::upostag": "NOUN", "udep::xpostag": "C1|grn1|casJ|gen2|stRS",
                          "udep::feats": "Case=Nom|Degree=Pos|Gender=Fem|Number=Plur",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok4"},
                         {"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok2",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": "et",
                          "udep::upostag": "CCONJ", "udep::xpostag": "O4|stRL",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok2"},
                         {"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok6",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": ".",
                          "udep::upostag": "PUNCT", "udep::xpostag": "Punc",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok6"},
                         {"annis::node_name": "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok3",
                          "annis::node_type": "node", "annis::type": "node", "annis::tok": "Galli",
                          "udep::upostag": "VERB", "udep::xpostag": "L3|modQ|tem1|stAC",
                          "udep::feats": "Tense=Pres|VerbForm=Inf|Voice=Pass",
                          "id": "salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok3"}]
    proper_nouns: List[str] = ['Alcibiades', 'Carthago', 'Gallia', 'Graecus', 'Hermes', 'Iuppiter', 'Maria', 'Pollux',
                               'Romanus', 'Solomon', 'amor']
    raw_text: str = "Caesar fortis est. Galli moriuntur."
    static_exercises_udpipe_string: str = "1\tscribere\tscribere\n1\tcommovere\tcommovere\n1\tC\tC\n1\tgaudere\tgaudere\n1\tsignum\tsignum\n1\tvas\tvas\n1\tclarus\tclarus\n1\tcondicio\tcondicio\n1\tcom\tcum\n1\tprae\tprae\n1\tmovere\tmovere\n1\tducere\tducere\n1\tde\tde\n1\tcum\tcum\n1\tistam\tiste\n1\tnationum\tnatio\n1\tclarissimae\tclarus\n1\tmoderationem\tmoderatio\n1\tanimi\tanimus\n1\tomnium\tomnis\n1\tgentium\tgens\n1\tac\tac\n1\tvirtutem\tvirtus\n1\tprovinciae\tprovincia\n1\tCaesar\tCaesar\n1\test\tesse\n1\tsatis\tsatis\n1\tgovernment\tgovernment\n1\tsocius\tsocius\n1\tprovincia\tprovincia\n1\tpublicus\tpublicus\n1\tcivis\tcivis\n1\tatque\tatque"
    subgraph_json: str = '{"exercise_id":"","exercise_type":"","frequency_analysis":null,"graph_data":{"directed":true,"graph":{},"links":[],"multigraph":true,"nodes":[{"annis_node_name":"urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok3","annis_node_type":"node","annis_tok":"Galli","annis_type":"node","id":"salt:/urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.1/doc1#sent1tok3","is_oov":null,"udep_lemma":"Gallo","udep_upostag":"VERB","udep_xpostag":"L3|modQ|tem1|stAC","udep_feats":"Tense=Pres|VerbForm=Inf|Voice=Pass","solution":null}]},"solutions":[],"text_complexity":null,"uri":""}'
    test_args: List[str] = ["tests.py", "-test"]
    text_complexity_json_string: str = '{"all":54.53,"avg_w_len":5.79,"avg_w_per_sent":17.33,"lex_den":0.73,"n_abl_abs":0,"n_clause":1,"n_gerund":1,"n_inf":1,"n_part":1,"n_punct":3,"n_sent":3,"n_subclause":0,"n_types":48,"n_w":52,"pos":11}'
    text_list: List[Tuple[str, str]] = [("urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1", raw_text.split(".")[0]),
                                        ("urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.2", raw_text.split(".")[1])]
    text_parts: List[TextPart] = [
        TextPart(citation=Citation(level=CitationLevel.book, label="2", value=2), text_value="text", sub_text_parts=[
            TextPart(
                citation=Citation(level=CitationLevel.chapter, label="23", value=23), text_value="inner text",
                sub_text_parts=[
                    TextPart(citation=Citation(level=CitationLevel.section, label="1", value=1),
                             text_value="subtext"),
                    TextPart(citation=Citation(level=CitationLevel.section, label="2", value=2))])])]
    udpipe_string: str = "# newpar\n# sent_id = 1\n# text = Caesar fortis est.\n1\tCaesar\tCaeso\tVERB\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t2\tcsubj\t_\t_\n2\tfortis\tfortis\tADJ\tC1|grn1|casA|gen1|stAN\tCase=Nom|Degree=Pos|Gender=Masc|Number=Sing\t0\troot\t_\t_\n3\test\tsum\tAUX\tN3|modA|tem1|gen6|stAV\tMood=Ind|Number=Sing|Person=3|Tense=Pres|VerbForm=Fin|Voice=Act\t2\tcop\t_\tSpaceAfter=No\n4\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\t_\n\n# sent_id = 2\n# text = Galli moriuntur.\n1\tGalli\tGallus\tPRON\tF1|grn1|casJ|gen1|stPD\tCase=Nom|Degree=Pos|Gender=Masc|Number=Plur|PronType=Dem\t2\tnsubj:pass\t_\t_\n2\tmoriuntur\tmorior\tVERB\tL3|modJ|tem1|gen9|stAV\tMood=Ind|Number=Plur|Person=3|Tense=Pres|VerbForm=Fin|Voice=Pass\t0\troot\t_\tSpaceAfter=No\n3\t.\t.\tPUNCT\tPunc\t_\t2\tpunct\t_\tSpacesAfter=\\n\n\n"
    urn: str = "urn:cts:latinLit:phi0448.phi001.perseus-lat2:1.1.1-1.1.2"
    urn_custom: str = f"{CustomCorpusService.custom_corpora[4].corpus.source_urn}:2.23.1-2.23.1"
    xapi_json_string: str = '{"0":{"actor":{"account":{"name":"9a7eef78-b0b4-471d-b451-e47c9b20d231"},"objectType":"Agent"},"verb":{"id":"http://adlnet.gov/expapi/verbs/answered","display":{"en-US":"answered"}},"object":{"objectType":"Activity","definition":{"extensions":{"http://h5p.org/x-api/h5p-local-content-id":1},"interactionType":"fill-in","type":"http://adlnet.gov/expapi/activities/cmi.interaction","description":{"en-US":"<p>Matching: Assign the matching elements to each other!</p><br/>divisa __________<br/>dividit __________<br/>"},"correctResponsesPattern":["partes[,]Belgis"]}},"context":{"contextActivities":{"category":[{"id":"http://h5p.org/libraries/H5P.DragText-1.8","objectType":"Activity"}]}},"result":{"response":"Belgis[,]","score":{"min":0,"raw":0,"max":2,"scaled":0},"duration":"PT4.12S","completion":true}}}'

    @staticmethod
    def mock_add_eges(keys: List[str], w2v: Word2Vec, nearest_neighbor_count: int, min_count: int, graph: Graph):
        graph.add_edge("ueritas", "uera")