Project

General

Profile

FCS » History » Version 1

Redmine Admin, 01/04/2017 05:29 PM

1 1 Redmine Admin
h1. FCS
2
3
h2. Endpoints
4
5
Currently there are the following three endpoints at the production environment:
6
7
* *http://lindat.mff.cuni.cz/services/fcs-bonito* - endpoint for the Bonito corpus manager in Brno (MUNI)
8
* *http://lindat.mff.cuni.cz/services/fcs-kontext* - endpoint for the LINDAT KonText corpus manager (ÚFAL)
9
* *http://lindat.mff.cuni.cz/services/fcs* -  alias for fcs-kontext
10
11
These endpoints are defined on the server lindat.mff.cuni.cz in /etc/apache2/ufal-proxies.conf
12
fcs-kontext  endpoint forwards requests to kontext server on quest.
13
14
The testing environment has one endpoint, which is
15
16
* *http://ufal-point-dev.ms.mff.cuni.cz/services/fcs*
17
18
This endpoint forwards requests to kontext-dev server on quest.
19
20
h2. Introduction 
21
22
h3. FCS
23
24
FCS (Federated Content Search) is a protocol built upon SRU/CQL (Search/Retrieve via URL / Contextual Query Language) protocol. See resources below.
25
FCS is a unified interface that should enable to build metasearch engines and retrieve and present data in unified format.
26
27
h3. Aggregator
28
29
Aggregator at the University od Tübingen is an example of metasearch engine built upon FCS protocol.
30
31
Aggregator has a web user interface here: http://weblicht.sfs.uni-tuebingen.de/Aggregator/
32
33
At the moment, only the @fcs-bonito@ endpoint is being used.
34
35
h2. Implementation
36
37
h3. Interface
38
39
FCS endpoint is implemented in *KonText* source code as an single action named *fcs* in "lib/actions.py":https://redmine.ms.mff.cuni.cz/projects/lindat-services-kontext/repository/entry/lib/actions.py?rev=lindat-release-0.5.x. 
40
This action is supported by XML rendering template in "templates/fcs.py":https://redmine.ms.mff.cuni.cz/projects/lindat-services-kontext/repository/entry/templates/fcs.tmpl?rev=lindat-release-0.5.x and XHTML rendering template in "templates/fcs2html.tmpl":https://redmine.ms.mff.cuni.cz/projects/lindat-services-kontext/repository/entry/templates/fcs2html.tmpl?rev=lindat-release-0.5.x.
41
42
FCS action handles all three possible operations:
43
44
* *scan* - lists the resources that can be searched by the endpoint
45
* *searchRetrieve* - returns the actual result of a search query as a set of hits (or KWICs - Key-Words-In-Context)
46
* *explain* - returns document that describes server's capabilities but is not implemented yet 
47
48
The code in @lib/actions.py@ implements only the interface layer for the operations above. I.e. it checks the correctness of parameters and throws appropriate exceptions.
49
50
h3. Operations
51
52
The actual operations are performed by calling the following methods in @lib/conclib.py@
53
54
* def *fcs_search*(corpus, fcs_query, max_rec, start)
55
* def *fcs_scan*(corpus, scan_query, max_ter, start)
56
57
Where corpus is actually a tuple of corpus handle and corpus name.
58
59
The methods above in turn call the lower level manatee libraries.
60
61
h3. Templates
62
63
Templates are implemented in Cheetah (see http://www.cheetahtemplate.org/learn.html), which is python powered templating engine. 
64
Any changes to templates requires recompilation of templates which can be performed by running grunt from the top level directory:
65
66
<pre>
67
./node_modules/.bin/grunt
68
</pre>
69
70
71
h3. Additional information
72
73
There is another piece of code in @lib/conccgi.py@
74
75
<pre>
76
def _requires_corpus_access(self, action):
77
    return action not in ('login', 'loginx', 'logoutx', 'fcs', 'fcs2html', 'corplist')
78
</pre>
79
80
which basically tells what actions are callable without specifying corpus and verifying access privileges to that corpus.
81
82
h2. Resources
83
84
* http://www.clarin.eu/content/federated-content-search-clarin-fcs - Overview
85
* https://trac.clarin.eu/wiki/FCS - Federated Content Search wiki, specifications and drafts
86
* http://www.clarin.eu/sites/default/files/Schonefeld_FCS_Specification_and_Software_Components_0.pdf - FCS presentation
87
88
* http://www.loc.gov/standards/sru/cql/spec.html - CQL specification
89
* http://www.loc.gov/standards/sru/sru-1-2.html - SRU 1.2 (current version 2.0) specification
90
91
* http://weblicht.sfs.uni-tuebingen.de/Aggregator/ - Aggregator (FCS metasearch engine)
92
93
* http://clarin.ids-mannheim.de/srutest/app/ - CLARIN-FCS endpoint conformance tester can be used to check compliance with the specification