remove manual modal

This commit is contained in:
Patrick Jentsch 2024-05-27 16:58:51 +02:00
parent fe0fcb0e10
commit a65b1ff578
17 changed files with 615 additions and 564 deletions

View File

@ -159,28 +159,6 @@ nopaque.App = class App {
}
);
// Manual modal
M.Modal.init(
document.querySelector('#manual-modal'),
{
onOpenStart: (modalElement, modalTriggerElement) => {
if ('manualModalChapter' in modalTriggerElement.dataset) {
let manualModalTocElement = document.querySelector('#manual-modal-toc');
let manualModalToc = M.Tabs.getInstance(manualModalTocElement);
manualModalToc.select(modalTriggerElement.dataset.manualModalChapter);
// TODO: Make this work.
// if ('manualModalChapterAnchor' in modalTriggerElement.dataset) {
// let manualModalChapterAnchor = document.querySelector(`#${modalTriggerElement.dataset.manualModalChapterAnchor}`);
// let xCoord = manualModalChapterAnchor.getBoundingClientRect().left;
// let yCoord = manualModalChapterAnchor.getBoundingClientRect().top;
// let modalContentElement = modalElement.querySelector('.modal-content');
// modalContentElement.scroll(xCoord, yCoord);
// }
}
}
}
);
// Terms of use modal
M.Modal.init(
document.querySelector('#terms-of-use-modal'),

View File

@ -8,6 +8,10 @@
cursor: pointer !important;
}
.fixed {
position: fixed;
}
.show-if-only-child:not(:only-child) {
display: none !important;
}

View File

@ -1,52 +0,0 @@
<h3 class="manual-chapter-title">Services</h3>
<div class="row">
<div class="col s12 m4">
<img alt="Services" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/services.png') }}">
</div>
<div class="col s12 m8">
<p>
nopaque was designed from the ground up to be modular. This modularity
means that the offered workflow provides variable entry and exit points,
so that different starting points and goals can be flexibly addressed.
Each of these modules are implemented in a self-contained service, each of
which represents a step in the workflow. The services are coordinated in
such a way that they can be used consecutively. The order can either be
taken from the listing of the services in the left sidebar or from the
roadmap (accessible via the pink compass in the upper right corner). All
services are versioned, so the data generated with nopaque is always
reproducible.
</p>
</div>
</div>
<h4 class="manual-chapter-title">File Setup</h4>
<p>
The <a href="{{ url_for('services.file_setup_pipeline') }}">File Setup Service</a> bundles image data, such as scans and photos,
together in a handy PDF file. To use this service, use the job form to
select the images to be bundled, choose the desired service version, and
specify a title and description. Please note that the service sorts the
images into the resulting PDF file based on the file names. So naming the
images correctly is of great importance. It has proven to be a good practice
to name the files according to the following scheme:
page-01.png, page-02.jpg, page-03.tiff, etc. In general, you can assume
that the images will be sorted in the order in which the file explorer of
your operating system lists them when you view the files in a folder
sorted in ascending order by file name.
</p>
<h4>Optical Character Recognition (OCR)</h4>
<p>Coming soon...</p>
<h4>Handwritten Text Recognition (HTR)</h4>
<p>Coming soon...</p>
<h4>Natural Language Processing (NLP)</h4>
<p>Coming soon...</p>
<h4>Corpus Analysis</h4>
<p>
With the corpus analysis service, it is possible to create a text corpus
and then explore it in an analysis session. The analysis session is realized
on the server side by the Open Corpus Workbench software, which enables
efficient and complex searches with the help of the CQP Query Language.
</p>

View File

@ -1,47 +0,0 @@
<h3 class="manual-chapter-title">A closer look at the Corpus Analysis</h3>
<h4>Create a corpus</h4>
<div class="row">
<div class="col s12 m4">
<img alt="Create a Corpus" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/create-a-corpus.png') }}">
</div>
<div class="col s12 m8">
<p>
To <a href="{{ url_for('corpora.create_corpus') }}">create a corpus</a>, you
can use the "New Corpus" button, which can be found on both the Corpus
Analysis Service page and the Dashboard below the corpus list. Fill in the input
mask to Create a corpus. After you have completed the input mask, you will
be automatically taken to the corpus overview page (which can be called up
again via the corpus lists) of your new and accordingly still empty corpus.
</p>
</div>
<div class="col s12">&nbsp;</div>
<div class="col s12 m4">
<img alt="Create a Corpus" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/add-corpus-file.png') }}">
</div>
<div class="col s12 m8">
<p>
Now you can add texts in vrt format (results of the NLP service) to your new
corpus. To do this, use the "Add Corpus File" button and fill in the form
that appears. You will get the possibility to add metadata to each text.
After you have added all the desired texts to the corpus, the corpus must be
prepared for the analysis, this process can be initiated by clicking on the
"Build" button. On the corpus overview page you can always see information
about the current status of the corpus in the upper right corner. After the
build process the status should be "built".
</p>
</div>
</div>
<h4>Analyze a corpus</h4>
<p>
After you have created and built a corpus, it can be analyzed. To do this,
use the button labeled Analyze. The corpus analysis currently offers two
modules, the Reader and the Concordance module. The reader module can be
used to read your tokenized corpus in different ways. You can select a token
representation option, it determines the property of a token to be shown.
You can for example read your text completly lemmatized. You can also change
the way of how a token is displayed, by using the text style switch. The
concordance module offers some more options regarding the context size of
search results. If the context does not provide enough information you can
hop into the reader module by using the magnifier icon next to a match.
</p>

View File

@ -1,211 +0,0 @@
<h3 class="manual-chapter-title">Query Builder Tutorial</h3>
<h4>Overview</h4>
<p>The query builder can be accessed via "My Corpora" or "Corpus Analysis" in the sidebar options.
Select the desired corpus and click on the "Analyze" and then "Concordance"
buttons to open the query builder.</p>
<p>The query builder uses the Corpus Query Language (CQL) to help you make a query for analyzing your texts.
In this way, it is possible to filter out various types of text parameters, for
example, a specific word, a lemma, or you can set part-of-speech
tags (pos) that indicate the type of word you are looking for (a noun, an
adjective, etc.). In addition, you can also search for structural attributes,
or specify your query for a token (word, lemma, pos) via entity typing. And of
course, the different text parameters can be combined.</p>
<p>Tokens and structural attributes can be added by clicking on the "+" button
(the "input marker") in the input field or the labeled buttons below it. Elements
added are shown as chips. These can be reorganized using drag and drop. The input
marker can also be moved in this way. Its position shows where new elements will be added. <br>
A "translation" of your query into Corpus Query Language (CQL) is shown below.</p>
<p>Advanced users can make direct use of the Corpus Query Language (CQL) by switching to "expert mode" via the toggle button.</p>
<p>The entire input field can be cleared using the red trash icon on the right.</p>
<br>
<div style="border: 1px solid; padding-left: 20px; margin-right: 400px; margin-bottom: 40px;">
<h5>Content</h5>
<ol style="list-style-type:disc">
<li><a href="#add-new-token-tutorial">Add a new token to your query</a></li>
<li><a href="#edit-options-tutorial">Options for editing your query</a></li>
<li><a href="#add-structural-attribute-tutorial">Add structural attributes to your query</a></li>
<li><a href="#general-options-query-builder">General options</a></li>
</ol>
</div>
{# Add Token Tutorial #}
<div>
<hr>
<p></p>
<br>
<h4 id="add-new-token-tutorial">Add new token to your Query</h4>
<p>If you are only looking for a specific token, you can click on the left
button and select the type of token you are looking for from the drop-down menu.
By default "Word" is selected. </p>
<br>
<h5>Word and Lemma</h5>
<p>If you want to search for a specific word or lemma and the respective
category is selected in the drop-down menu, you can type in the word or lemma
of your choice in the input field. You can confirm your entry by clicking the
Submit button on the right. You can also use the options below to modify your
token request before pressing the submit button. These options are explained
further here.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/word_lemma.gif') }}" alt="word and lemma explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>English pos, german pos or simple_pos</h5>
<p>You can choose between the options "english pos", "german pos" and
"simple_pos" to search for different parts-of-speech. You can find an overview
of all tags under the "Tagsets" tab.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/pos.gif') }}" alt="part-of-speech-tag explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Empty Token</h5>
<p>Here you can search for a token with unspecified attributes (also called wildcard token). This
selection should never stand alone and should always be extended with an incidence modifier or stand in a
larger query, because otherwise all possible tokens would be searched for and
the program would crash.</p>
<br>
</div>
{# Edit Options Tutorial #}
<div>
<hr>
<p></p>
<br>
<h4 id="edit-options-tutorial">Options for editing your query</h4>
<p>You have the possibility to extend or specify the token you are searching for with
certain factors. For this the query builder offers some fixed options. You can
find more information about the options in the Corpus Query Language Tutorial.</p>
<br>
<h5>Wildcard Character</h5>
<p>A wildcard character replaces any character and is represented in the form of a dot. </p>
<br>
<h5>Option Group</h5>
<p>With an option group you can search for different variants of a token. The
variants are not limited, so you can manually enter more options in the same
format. "Option1" and "option2" must be replaced accordingly. </p>
<img src="{{ url_for('static', filename='images/manual/query_builder/option_group.gif') }}" alt="option group explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Incidence Modifiers</h5>
<p>With the Incidence Modifiers you can determine the occurrence of single
tokens. For example you can use "?" to indicate that the token occurs either
not at all or once: <br>
[word = "is"] [word="it"] [word="your"] [word="litte"]? [word = "dog"] <br>
Here the word "little" should occur either once or not at all. With
[word="dogs?"] the search is for "dog "or "dogs".</p>
<br>
<h5>Ignore Case</h5>
<p>With the check mark at Ignore Case the upper and lower case is ignored.
This is marked with a "%c". By default (if not checked) it is case sensitive.</p>
<br>
<h5>"or" & "and"</h5>
<p>"Or" ( | ) and "and" ( & ) are conditions you can put on a token. With "or"
one of the two conditions must be fulfilled, with "and" both conditions must be
fulfilled. For example, the word must be called "will" AND be a verb, only then
it will be displayed. Note that "and" is not responsible for lining up tokens in
this case. For this you can simply string them together: <br>
[word="I"] [word="will" & simple_pos="VERB"] [word="go"].</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/or_and.gif') }}" alt="OR/AND explanation" width="100%;" style="margin-bottom:20px;">
<p>Tokens that have already been added can also be modified by clicking on the corresponding
pen icon. Click on the "ignore case" box, for example, and the query builder will
not differentiate between upper- and lower- case letters for that respective token.
New conditions added apply to the most recent token information.</p>
<br>
</div>
{# Add Structural Attributes Tutorial #}
<div>
<hr>
<p></p>
<br>
<h4 id="add-structural-attribute-tutorial">Add structural attributes to your query</h4>
<p>You can use structural attributes to search specifically for structures in
the text or to further narrow down your previous search query. </p>
<br>
<h5>Sentence</h5>
With "Sentence" (<s></s>) you can search for sentences within your text.
This search can of course be specified if you search for particular tokens or
entities between the sentence tags (<s></s>). For example, you can search for
sentences that contain only a noun, verb, and adjective. <br>
Click on Sentence to add the sentence chips: <div class="chip" style="background-color:#FD9720;">Sentence Start</div>
and <div class="chip" style="background-color:#FD9720;">Sentence End</div>.
These mark where the sentence starts and ends. Use drag-and-drop to place them accordingly. When
the Sentence attribute is added, the input marker will automatically be
moved between the sentence chips. Use drag-and-drop as needed to continue your query
at a different position.
<br>
<h5>Entities</h5>
<p>With entities, i.e. units of meaning, you can search for text sections that
contain more specific information, for example, persons, dates, or events. The
codes for these categories can be selected using the drop-down menus. You can find an explanation of
these abbreviations under the tab "Tagsets". <br>
You can also search for unspecified entities by selecting "Add entity of any type".</p>
Click on the Entity button to add the entity chips <div class="chip" style="background-color:#A6E22D;">Entity Type=</div> and <div class="chip" style="background-color:#A6E22D;">Entity End</div>.
<p>The entity type can be changed by clicking on the pen symbol on the chip. When
the Entity attribute is added, the input marker will automatically be
moved between the entity chips. Use drag-and-drop as needed to continue your query
at a different position.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/entity.gif') }}" alt="entity explanation" width="100%;" style="margin-bottom:20px;">
<p></p>
<br>
<h5>Meta Data (currently unavailable)</h5>
<p>The meta data function is being worked on and cannot currently be used!
<br>
With the meta data you can annotate your text and add specific conditions.
You can select a category on the left and enter your desired value on the right.
The selected metadata will apply to your entire request and will be added at the end.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/meta_data.gif') }}" alt="meta data explanation" width="100%;" style="margin-bottom:20px;">
<p></p>
<br>
</div>
{# General Options Tutorial #}
<div>
<hr>
<p></p>
<br>
<h4 id="general-options-query-builder">General Options of the query builder</h4>
<p>You have several options to edit your query after adding it to the preview.</p>
<br>
<h5>Editing the elements</h5>
<p>You can edit your query chips by clicking on the pen icon.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/editing_chips.gif') }}" alt="editing explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Deleting the elements</h5>
<p>You can delete the added elements from the query by clicking the X behind the respective content.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/delete.gif') }}" alt="delete explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Move the elements of your query</h5>
<p>You can drag and drop elements to customize your query.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/drag_and_drop.gif') }}" alt="Drag&Drop explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Setting an incidence modifier</h5>
<p>With the incidence modifier option, you can specify the amount of
times a token should appear in your query. This is particularly relevant for empty
tokens (tokens with unspecified attributes). Click on a token (blue chip) and
select the desired option from the list to add an incidence modifier. To
close the list without adding anything, click on the token again.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/incidence_modifier.gif') }}" alt="incidence modifier explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h5>Switching between Query Builder and Expert mode</h5>
<p>To work with the plain Corpus Query Language instead of using the Query Builder, click on the "expert mode"
switch. Your query can be entered into the input field. All elements previously added will be carried over
into expert mode. Click on the switch again to switch back to the Query Builder if desired. All recognized elements
will be parsed into chips; those not recognized will be deleted from the query.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/expert_mode.gif') }}" alt="expert mode explanation" width="100%;" style="margin-bottom:20px;">
</div>

View File

@ -1,170 +0,0 @@
<div id="simple_pos-tagset">
<h5>simple_pos tagset</h5>
<ul>
<li>ADJ: adjective</li>
<li>ADP: adposition</li>
<li>ADV: adverb</li>
<li>AUX: auxiliary verb</li>
<li>CONJ: coordinating conjunction</li>
<li>DET: determiner</li>
<li>INTJ: interjection</li>
<li>NOUN: noun</li>
<li>NUM: numeral</li>
<li>PART: particle</li>
<li>PRON: pronoun</li>
<li>PROPN: proper noun</li>
<li>PUNCT: punctuation</li>
<li>SCONJ: subordinating conjunction</li>
<li>SYM: symbol</li>
<li>VERB: verb</li>
<li>X: other</li>
</ul>
</div>
<div id="english-ent_type-tagset">
<h5>English ent_type tagset</h5>
<ul>
<li>CARDINAL: Numerals that do not fall under another type</li>
<li>DATE: Absolute or relative dates or periods</li>
<li>EVENT: Named hurricanes, battles, wars, sports events, etc.</li>
<li>FAC: Buildings, airports, highways, bridges, etc.</li>
<li>GPE: Countries, cities, states</li>
<li>LANGUAGE: Any named language</li>
<li>LAW: Named documents made into laws.</li>
<li>LOC: Non-GPE locations, mountain ranges, bodies of water</li>
<li>MONEY: Monetary values, including unit</li>
<li>NORP: Nationalities or religious or political groups</li>
<li>ORDINAL: "first" "second" etc.</li>
<li>ORG: Companies, agencies, institutions, etc.</li>
<li>PERCENT: Percentage, including "%"</li>
<li>PERSON: People, including fictional</li>
<li>PRODUCT: Objects, vehicles, foods, etc. (not services)</li>
<li>QUANTITY: Measurements, as of weight or distance</li>
<li>TIME: Times smaller than a day</li>
<li>WORK_OF_ART: Titles of books, songs, etc.</li>
</ul>
</div>
<div id="english-pos-tagset">
<h5>English pos tagset</h5>
<ul>
<li>ADD: email</li>
<li>AFX: affix</li>
<li>CC: conjunction, coordinating</li>
<li>CD: cardinal number</li>
<li>DT: determiner</li>
<li>EX: existential there</li>
<li>FW: foreign word</li>
<li>HYPH: punctuation mark, hyphen</li>
<li>IN: conjunction, subordinating or preposition</li>
<li>JJ: adjective</li>
<li>JJR: adjective, comparative</li>
<li>JJS: adjective, superlative</li>
<li>LS: list item marker</li>
<li>MD: verb, modal auxiliary</li>
<li>NFP: superfluous punctuation</li>
<li>NN: noun, singular or mass</li>
<li>NNP: noun, proper singular</li>
<li>NNPS: noun, proper plural</li>
<li>NNS: noun, plural</li>
<li>PDT: predeterminer</li>
<li>POS: possessive ending</li>
<li>PRP: pronoun, personal</li>
<li>PRP$: pronoun, possessive RB: adverb</li>
<li>RBR: adverb, comparative</li>
<li>RBS: adverb, superlative</li>
<li>RP: adverb, particle</li>
<li>SYM: symbol</li>
<li>TO: infinitival "to"</li>
<li>UH: interjection</li>
<li>VB: verb, base form</li>
<li>VBD: verb, past tense</li>
<li>VBG: verb, gerund or present participle</li>
<li>VBN: verb, past participle</li>
<li>VBP: verb, non-3rd person singular present</li>
<li>VBZ: verb, 3rd person singular present</li>
<li>WDT: wh-determiner</li>
<li>WP: wh-pronoun, personal</li>
<li>WP$: wh-pronoun, possessive</li>
<li>WRB: wh-adverb</li>
<li>XX: unknown</li>
<li>``: opening quotation mark</li>
<li>$: symbol, currency</li>
<li>"": closing quotation mark</li>
<li>: punctuation mark, comma</li>
<li>-LRB-: left round bracket</li>
<li>-RRB-: right round bracket</li>
<li>.: punctuation mark, sentence closer</li>
<li>:: punctuation mark, colon or ellipsis</li>
</ul>
</div>
<div id="german-ent_type-tagset">
<h5>German ent_type tagset</h5>
<ul>
<li>LOC: Non-GPE locations, mountain ranges, bodies of water</li>
<li>MISC: Miscellaneous entities, e.g. events, nationalities, products or works of art</li>
<li>ORG: Companies, agencies, institutions, etc.</li>
<li>PER: Named person or family.</li>
</ul>
</div>
<div id="german-pos-tagset">
<h5>German pos tagset</h5>
<ul>
<li>ADJA: adjective, attributive</li>
<li>ADJD: adjective, adverbial or predicative</li>
<li>ADV: adverb</li>
<li>APPO: postposition</li>
<li>APPR: preposition; circumposition left</li>
<li>APPRART: preposition with article</li>
<li>APZR: circumposition right</li>
<li>ART: definite or indefinite article</li>
<li>CARD: cardinal number</li>
<li>FM: foreign language material</li>
<li>ITJ: interjection</li>
<li>KOKOM: comparative conjunction</li>
<li>KON: coordinate conjunction</li>
<li>KOUI: subordinate conjunction with \zu\ and infinitive</li>
<li>KOUS: subordinate conjunction with sentence</li>
<li>NE: proper noun</li>
<li>NN: noun, singular or mass</li>
<li>NNE: proper noun</li>
<li>PDAT: attributive demonstrative pronoun</li>
<li>PDS: substituting demonstrative pronoun</li>
<li>PIAT: attributive indefinite pronoun without determiner</li>
<li>PIS: substituting indefinite pronoun</li>
<li>PPER: non-reflexive personal pronoun</li>
<li>PPOSAT: attributive possessive pronoun</li>
<li>PPOSS: substituting possessive pronoun</li>
<li>PRELAT: attributive relative pronoun</li>
<li>PRELS: substituting relative pronoun</li>
<li>PRF: reflexive personal pronoun</li>
<li>PROAV: pronominal adverb</li>
<li>PTKA: particle with adjective or adverb</li>
<li>PTKANT: answer particle</li>
<li>PTKNEG: negative particle</li>
<li>PTKVZ: separable verbal particle</li>
<li>PTKZU: "zu" before infinitive</li>
<li>PWAT: attributive interrogative pronoun</li>
<li>PWAV: adverbial interrogative or relative pronoun</li>
<li>PWS: substituting interrogative pronoun</li>
<li>TRUNC: word remnant</li>
<li>VAFIN: finite verb, auxiliary</li>
<li>VAIMP: imperative, auxiliary</li>
<li>VAINF: infinitive, auxiliary</li>
<li>VAPP: perfect participle, auxiliary</li>
<li>VMFIN: finite verb, modal</li>
<li>VMINF: infinitive, modal</li>
<li>VMPP: perfect participle, modal</li>
<li>VVFIN: finite verb, full</li>
<li>VVIMP: imperative, full</li>
<li>VVINF: infinitive, full</li>
<li>VVIZU: infinitive with "zu" full</li>
<li>VVPP: perfect participle, full</li>
<li>XY: non-word containing non-letter</li>
<li>$(: other sentence-internal punctuation mark</li>
<li>$,: comma</li>
<li>$.: sentence-final punctuation mark</li>
</ul>
</div>

View File

@ -1,50 +0,0 @@
<div id="manual-modal" class="modal no-autoinit">
<div class="modal-content">
<h2>Manual</h2>
<ul class="tabs" id="manual-modal-toc">
<li class="tab"><a href="#manual-modal-introduction">Introduction</a></li>
<li class="tab"><a href="#manual-modal-registration-and-log-in">Registration and Log in</a></li>
<li class="tab"><a href="#manual-modal-dashboard">Dashboard</a></li>
<li class="tab"><a href="#manual-modal-services">Services</a></li>
<li class="tab"><a href="#manual-modal-a-closer-look-at-the-corpus-analysis">A closer look at the Corpus Analysis</a></li>
<li class="tab"><a href="#manual-modal-cqp-query-language">CQP Query Language</a></li>
<li class="tab"><a href="#manual-modal-query-builder">Query Builder</a></li>
<li class="tab"><a href="#manual-modal-tagsets">Tagsets</a></li>
</ul>
<div id="manual-modal-introduction">
<br>
{% include "_base/_modals/_manual/01_introduction.html.j2" %}
</div>
<div id="manual-modal-registration-and-log-in">
<br>
{% include "_base/_modals/_manual/02_registration_and_log_in.html.j2" %}
</div>
<div id="manual-modal-dashboard">
<br>
{% include "_base/_modals/_manual/03_dashboard.html.j2" %}
</div>
<div id="manual-modal-services">
<br>
{% include "_base/_modals/_manual/06_services.html.j2" %}
</div>
<div id="manual-modal-a-closer-look-at-the-corpus-analysis">
<br>
{% include "_base/_modals/_manual/07_a_closer_look_at_the_corpus_analysis.html.j2" %}
</div>
<div id="manual-modal-cqp-query-language">
<br>
{% include "_base/_modals/_manual/08_cqp_query_language.html.j2" %}
</div>
<div id="manual-modal-query-builder">
<br>
{% include "_base/_modals/_manual/09_query_builder.html.j2" %}
</div>
<div id="manual-modal-tagsets">
<br>
{% include "_base/_modals/_manual/10_tagsets.html.j2" %}
</div>
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Close</a>
</div>
</div>

View File

@ -1,5 +1,3 @@
{% include "_base/_modals/manual.html.j2" %}
{% if current_user.is_authenticated and not current_user.terms_of_use_accepted %}
{% include "_base/_modals/terms_of_use.html.j2" %}
{% endif %}

View File

@ -17,7 +17,7 @@
</li>
{% endif %}
<li>
<a class="waves-effect modal-trigger" href="#manual-modal"><i class="material-icons">school</i>Manual</a>
<a class="waves-effect" href="{{ url_for('main.manual') }}"><i class="material-icons">school</i>Manual</a>
</li>
<li>
<a class="waves-effect" href="{{ url_for('main.news') }}"><i class="material-icons">email</i>News</a>

View File

@ -1,4 +1,4 @@
<h3 class="manual-chapter-title">Introduction</h3>
<h2 class="hide">Introduction</h2>
<p>
nopaque is a web-based digital working environment. It implements a
workflow based on the research process in the humanities and supports its

View File

@ -1,8 +1,10 @@
<h3 class="manual-chapter-title">Registration and Log in</h3>
<h2>Registration and Log in</h2>
<div class="row">
<div class="col s12 m4">
<br class="hide-on-small-only">
<img alt="Registration and Log in" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/registration-and-log-in.png') }}">
</div>
<div class="col s12 m8">
<p>
Before you can start using the web platform, you need to create a user

View File

@ -1,8 +1,10 @@
<h3 class="manual-chapter-title">Dashboard</h3>
<h2>Dashboard</h2>
<div class="row">
<div class="col s12 m4">
<br class="hide-on-small-only">
<img alt="Dashboard" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/dashboard.png') }}">
</div>
<div class="col s12 m8">
<p>
The <a href="{{ url_for('main.dashboard') }}">dashboard</a> provides a central overview of all resources assigned to the
@ -12,7 +14,9 @@
the search field displayed above them.
</p>
</div>
<div class="col s12">&nbsp;</div>
</div>
<div class="row">
<div class="col s12 m6">
<div class="card">
<div class="card-content">
@ -28,6 +32,7 @@
</div>
</div>
</div>
<div class="col s12 m6">
<div class="card">
<div class="card-content">

View File

@ -0,0 +1,106 @@
<h2>Services</h2>
<div class="row">
<div class="col s12 m4">
<br class="hide-on-small-only">
<img alt="Services" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/services.png') }}">
</div>
<div class="col s12 m8">
<p>
nopaque was designed from the ground up to be modular. This modularity
means that the offered workflow provides variable entry and exit points,
so that different starting points and goals can be flexibly addressed.
Each of these modules are implemented in a self-contained service, each of
which represents a step in the workflow. The services are coordinated in
such a way that they can be used consecutively. The order can either be
taken from the listing of the services in the left sidebar or from the
roadmap (accessible via the pink compass in the upper right corner). All
services are versioned, so the data generated with nopaque is always
reproducible.
</p>
</div>
</div>
<h3>File Setup</h3>
<p>
The <a href="{{ url_for('services.file_setup_pipeline') }}">File Setup Service</a> bundles image data, such as scans and photos,
together in a handy PDF file. To use this service, use the job form to
select the images to be bundled, choose the desired service version, and
specify a title and description. Please note that the service sorts the
images into the resulting PDF file based on the file names. So naming the
images correctly is of great importance. It has proven to be a good practice
to name the files according to the following scheme:
page-01.png, page-02.jpg, page-03.tiff, etc. In general, you can assume
that the images will be sorted in the order in which the file explorer of
your operating system lists them when you view the files in a folder
sorted in ascending order by file name.
</p>
<h3>Optical Character Recognition (OCR)</h3>
<p>Coming soon...</p>
<h3>Handwritten Text Recognition (HTR)</h3>
<p>Coming soon...</p>
<h3>Natural Language Processing (NLP)</h3>
<p>Coming soon...</p>
<h3>Corpus Analysis</h3>
<p>
With the corpus analysis service, it is possible to create a text corpus
and then explore it in an analysis session. The analysis session is realized
on the server side by the Open Corpus Workbench software, which enables
efficient and complex searches with the help of the CQP Query Language.
</p>
<div class="row">
<div class="col s12 m4">
<br class="hide-on-small-only">
<img alt="Create a Corpus" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/create-a-corpus.png') }}">
</div>
<div class="col s12 m8">
<p>
To <a href="{{ url_for('corpora.create_corpus') }}">create a corpus</a>, you
can use the "New Corpus" button, which can be found on both the Corpus
Analysis Service page and the Dashboard below the corpus list. Fill in the input
mask to Create a corpus. After you have completed the input mask, you will
be automatically taken to the corpus overview page (which can be called up
again via the corpus lists) of your new and accordingly still empty corpus.
</p>
</div>
</div>
<div class="row">
<div class="col s12 m4">
<br class="hide-on-small-only">
<img alt="Create a Corpus" class="materialboxed responsive-img" src="{{ url_for('static', filename='images/manual/add-corpus-file.png') }}">
</div>
<div class="col s12 m8">
<p>
Now you can add texts in vrt format (results of the NLP service) to your new
corpus. To do this, use the "Add Corpus File" button and fill in the form
that appears. You will get the possibility to add metadata to each text.
After you have added all the desired texts to the corpus, the corpus must be
prepared for the analysis, this process can be initiated by clicking on the
"Build" button. On the corpus overview page you can always see information
about the current status of the corpus in the upper right corner. After the
build process the status should be "built".
</p>
</div>
</div>
<h4>Analyze a corpus</h4>
<p>
After you have created and built a corpus, it can be analyzed. To do this,
use the button labeled Analyze. The corpus analysis currently offers two
modules, the Reader and the Concordance module. The reader module can be
used to read your tokenized corpus in different ways. You can select a token
representation option, it determines the property of a token to be shown.
You can for example read your text completly lemmatized. You can also change
the way of how a token is displayed, by using the text style switch. The
concordance module offers some more options regarding the context size of
search results. If the context does not provide enough information you can
hop into the reader module by using the magnifier icon next to a match.
</p>

View File

@ -1,4 +1,4 @@
<h3 class="manual-chapter-title">CQP Query Language</h3>
<h2>CQP Query Language</h2>
<p>Within the Corpus Query Language, a distinction is made between two types of annotations: positional attributes and structural attributes. Positional attributes refer to a token, e.g. the word "book" is assigned the part-of-speech tag "NN", the lemma "book" and the simplified part-of-speech tag "NOUN" within the token structure. Structural attributes refer to text structure-giving elements such as sentence and entity markup. For example, the markup of a sentence is represented in the background as follows:</p>
<pre>
<code>
@ -13,7 +13,7 @@
</code>
</pre>
<h4>Positional attributes</h4>
<h3>Positional attributes</h3>
<p>Before you can start searching for positional attributes (also called tokens), it is necessary to know what properties they contain.</p>
<ol>
<li><span class="blue-text"><b>word</b></span>: The string as it is also found in the original text</li>
@ -33,7 +33,7 @@
</li>
</ol>
<h5>Searching for positional attributes</h5>
<h4>Searching for positional attributes</h4>
<div>
<p>
<b>Token with no condition on any property (also called <span class="blue-text">wildcard token</span>)</b><br>
@ -118,7 +118,7 @@
<pre style="margin-top: 0;" ><code> ^ ^ the braces indicate the start and end of an option group</code></pre>
</div>
<h4>Structural attributes</h4>
<h3>Structural attributes</h3>
<p>nopaque provides several structural attributes for query. A distinction is made between attributes with and without value.</p>
<ol>
<li><span class="green-text"><b>s</b></span>: Annotates a sentence</li>
@ -153,7 +153,7 @@
</li>
</ol>
<h5>Searching for structural attributes</h5>
<h4>Searching for structural attributes</h4>
<pre><code>&lt;ent&gt; [] &lt;/ent&gt;; A one token long entity of any type</code></pre>
<pre><code>&lt;ent_type="PERSON"&gt; [] &lt;/ent_type&gt;; A one token long entity of type PERSON</code></pre>
<pre><code>&lt;ent_type="PERSON"&gt; []* &lt;/ent_type&gt;; Entity of any length of type PERSON</code></pre>

View File

@ -0,0 +1,251 @@
<h2>Query Builder</h2>
<h3>Overview</h3>
<p>
The query builder can be accessed via "My Corpora" or "Corpus Analysis" in the sidebar options.
Select the desired corpus and click on the "Analyze" and then "Concordance"
buttons to open the query builder.
</p>
<p>
The query builder uses the Corpus Query Language (CQL) to help you make a query for analyzing your texts.
In this way, it is possible to filter out various types of text parameters, for
example, a specific word, a lemma, or you can set part-of-speech
tags (pos) that indicate the type of word you are looking for (a noun, an
adjective, etc.). In addition, you can also search for structural attributes,
or specify your query for a token (word, lemma, pos) via entity typing. And of
course, the different text parameters can be combined.
</p>
<p>
Tokens and structural attributes can be added by clicking on the "+" button
(the "input marker") in the input field or the labeled buttons below it. Elements
added are shown as chips. These can be reorganized using drag and drop. The input
marker can also be moved in this way. Its position shows where new elements will be added.<br>
A "translation" of your query into Corpus Query Language (CQL) is shown below.
</p>
<p>Advanced users can make direct use of the Corpus Query Language (CQL) by switching to "expert mode" via the toggle button.</p>
<p>The entire input field can be cleared using the red trash icon on the right.</p>
<div style="border: 1px solid; padding-left: 20px; margin-right: 400px; margin-bottom: 40px;">
<h5>Content</h5>
<ol style="list-style-type:disc">
<li><a href="#add-new-token-tutorial">Add a new token to your query</a></li>
<li><a href="#edit-options-tutorial">Options for editing your query</a></li>
<li><a href="#add-structural-attribute-tutorial">Add structural attributes to your query</a></li>
<li><a href="#general-options-query-builder">General options</a></li>
</ol>
</div>
{# Add Token Tutorial #}
<div>
<hr>
<br>
<h3 id="add-new-token-tutorial">Add new token to your Query</h3>
<p>
If you are only looking for a specific token, you can click on the left
button and select the type of token you are looking for from the drop-down menu.
By default "Word" is selected.
</p>
<br>
<h4>Word and Lemma</h4>
<p>
If you want to search for a specific word or lemma and the respective
category is selected in the drop-down menu, you can type in the word or lemma
of your choice in the input field. You can confirm your entry by clicking the
Submit button on the right. You can also use the options below to modify your
token request before pressing the submit button. These options are explained
further here.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/word_lemma.gif') }}" alt="word and lemma explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>English pos, german pos or simple_pos</h4>
<p>
You can choose between the options "english pos", "german pos" and
"simple_pos" to search for different parts-of-speech. You can find an overview
of all tags under the "Tagsets" tab.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/pos.gif') }}" alt="part-of-speech-tag explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Empty Token</h4>
<p>
Here you can search for a token with unspecified attributes (also called wildcard token). This
selection should never stand alone and should always be extended with an incidence modifier or stand in a
larger query, because otherwise all possible tokens would be searched for and
the program would crash.
</p>
<br>
</div>
{# Edit Options Tutorial #}
<div>
<hr>
<br>
<h3 id="edit-options-tutorial">Options for editing your query</h3>
<p>
You have the possibility to extend or specify the token you are searching for with
certain factors. For this the query builder offers some fixed options. You can
find more information about the options in the Corpus Query Language Tutorial.
</p>
<br>
<h4>Wildcard Character</h4>
<p>A wildcard character replaces any character and is represented in the form of a dot. </p>
<br>
<h4>Option Group</h4>
<p>
With an option group you can search for different variants of a token. The
variants are not limited, so you can manually enter more options in the same
format. "Option1" and "option2" must be replaced accordingly.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/option_group.gif') }}" alt="option group explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Incidence Modifiers</h4>
<p>
With the Incidence Modifiers you can determine the occurrence of single
tokens. For example you can use "?" to indicate that the token occurs either
not at all or once:<br>
[word = "is"] [word="it"] [word="your"] [word="litte"]? [word = "dog"]<br>
Here the word "little" should occur either once or not at all. With
[word="dogs?"] the search is for "dog "or "dogs".
</p>
<br>
<h4>Ignore Case</h4>
<p>
With the check mark at Ignore Case the upper and lower case is ignored.
This is marked with a "%c". By default (if not checked) it is case sensitive.
</p>
<br>
<h4>"or" & "and"</h4>
<p>
"Or" ( | ) and "and" ( & ) are conditions you can put on a token. With "or"
one of the two conditions must be fulfilled, with "and" both conditions must be
fulfilled. For example, the word must be called "will" AND be a verb, only then
it will be displayed. Note that "and" is not responsible for lining up tokens in
this case. For this you can simply string them together:<br>
[word="I"] [word="will" & simple_pos="VERB"] [word="go"].
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/or_and.gif') }}" alt="OR/AND explanation" width="100%;" style="margin-bottom:20px;">
<p>
Tokens that have already been added can also be modified by clicking on the corresponding
pen icon. Click on the "ignore case" box, for example, and the query builder will
not differentiate between upper- and lower- case letters for that respective token.
New conditions added apply to the most recent token information.
</p>
<br>
</div>
{# Add Structural Attributes Tutorial #}
<div>
<hr>
<br>
<h3 id="add-structural-attribute-tutorial">Add structural attributes to your query</h3>
<p>
You can use structural attributes to search specifically for structures in
the text or to further narrow down your previous search query.
</p>
<br>
<h4>Sentence</h4>
<p>
With "Sentence" (&lt;s&gt;&lt;/s&gt;) you can search for sentences within your text.
This search can of course be specified if you search for particular tokens or
entities between the sentence tags (&lt;s&gt;&lt;/s&gt;). For example, you can search for
sentences that contain only a noun, verb, and adjective. <br>
Click on Sentence to add the sentence chips: <span class="chip" style="background-color:#FD9720;">Sentence Start</span>
and <span class="chip" style="background-color:#FD9720;">Sentence End</span>.
These mark where the sentence starts and ends. Use drag-and-drop to place them accordingly. When
the Sentence attribute is added, the input marker will automatically be
moved between the sentence chips. Use drag-and-drop as needed to continue your query
at a different position.
</p>
<br>
<h4>Entities</h4>
<p>
With entities, i.e. units of meaning, you can search for text sections that
contain more specific information, for example, persons, dates, or events. The
codes for these categories can be selected using the drop-down menus. You can find an explanation of
these abbreviations under the tab "Tagsets".<br>
You can also search for unspecified entities by selecting "Add entity of any type".
</p>
<p>
Click on the Entity button to add the entity chips <span class="chip" style="background-color:#A6E22D;">Entity Type=</span>
and <span class="chip" style="background-color:#A6E22D;">Entity End</span>.
</p>
<p>
The entity type can be changed by clicking on the pen symbol on the chip. When
the Entity attribute is added, the input marker will automatically be
moved between the entity chips. Use drag-and-drop as needed to continue your query
at a different position.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/entity.gif') }}" alt="entity explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Meta Data (currently unavailable)</h4>
<p>
The meta data function is being worked on and cannot currently be used!<br>
With the meta data you can annotate your text and add specific conditions.
You can select a category on the left and enter your desired value on the right.
The selected metadata will apply to your entire request and will be added at the end.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/meta_data.gif') }}" alt="meta data explanation" width="100%;" style="margin-bottom:20px;">
<br>
</div>
{# General Options Tutorial #}
<div>
<hr>
<br>
<h3 id="general-options-query-builder">General Options of the query builder</h3>
<p>You have several options to edit your query after adding it to the preview.</p>
<br>
<h4>Editing the elements</h4>
<p>You can edit your query chips by clicking on the pen icon.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/editing_chips.gif') }}" alt="editing explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Deleting the elements</h4>
<p>You can delete the added elements from the query by clicking the X behind the respective content.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/delete.gif') }}" alt="delete explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Move the elements of your query</h4>
<p>You can drag and drop elements to customize your query.</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/drag_and_drop.gif') }}" alt="Drag&Drop explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Setting an incidence modifier</h4>
<p>
With the incidence modifier option, you can specify the amount of
times a token should appear in your query. This is particularly relevant for empty
tokens (tokens with unspecified attributes). Click on a token (blue chip) and
select the desired option from the list to add an incidence modifier. To
close the list without adding anything, click on the token again.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/incidence_modifier.gif') }}" alt="incidence modifier explanation" width="100%;" style="margin-bottom:20px;">
<br>
<h4>Switching between Query Builder and Expert mode</h4>
<p>
To work with the plain Corpus Query Language instead of using the Query Builder, click on the "expert mode"
switch. Your query can be entered into the input field. All elements previously added will be carried over
into expert mode. Click on the switch again to switch back to the Query Builder if desired. All recognized elements
will be parsed into chips; those not recognized will be deleted from the query.
</p>
<img src="{{ url_for('static', filename='images/manual/query_builder/expert_mode.gif') }}" alt="expert mode explanation" width="100%;" style="margin-bottom:20px;">
</div>

View File

@ -0,0 +1,184 @@
<h2>Tagsets</h2>
<ul class="collapsible">
<li class="active" id="simple_pos-tagset">
<div class="collapsible-header">simple_pos</div>
<div class="collapsible-body">
<ul>
<li>ADJ: adjective</li>
<li>ADP: adposition</li>
<li>ADV: adverb</li>
<li>AUX: auxiliary verb</li>
<li>CONJ: coordinating conjunction</li>
<li>DET: determiner</li>
<li>INTJ: interjection</li>
<li>NOUN: noun</li>
<li>NUM: numeral</li>
<li>PART: particle</li>
<li>PRON: pronoun</li>
<li>PROPN: proper noun</li>
<li>PUNCT: punctuation</li>
<li>SCONJ: subordinating conjunction</li>
<li>SYM: symbol</li>
<li>VERB: verb</li>
<li>X: other</li>
</ul>
</div>
</li>
<li id="english-ent_type-tagset">
<div class="collapsible-header">English ent_type</div>
<div class="collapsible-body">
<ul>
<li>CARDINAL: Numerals that do not fall under another type</li>
<li>DATE: Absolute or relative dates or periods</li>
<li>EVENT: Named hurricanes, battles, wars, sports events, etc.</li>
<li>FAC: Buildings, airports, highways, bridges, etc.</li>
<li>GPE: Countries, cities, states</li>
<li>LANGUAGE: Any named language</li>
<li>LAW: Named documents made into laws.</li>
<li>LOC: Non-GPE locations, mountain ranges, bodies of water</li>
<li>MONEY: Monetary values, including unit</li>
<li>NORP: Nationalities or religious or political groups</li>
<li>ORDINAL: "first" "second" etc.</li>
<li>ORG: Companies, agencies, institutions, etc.</li>
<li>PERCENT: Percentage, including "%"</li>
<li>PERSON: People, including fictional</li>
<li>PRODUCT: Objects, vehicles, foods, etc. (not services)</li>
<li>QUANTITY: Measurements, as of weight or distance</li>
<li>TIME: Times smaller than a day</li>
<li>WORK_OF_ART: Titles of books, songs, etc.</li>
</ul>
</div>
</li>
<li id="english-pos-tagset">
<div class="collapsible-header">English pos</div>
<div class="collapsible-body">
<ul>
<li>ADD: email</li>
<li>AFX: affix</li>
<li>CC: conjunction, coordinating</li>
<li>CD: cardinal number</li>
<li>DT: determiner</li>
<li>EX: existential there</li>
<li>FW: foreign word</li>
<li>HYPH: punctuation mark, hyphen</li>
<li>IN: conjunction, subordinating or preposition</li>
<li>JJ: adjective</li>
<li>JJR: adjective, comparative</li>
<li>JJS: adjective, superlative</li>
<li>LS: list item marker</li>
<li>MD: verb, modal auxiliary</li>
<li>NFP: superfluous punctuation</li>
<li>NN: noun, singular or mass</li>
<li>NNP: noun, proper singular</li>
<li>NNPS: noun, proper plural</li>
<li>NNS: noun, plural</li>
<li>PDT: predeterminer</li>
<li>POS: possessive ending</li>
<li>PRP: pronoun, personal</li>
<li>PRP$: pronoun, possessive RB: adverb</li>
<li>RBR: adverb, comparative</li>
<li>RBS: adverb, superlative</li>
<li>RP: adverb, particle</li>
<li>SYM: symbol</li>
<li>TO: infinitival "to"</li>
<li>UH: interjection</li>
<li>VB: verb, base form</li>
<li>VBD: verb, past tense</li>
<li>VBG: verb, gerund or present participle</li>
<li>VBN: verb, past participle</li>
<li>VBP: verb, non-3rd person singular present</li>
<li>VBZ: verb, 3rd person singular present</li>
<li>WDT: wh-determiner</li>
<li>WP: wh-pronoun, personal</li>
<li>WP$: wh-pronoun, possessive</li>
<li>WRB: wh-adverb</li>
<li>XX: unknown</li>
<li>``: opening quotation mark</li>
<li>$: symbol, currency</li>
<li>"": closing quotation mark</li>
<li>: punctuation mark, comma</li>
<li>-LRB-: left round bracket</li>
<li>-RRB-: right round bracket</li>
<li>.: punctuation mark, sentence closer</li>
<li>:: punctuation mark, colon or ellipsis</li>
</ul>
</div>
</li>
<li id="german-ent_type-tagset">
<div class="collapsible-header">German ent_type</div>
<div class="collapsible-body">
<ul>
<li>LOC: Non-GPE locations, mountain ranges, bodies of water</li>
<li>MISC: Miscellaneous entities, e.g. events, nationalities, products or works of art</li>
<li>ORG: Companies, agencies, institutions, etc.</li>
<li>PER: Named person or family.</li>
</ul>
</div>
</li>
<li id="german-pos-tagset">
<div class="collapsible-header">German pos</div>
<div class="collapsible-body">
<ul>
<li>ADJA: adjective, attributive</li>
<li>ADJD: adjective, adverbial or predicative</li>
<li>ADV: adverb</li>
<li>APPO: postposition</li>
<li>APPR: preposition; circumposition left</li>
<li>APPRART: preposition with article</li>
<li>APZR: circumposition right</li>
<li>ART: definite or indefinite article</li>
<li>CARD: cardinal number</li>
<li>FM: foreign language material</li>
<li>ITJ: interjection</li>
<li>KOKOM: comparative conjunction</li>
<li>KON: coordinate conjunction</li>
<li>KOUI: subordinate conjunction with \zu\ and infinitive</li>
<li>KOUS: subordinate conjunction with sentence</li>
<li>NE: proper noun</li>
<li>NN: noun, singular or mass</li>
<li>NNE: proper noun</li>
<li>PDAT: attributive demonstrative pronoun</li>
<li>PDS: substituting demonstrative pronoun</li>
<li>PIAT: attributive indefinite pronoun without determiner</li>
<li>PIS: substituting indefinite pronoun</li>
<li>PPER: non-reflexive personal pronoun</li>
<li>PPOSAT: attributive possessive pronoun</li>
<li>PPOSS: substituting possessive pronoun</li>
<li>PRELAT: attributive relative pronoun</li>
<li>PRELS: substituting relative pronoun</li>
<li>PRF: reflexive personal pronoun</li>
<li>PROAV: pronominal adverb</li>
<li>PTKA: particle with adjective or adverb</li>
<li>PTKANT: answer particle</li>
<li>PTKNEG: negative particle</li>
<li>PTKVZ: separable verbal particle</li>
<li>PTKZU: "zu" before infinitive</li>
<li>PWAT: attributive interrogative pronoun</li>
<li>PWAV: adverbial interrogative or relative pronoun</li>
<li>PWS: substituting interrogative pronoun</li>
<li>TRUNC: word remnant</li>
<li>VAFIN: finite verb, auxiliary</li>
<li>VAIMP: imperative, auxiliary</li>
<li>VAINF: infinitive, auxiliary</li>
<li>VAPP: perfect participle, auxiliary</li>
<li>VMFIN: finite verb, modal</li>
<li>VMINF: infinitive, modal</li>
<li>VMPP: perfect participle, modal</li>
<li>VVFIN: finite verb, full</li>
<li>VVIMP: imperative, full</li>
<li>VVINF: infinitive, full</li>
<li>VVIZU: infinitive with "zu" full</li>
<li>VVPP: perfect participle, full</li>
<li>XY: non-word containing non-letter</li>
<li>$(: other sentence-internal punctuation mark</li>
<li>$,: comma</li>
<li>$.: sentence-final punctuation mark</li>
</ul>
</div>
</li>
</ul>

View File

@ -0,0 +1,53 @@
{% extends "base.html.j2" %}
{% block page_content %}
<div class="container">
<div class="row">
<div class="col s12">
<h1 id="title">{{ title }}</h1>
</div>
<div class="col s12 m8">
<div class="section scrollspy pt-0" id="manual-introduction">
{% include "main/_manual/01_introduction.html.j2" %}
</div>
<div class="section scrollspy" id="manual-registration-and-log-in">
{% include "main/_manual/02_registration_and_log_in.html.j2" %}
</div>
<div class="section scrollspy" id="manual-dashboard">
{% include "main/_manual/03_dashboard.html.j2" %}
</div>
<div class="section scrollspy" id="manual-services">
{% include "main/_manual/06_services.html.j2" %}
</div>
<div class="section scrollspy" id="manual-cqp-query-language">
{% include "main/_manual/08_cqp_query_language.html.j2" %}
</div>
<div class="section scrollspy" id="manual-query-builder">
{% include "main/_manual/09_query_builder.html.j2" %}
</div>
<div class="section scrollspy" id="manual-tagsets">
{% include "main/_manual/10_tagsets.html.j2" %}
</div>
</div>
<div class="hide-on-small-only col m4 l3 offset-l1">
<ul class="section table-of-contents fixed">
<li><a href="#manual-introduction">Introduction</a></li>
<li><a href="#manual-registration-and-log-in">Registration and Log in</a></li>
<li><a href="#manual-dashboard">Dashboard</a></li>
<li><a href="#manual-services">Services</a></li>
<li><a href="#manual-cqp-query-language">CQP Query Language</a></li>
<li><a href="#manual-query-builder">Query Builder</a></li>
<li><a href="#manual-tagsets">Tagsets</a></li>
</ul>
</div>
</div>
</div>
{% endblock page_content %}