Project

General

Profile

« Previous | Next » 

Revision 6843

Added by Matt Jones over 12 years ago

Partial conversion of the accessing and submitting metadata section to RST.
More coming later.

View differences:

submitting.rst
1 1
Accessing and Submitting Metadata and Data
2 2
==========================================
3 3

  
4
Under construction!
4
.. contents::
5 5

  
6
Heading 1
7
------------
6
The Metacat repository can be accessed and updated using a number of tools, 
7
including: 
8 8

  
9
Heading 2
9
* the Registry, Metacat's optional Web interface
10
* user-created HTML forms 
11
* Metacat's EarthGrid API
12
* existing clients, such as KNB's Morpho application, designed to help 
13
  scientists create, edit, and manage metadata
14
* user-created desktop clients that take advantage of Metacat's Java API.
15

  
16
In this section, we will look at how to take advantage of these tools to 
17
customize Metacat for your user-base.
18

  
19
A Brief Note about How Information is Stored
20
--------------------------------------------
21
Metacat stores XML files as a hierarchy of nodes, where each node is stored as 
22
records in database tables. Because many XML data schemas are broken up into 
23
multiple DTDs requiring multiple XML files that are related but stored 
24
separately in the system, the system uses "packages" to link related but 
25
separate documents. Packaged documents contain information that shows how they 
26
are related to eachother, essentially stating that file A has a relationship 
27
to file B, etc. A package file also allows users to link metadata files to the 
28
data files they describe. For more information about the structure of data 
29
packages and how XML documents and data are stored in Metacat, please see the 
30
developer's documentation.
31

  
32
Using the Registry
33
------------------
34
Metacat's optional Registry provides a simple Web-based interface for creating, 
35
editing, and submitting metadata to the Metacat repository (Figure 4.1). The 
36
interface includes help documentation, and can be customized using Metacat's 
37
configuration settings. The Registry also includes an administrative interface 
38
for managing LDAP user accounts, which is useful if you are using LDAP as your 
39
Metacat authentication system. Note that you must be running your own LDAP 
40
server if you wish to use the LDAP Web interface. If you do not have your own 
41
LDAP server, you can create and manage new accounts on the KNB website 
42
(http://knb.ecoinformatics.org/). Please note that at this time, the Registry 
43
interface has only been tested on Linux systems.
44

  
45
.. figure:: images/screenshots/image033.jpg
46
   :align: center
47

  
48
   An example installation of the Register's web interface. Customize the 
49
   displayed and required modules with the Skins Configuration settings.
50
   
51
You can customize which modules (e.g., "Name of Submitter" or "Temporal 
52
Coverage of Data") are displayed and which are required using the Skins 
53
Configuration settings
54

  
55
Installing the Registry
56
~~~~~~~~~~~~~~~~~~~~~~~
57
In order to install and run the Registry, you must have Metacat installed and 
58
Tomcat must be running behind an Apache Web server (see previous sections for 
59
information about installing and configuring Apache to run with Tomcat).
60

  
61
To install and run the Registry:
62

  
63
1. Build the Metacat Perl client library:
64

  
65
  ::
66

  
67
    cd $METACAT/src/perl/Metacat
68
    perl Makefile.PL
69
    sudo make
70
    sudo make install
71

  
72
.. sidebar:: Instructions for Red Hat (Alternate Step 2)
73

  
74
  * Install the libraries
75

  
76
    ::
77
    
78
      sudo yum install gcc libxml2-devel libxslt-devel ant –y
79

  
80
  * Install CPAN, which allows us to install the Perl dependencies for the 
81
    registry and account management parts of Metacat. If asked to manually 
82
    configure cpan, type 'no' and CPAN will be setup with its default values.
83

  
84
    ::
85
    
86
      sudo yum install perl-CPAN
87
      sudo cpan
88

  
89
  * You should now see a prompt which looks like:
90

  
91
    ::
92
    
93
      cpan>
94

  
95
  * The rest of the commands assume you're inside of CPAN. Let's get the most 
96
    recent version of the CPAN software. Just press return after any prompts 
97
    you receive during this process.
98
    
99
    ::
100
    
101
      install Bundle::CPAN
102
      reload cpan
103

  
104
  * Install the required modules. Here we're installing an old LibXSLT, as the 
105
    current one requires a newer libxslt than is available on Redhat 4 & 5. 
106
    Again, just answer 'yes' to any questions.
107

  
108
    ::
109

  
110
      install AutoLoader
111
      install CGI
112
      install CGI::SEssion
113
      install LWP::UserAgent
114
      install Net::LDAP
115
      install Template 
116
      install URI
117
      install MSERGEANT/XML-LibXSLT-1.58.tar.gz
118

  
119
2. Install the required system libraries using Ubuntu/Debian (instructions 
120
   Red Hat in sidebar)
121
         
122
  * Install the libraries
123

  
124
    ::
125

  
126
      sudo apt-get install ant libappconfig-perl libxml-libxml-perl libxml-libxslt-perl libtemplate-perl libcgi-session-perl libdigest-sha1-perl libnet-ldap-perl libterm-readkey-perl libxml-dom-perl libsoap-lite-perl -y
127

  
128
  * Install two more package using cpan 
129

  
130
    ::
131
    
132
      sudo cpan -i Config::Properties
133
      sudo cpan -i Scalar::Util
134

  
135

  
136
3. Double-check that Metacat's temporary folder, application.tempDir, is 
137
   writable by the apache user, usually www-data or apache. 
138

  
139
4. Make sure that the following scripts (found in ``<tomcat-home>/webapps/knb/cgi-bin``) 
140
   are executable: register-dataset.cgi and ldapweb.cgi.
141

  
142
  ::
143
  
144
    sudo chmod +x <tomcat-home>/webapps/knb/cgi-bin/*.cgi
145

  
146
5. Restart Apache.
147

  
148
  ::
149
  
150
    sudo /etc/init.d/apache2 restart
151

  
152
6. Visit the resulting URL: 
153
   http://<your_context_url>/cgi-bin/register-dataset.cgi?cfg=default
154
   Where ``<your_context_url>`` is the URL of the server hosting the Metacat 
155
   followed by the name of the WAR file (i.e., the application context) that 
156
   you installed. For instance, the context URL for the KNB Metacat is: 
157
   http://knb.ecoinformatics.org/knb.
158

  
159
If everything worked correctly, the registry home page will open (see figure).
160

  
161
.. figure:: images/screenshots/image035.jpg
162
   :align: center
163

  
164
   An example of the Registry home page (with the default skin).
165
   
166
Customizing the Registry
167
~~~~~~~~~~~~~~~~~~~~~~~~
168
Before using the registry, you may wish to customize the interface using the 
169
Skins Configuration settings. If you are using the default skin, you must 
170
disable the 'show site list' setting before you can submit the form without 
171
errors. You may also wish to remove (or modify) the list of NCEAS-specific 
172
projects that appear in the default registry. To remove these form fields, 
173
open Metacat's administrative interface (http://<your.context.url>/knb/admin) 
174
and select the Skins Specific Properties Configuration option. On the skins 
175
configuration page, uncheck the boxes beside any form elements that you do not 
176
wish to appear in the registry.
177

  
178
Once you have saved your changes, you must restart Tomcat for them to come 
179
into effect. To restart Tomcat, log in as the user that runs your Tomcat 
180
server (often "tomcat") and type: /etc/init.d/tomcat5.5 restart or an 
181
equivalent command appropriate to your operating system. 
182

  
183
.. figure:: images/screenshots/image037.jpg
184
   :align: center
185

  
186
   Uncheck the box beside any setting to remove it from the Registry form. In 
187
   the example, the "Show Site List" and "Show Work Group" form fields, 
188
   corresponding to the "Station Name" and "NCEAS Project" drop-down lists in 
189
   the registry form, have been removed.
190
   
191
Using HTML Forms (the HTTP Interface)
192
-------------------------------------
193
Metacat's HTTP interface supports Get and Post requests and a variety of actions (Table 4.1) that facilitate information retrieval and storage. HTTP requests can be sent from any client application that communicates using the Web's HTTP protocol. 
194

  
195
* Supported Actions (API)
196
* Logging in
197
* Inserting, Updating, and Deleting XML and Data Documents
198
* Searching Metacat
199
* Paged Query Return
200
* Reading Data and Metadata
201

  
202
Supported Actions
203
~~~~~~~~~~~~~~~~~
204
Metacat supports get and post requests as well as actions for writing, querying, 
205
and reading stored XML. In addition, the HTTP interface includes functions for 
206
validating and transforming XML documents (see table). 
207

  
208
Note that if Replication is enabled, Metacat recognizes several additional 
209
actions, included in Table 4.2. For more information about replication, 
210
please see :doc:`replication`.
211

  
212
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
213
| Action                   | Description and Parameters                                                                                                                                                                                                                                         |
214
+==========================+====================================================================================================================================================================================================================================================================+
215
| delete                   | Delete the specified document from the database. For an                                                                                                                                                                                                            |
216
|                          | example, please see Inserting, Updating, and                                                                                                                                                                                                                       |
217
|                          | Deleting XML and Data Documents.                                                                                                                                                                                                                                   |
218
|                          |                                                                                                                                                                                                                                                                    |
219
|                          | ``docid`` - the docid of the document to delete                                                                                                                                                                                                                    |
220
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
221
| export                   | Export a data package in a zip file.                                                                                                                                                                                                                               |
222
|                          |                                                                                                                                                                                                                                                                    |
223
|                          | ``docid`` - the docid of the document to delete                                                                                                                                                                                                                    |
224
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
225
| getaccesscontrol         | Get the access control list (ACL) for the                                                                                                                                                                                                                          |
226
|                          | specified document.                                                                                                                                                                                                                                                |
227
|                          |                                                                                                                                                                                                                                                                    |
228
|                          | ``docid`` - the docid of the document to delete                                                                                                                                                                                                                    |
229
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
230
| getalldocids             | Retrieve a list of all docids registered with the system.                                                                                                                                                                                                          |
231
|                          |                                                                                                                                                                                                                                                                    |
232
|                          | ``scope`` - a string used to match a range of docids in a SQL LIKE statement                                                                                                                                                                                       |
233
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
234
| getdataguide             | Read a data guide for the specified document type                                                                                                                                                                                                                  |
235
| DEPRECATED               |                                                                                                                                                                                                                                                                    |
236
| Use getdtdschema instead | ``doctype`` - the doctype for which to get the data guide                                                                                                                                                                                                          |
237
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
238
| getdoctypes              | Get all doctypes currently available in the Metacat Catalog System. No parameters.                                                                                                                                                                                 |
239
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
240
| getdtdschema             | Read the DTD or XMLSchema file for the specified doctype.                                                                                                                                                                                                          |
241
|                          |                                                                                                                                                                                                                                                                    |
242
|                          | ``doctype`` - the doctype for which DTD or XMLSchema files to read                                                                                                                                                                                                 |
243
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
244
| getlastdocid             | Get the latest docid with revision number used by user.                                                                                                                                                                                                            |
245
|                          |                                                                                                                                                                                                                                                                    |
246
|                          | ``username`` - the user's log-in name                                                                                                                                                                                                                              |
247
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
248
| getlog                   | Get the latest docid with revision number used by user.                                                                                                                                                                                                            |
249
|                          |                                                                                                                                                                                                                                                                    |
250
|                          | ``ipaddress`` - the internet protocol address for the event                                                                                                                                                                                                        |
251
|                          | ``principal`` - the principal for the event (a username, etc)                                                                                                                                                                                                      |
252
|                          | ``docid`` - the identifier of the document to which the event applies                                                                                                                                                                                              |
253
|                          | ``event`` - the string code for the event                                                                                                                                                                                                                          |
254
|                          | ``start`` - beginning of date-range for query                                                                                                                                                                                                                      |
255
|                          | ``end`` - end of date-range for query                                                                                                                                                                                                                              |
256
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
257
| getloggedinuserinfo      | Get user info for the currently logged in user. No parameters.                                                                                                                                                                                                     |
258
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
259
| getpricipals             | Get all users and groups in the current authentication schema. No parameters.                                                                                                                                                                                      |
260
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
261
| getrevisionanddoctype    | Return the revision and doctype of a document.                                                                                                                                                                                                                     |
262
|                          | The output is String that looks like "rev;doctype"                                                                                                                                                                                                                 |
263
|                          |                                                                                                                                                                                                                                                                    |
264
|                          | ``docid`` - the docid of the document                                                                                                                                                                                                                              |
265
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
266
| getversion               | Get Metacat version.   Return the current version of Metacat as XML. No parameters.                                                                                                                                                                                |
267
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
268
| insert                   | Insert an XML document into the database. For an example, please see                                                                                                                                                                                               |
269
|                          | Inserting, Updating, and Deleting XML and Data Documents                                                                                                                                                                                                           |
270
|                          |                                                                                                                                                                                                                                                                    |
271
|                          | ``docid`` - the user-defined docid to assign to the new XML document                                                                                                                                                                                               |
272
|                          | ``doctext`` - the text of the XML document to insert                                                                                                                                                                                                               |
273
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
274
| insertmultipart          | Insert an XML document using multipart encoding into the database.                                                                                                                                                                                                 |
275
|                          |                                                                                                                                                                                                                                                                    |
276
|                          | ``docid`` - the user-defined docid to assign to the new XML document                                                                                                                                                                                               |
277
|                          | ``doctext`` - the text of the XML document to insert                                                                                                                                                                                                               |
278
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
279
| isregistered             | Check if an individual document exists in either the xml_documents or xml_revisions tables.                                                                                                                                                                        |
280
|                          | For more information about Metacat's database schema, please see the developer documentation.                                                                                                                                                                      |
281
|                          |                                                                                                                                                                                                                                                                    |
282
|                          | ``docid`` - the docid of the document                                                                                                                                                                                                                              |
283
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
284
| login                    | Log the user in. You must log in using this action before you can perform                                                                                                                                                                                          |
285
|                          | many of the actions. For an example of the login action, see Logging In.                                                                                                                                                                                           |
286
|                          |                                                                                                                                                                                                                                                                    |
287
|                          | ``username`` - the user's login name                                                                                                                                                                                                                               |
288
|                          | ``password`` - the user's password                                                                                                                                                                                                                                 |
289
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
290
| logout                   | Log the current user out and destroy the associated session. No parameters.                                                                                                                                                                                        |
291
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
292
| query                    | Perform a free text query. For an example, please see Searching Metacat.                                                                                                                                                                                           |
293
|                          |                                                                                                                                                                                                                                                                    |
294
|                          | ``returndoctype`` - the doctype to use for your Package View. For more information about packages, see http://knb.ecoinformatics.org/software/metacat/packages.html                                                                                                |
295
|                          | ``qformat`` - the format of the returned result set. Possible values are html or xml or the name of your servlet's Metacat skin.                                                                                                                                   |
296
|                          | ``querytitle`` - OPTIONAL - the title of the query                                                                                                                                                                                                                 |
297
|                          | ``doctype`` - OPTIONAL - if doctype is specified, the search is limited only to the specified doctype(s). (e.g., eml://ecoinformatics.org/eml-2.0.1 and/or eml://ecoinformatics.org/eml-2.0.0) If no doctype element is specified, all document types are returned |
298
|                          | ``returnfield`` - a custom field to be returned by any hit document.                                                                                                                                                                                               |
299
|                          | ``operator`` - the Boolean operator to apply to the query. Possible values are: union or intersect                                                                                                                                                                 |
300
|                          | ``searchmode`` - the type of search to be performed. Possible values are: contains, starts-with, ends-with, equals, isnot-equal, greater-than, less-than, greater-than-equals, less-than-equals.                                                                   |
301
|                          | ``anyfield`` - a free-text search variable. The value placed in this parameter will be searched for in any document in any node.                                                                                                                                   |
302
|                          | ``pagesize`` – the number of search results to display on each search results page (e.g., 10). Used with pagestart. See section 4.3.4 for an example.                                                                                                              |
303
|                          | ``pagestart`` – the displayed search results page (e.g, 1). Used with pagesize. See section 4.3.4 for an example.                                                                                                                                                  |
304
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
305
| read                     | Get a document from the database and return it in the specified format. See Searching Metacat for an example.                                                                                                                                                      |
306
|                          |                                                                                                                                                                                                                                                                    |
307
|                          | ``docid`` - the docid of the document to return                                                                                                                                                                                                                    |
308
|                          | ``qformat`` - the format to return the document in. Possible values are: ``html``, ``xml``,or, if your Metacat uses a skin, the name of the skin.                                                                                                                  |
309
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
310
| readinlinedata           | Read inline data only.                                                                                                                                                                                                                                             |
311
|                          |                                                                                                                                                                                                                                                                    |
312
|                          | ``inlinedataid`` - the id of the inline data to read                                                                                                                                                                                                               |
313
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
314
| setaccess                | Change access permissions for a user on a specified document.                                                                                                                                                                                                      |
315
|                          |                                                                                                                                                                                                                                                                    |
316
|                          | ``docid`` - the docid of the document to be modified.                                                                                                                                                                                                              |
317
|                          | ``principal`` - the user or group whose permissions will be modified                                                                                                                                                                                               |
318
|                          | ``permission`` - the permission  to set (read, write, all)                                                                                                                                                                                                         |
319
|                          | ``permType`` - the type of permission to set (allow, deny)                                                                                                                                                                                                         |
320
|                          | ``permOrder`` - the order in which to apply the permission (allowFirst, denyFirst)                                                                                                                                                                                 |
321
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
322
| spatial_query            | Perform a spatial query. These queries may include any of the queries supported by the                                                                                                                                                                             |
323
|                          | WFS / WMS standards. For more information, see Spatial Queries.                                                                                                                                                                                                    |
324
|                          |                                                                                                                                                                                                                                                                    |
325
|                          | ``xmax`` - max x spatial coordinate                                                                                                                                                                                                                                |
326
|                          | ``ymax`` - max y spatial coordinate                                                                                                                                                                                                                                |
327
|                          | ``xmin`` - min x spatial coordinate                                                                                                                                                                                                                                |
328
|                          | ``ymin`` - min y spatial coordinate                                                                                                                                                                                                                                |
329
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
330
| squery                   | Perform a structured query. For an example, please see Searching Metacat.                                                                                                                                                                                          |
331
|                          |                                                                                                                                                                                                                                                                    |
332
|                          | ``query`` - the text of the pathquery document sent to the server                                                                                                                                                                                                  |
333
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
334
| update                   | Overwrite an XML document with a new one and give the new one the same docid but with                                                                                                                                                                              |
335
|                          | the next revision number. For an example, please see Inserting, Updating, and                                                                                                                                                                                      |
336
|                          | Deleting XML and Data Documents.                                                                                                                                                                                                                                   |
337
|                          |                                                                                                                                                                                                                                                                    |
338
|                          | ``docid`` - the docid of the document to update                                                                                                                                                                                                                    |
339
|                          | ``doctext`` - the text with which to update the XML document                                                                                                                                                                                                       |
340
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
341
| upload                   | Upload (insert or update) a data file into Metacat. Data files are stored on Metacat and may be in any                                                                                                                                                             |
342
|                          | format (binary or text), but they are all treated as if they were binary.                                                                                                                                                                                          |
343
|                          |                                                                                                                                                                                                                                                                    |
344
|                          | ``docid`` - the docid of the data file to upload                                                                                                                                                                                                                   |
345
|                          | ``datafile`` - the data file to upload                                                                                                                                                                                                                             |
346
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
347
| validate                 | Validate a specified document against its DTD.                                                                                                                                                                                                                     |
348
|                          |                                                                                                                                                                                                                                                                    |
349
|                          | ``docid`` - the docid of the document to validate                                                                                                                                                                                                                  |
350
|                          | ``valtext`` - the DTD by which to validate this document                                                                                                                                                                                                           |
351
+--------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
352

  
353

  
354
Metacat Replication Parameters
355

  
356
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
357
| Action         | Description and Parameters                                                                                                                                      |
358
+================+=================================================================================================================================================================+
359
| forcereplicate | Force the local server to get the specified document from the remote host.                                                                                      |
360
|                |                                                                                                                                                                 |
361
|                | ``server`` - The server to which this document is being sent                                                                                                    |
362
|                | ``docid`` - The docid of the document to send                                                                                                                   |
363
|                | ``dbaction`` - The action to perform on the document: insert or update (the default)                                                                            |
364
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
365
| getall         | Force the local server to check all known servers for updated documents. No parameters.                                                                         |
366
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
367
| getcatalog     | Send the contents of the xml_catalog table encoded in XML. No parameters.                                                                                       |
368
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
369
| getlock        | Request a lock on the specified document.                                                                                                                       |
370
|                |                                                                                                                                                                 |
371
|                | ``docid`` - the docid of the document                                                                                                                           |
372
|                | ``updaterev`` - the revision number of docid                                                                                                                    |
373
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
374
| gettime        | Return the local time on this server. No parameters.                                                                                                            |
375
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
376
| servercontrol  | Perform the specified replication control on the Replication daemon.                                                                                            |
377
|                |                                                                                                                                                                 |
378
|                | ``add`` - add a new server to the replication list                                                                                                              |
379
|                | ``delete`` - remove a server from the replication list                                                                                                          |
380
|                | ``list`` - list all of the servers currently in the server list                                                                                                 |
381
|                | ``replicate`` - a Boolean flag (1 or 0) which determines if this server should copy files from the newly added server.                                          |
382
|                | ``server`` - the server to add/delete                                                                                                                           |
383
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
384
| read           | Sends docid to the remote host.                                                                                                                                 |
385
|                |                                                                                                                                                                 |
386
|                | ``docid`` - the docid of the document to read                                                                                                                   |
387
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
388
| start          | Start the Replication daemon with a time interval of deltaT.                                                                                                    |
389
|                |                                                                                                                                                                 |
390
|                | ``rate`` - The rate (in seconds) at which you want the replication daemon to check for updated documents. The value cannot be less than 30. The default is 1000 |
391
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
392
| stop           | Stop the Replication daemon. No parameters.                                                                                                                     |
393
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
394
| update         | Send a list of all documents on the local server along with their revision numbers. No parameters.                                                              |
395
+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
396

  
397
Logging In
398
~~~~~~~~~~
399
To log in to Metacat, use the ``login`` action.
400

  
401
The following is an example of a Web form (see figure) that logs a user into 
402
Metact. Example HTML code is included below the screenshot.
403

  
404
.. figure:: images/screenshots/image039.jpg
405
   :align: center
406
   
407
   Logging into Metacat using an HTML form.
408

  
409
::
410

  
411
  <html>
412
  <body>
413
  <form name="loginform" method="post"action="http://yourserver.com/yourcontext/servlet/metacat" 
414
  target="_top" onsubmit="return submitform(this);" id="loginform">
415
    <input type="hidden" name="action" value="login"> <input type=
416
    "hidden" name="username" value=""> <input type="hidden" name=
417
    "qformat" value="xml"> <input type="hidden" name=
418
    "enableediting" value="false">
419

  
420
    <table>
421
      <tr valign="middle">
422
        <td align="left" valign="middle" class="text_plain">
423
        username:</td>
424

  
425
        <td width="173" align="left" class="text_plain" style=
426
        "padding-top: 2px; padding-bottom: 2px;"><input name="uid"
427
        type="text" style="width: 140px;" value=""></td>
428
      </tr>
429

  
430
      <tr valign="middle">
431
        <td height="28" align="left" valign="middle" class=
432
        "text_plain">organization:</td>
433

  
434
        <td align="left" class="text_plain" style=
435
        "padding-top: 2px; padding-bottom: 2px;"><select name=
436
        "organization" style="width:140px;">
437
          <option value=""    selected>&#8212; choose one &#8212;</option>
438
          <option value="NCEAS">NCEAS</option>
439
          <option value="LTER">LTER</option>
440
          <option value="UCNRS">UCNRS</option>
441
          <option value="PISCO">PISCO</option>
442
          <option value="OBFS">OBFS</option>
443
          <option value="OSUBS">OSUBS</option>
444
          <option value="SAEON">SAEON</option>
445
          <option value="SANParks">SANParks</option>
446
          <option value="SDSC">SDSC</option>
447
          <option value="KU">KU</option>
448
          <option value="unaffiliated">unaffiliated</option>
449
        </select></td>
450
      </tr>
451

  
452
      <tr valign="middle">
453
        <td width="85" align="left" valign="middle" class=
454
        "text_plain">password:</td>
455

  
456
        <td colspan="2" align="left" class="text_plain" style=
457
        "padding-top: 2px; padding-bottom: 2px;">
458
          <table width="100%" border="0" cellpadding="0"
459
          cellspacing="0">
460
            <tr>
461
              <td width="150" align="left"><input name="password"
462
              type="password" maxlength="50" style="width:140px;"
463
              value=""></td>
464

  
465
              <td align="center" class="buttonBG_login">
466
              <input type="submit" name="loginAction" value="Login"
467
              class="button_login"></td>
468

  
469
              <td align="left">&nbsp;</td>
470
            </tr>
471
          </table>
472
        </td>
473
      </tr>
474
    </table>
475
  </form>
476
  </body>
477
  </html>
478

  
479
Inserting, Updating, and Deleting XML and Data Documents
480
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
481
Adding, editing, and deleting XML documents in Metacat can be accomplished 
482
using the insert, update, and delete actions, respectively. Before you can 
483
insert, delete, or update documents, you must log in to Metacat using the 
484
login action. See Logging in for an example.
485

  
486
``insert``
487
   Insert a new XML or data document into Metacat. You must specify a document ID.
488
   
489
``update``
490
   Update an existing Metacat document. The original document is archived, 
491
   then overwritten.
492

  
493
``delete``
494
   Archive a document and move the pointer in xml_documents to xml_revisions, 
495
   effectively "deleting" the document from public view, but preserving the 
496
   revision for the revision history.
497

  
498
The following is an example of a Web form (see figure) that can perform all 
499
three tasks. Example HTML code is included in the sidebar.
500

  
501
.. figure:: images/screenshots/image041.jpg
502
   :align: center
503
   
504
   An example of a Web form used to insert, delete, or update XML documents in Metacat.
505

  
506
::
507

  
508
  <html>
509
    <head>
510
    <title>MetaCat</title>
511
    </head>
512
    <body class="emlbody">
513
    <b>MetaCat XML Loader</b>
514
    <p>
515
    Upload, Change, or Delete an XML document using this form.
516
    </p>
517
    <form action="http://yourserver.com/yourcontext/servlet/metacat" method="POST">
518
      <strong>1. Choose an action: </strong>
519
      <input type="radio" name="action" value="insert" checked> Insert
520
      <input type="radio" name="action" value="update"> Update
521
      <input type="radio" name="action" value="delete"> Delete
522
      <input type="submit" value="Process Action">
523
      <br />
524
      <strong>2. Provide a Document ID </strong>
525
      <input type="text" name="docid"> (optional for Insert)
526
         <input type="checkbox" name="public" value="yes" checked><strong>Public Document</strong>
527
      <br />
528
      <strong>3. Provide XML text </strong> (not needed for Delete)<br/>
529
      <textarea name="doctext" cols="65" rows="15"></textarea><br/>
530
      <strong>4. Provide DTD text for upload </strong> (optional; not needed for Delete)
531
      <textarea name="dtdtext" cols="65" rows="15"></textarea>
532
    </form>
533
    </body>
534
  </html>
535

  
536
Searching Metacat
537
~~~~~~~~~~~~~~~~~
538
To search Metacat use the ``query`` or ``squery`` actions. 
539

  
540
``query``:   
541
   Perform a free text query. Specify the returndoctype, qformat, returnfield, 
542
   operator, searchmode, anyfield, and (optionally) a querytitle and doctype. 
543

  
544
``squery``:
545
   Perform a structured query by submitting an XML pathquery document to the 
546
   Metacat server.
547
 
548

  
549
When Metacat receives a query via HTTP (Figure 4.8), the server creates a 
550
"pathquery" document, which is an XML document populated with the specified 
551
search criteria (Figure 4.10). The pathquery document is then translated into 
552
SQL statements that are executed against the data base. Results are translated 
553
into an XML "resultset" document, which can be returned as XML or transformed 
554
into HTML and returned (specify which you would prefer with the returnfield 
555
parameter). You can also opt to submit a pathquery document directly, 
556
using an squery action.
557

  
558
.. figure:: images/screenshots/image043.jpg
559
   :align: center
560
   
561
   Example of a basic search form using a query action. 
562

  
563
::
564

  
565
  <html>
566
  <head>
567
  <title>Search</title>
568
  </head>
569
  <body>
570
  <form method="POST" action="http://panucci.nceas.ucsb.edu/knb/servlet/metacat">
571

  
572
  Search for:
573

  
574
  <input name="action" value="query" type="hidden">
575
  <input name="operator" value="INTERSECT" type="hidden">
576
  <input name="anyfield" type="text" value=" " size="40">
577
  <input name="qformat" value="html" type="hidden">
578
  
579
  <input name="returnfield" value="creator/individualName/surName" type="hidden">
580
  <input name="returnfield" value="creator/individualName/givenName" type="hidden">
581
  <input name="returnfield" value="creator/organizationName" type="hidden">
582
  <input name="returnfield" value="dataset/title" type="hidden">
583
  <input name="returnfield" value="keyword" type="hidden">
584

  
585
  <input name="returndoctype" value="eml://ecoinformatics.org/eml-2.0.1" type="hidden">
586

  
587
  <input value="Start Search" type="submit">
588

  
589
  </form>
590
  </body>
591
  </html>
592
  
593
Metacat's pathquery document can query specific fields of any XML document. 
594
The pathquery can also be used to specify which fields from each hit are 
595
returned and displayed in the search result set.
596

  
597
::
598

  
599
  <pathquery version="1.0">
600
      <meta_file_id>unspecified</meta_file_id>
601
      <querytitle>unspecified</querytitle>
602
      <returnfield>dataset/title</returnfield>
603
      <returnfield>keyword</returnfield>
604
      <returnfield>originator/individualName/surName</returnfield>
605
      <returndoctype>eml://ecoinformatics.org/eml-2.0.1</returndoctype>
606
      <returndoctype>eml://ecoinformatics.org/eml-2.0.0</returndoctype>
607
      <querygroup operator="UNION">
608
        <queryterm casesensitive="false" searchmode="contains">
609
          <value>Plant</value>
610
          <pathexpr>dataset/title</pathexpr>
611
        </queryterm>
612
        <queryterm casesensitive="false" searchmode="contains">
613
          <value>plant</value>
614
          <pathexpr>keyword</pathexpr>
615
        </queryterm>
616
      </querygroup>
617
  </pathquery>
618
  
619
Each ``<returnfield>`` parameter specifies a field that the data base will 
620
return (in addition to the fields Metacat returns by default) for each search 
621
result. 
622

  
623
The ``<returndoctype>`` field limits the type of returned documents 
624
(eg, eml://ecoinformatics.org/eml-2.0.1 and/or eml://ecoinformatics.org/eml-2.0.0). 
625
If no returndoctype element is specified, all document types are returned. 
626

  
627
A ``<querygroup>`` creates an AND or an OR statement that applies to the 
628
nested ``<queryterm>`` tags. The querygroup operator can be UNION or INTERSECT. 
629
A ``<queryterm>`` defines the actual field (contained in ``<pathexpr>`` tags) 
630
against which the query (contained in the ``<value>`` tags) is being performed. 
631

  
632
The ``<pathexpr>`` can also contain a document type keyword contained in 
633
``<returndoc>`` tags. The specified document type applies only to documents 
634
that are packaged together (e.g., a data set and its corresponding metadata file). 
635
If Metacat identifies the search term in a packaged document, the servlet will 
636
check to see if that document's type matches the specified one. If not, 
637
Metacat will check if one of the other documents in the package matches. If so, 
638
Metacat will return the matching document. For more information about packages, 
639
please see the developer documentation.
640

  
641
After Metacat has processed a Pathquery document, it returns a resultset document.
642

  
643
::
644

  
645
  <resultset>
646
        <query>
647
          <pathquery version="1.0">
648
            <meta_file_id>unspecified</meta_file_id>
649
            <querytitle>unspecified</querytitle>
650
            <returnfield>dataset/title</returnfield>
651
            <returnfield>keyword</returnfield>
652
            <returnfield>originator/individualName/surName</returnfield>
653
            <returndoctype>eml://ecoinformatics.org/eml-2.0.1</returndoctype>
654
            <returndoctype>eml://ecoinformatics.org/eml-2.0.0</returndoctype>
655
            <querygroup operator="UNION">
656
                  <queryterm casesensitive="false" searchmode="contains">
657
                      <value>Datos</value>
658
                      <pathexpr>dataset/title</pathexpr>
659
                  </queryterm>
660
                  <queryterm casesensitive="false" searchmode="contains">
661
                     <value>plant</value>
662
                     <pathexpr>keyword</pathexpr>
663
                  </queryterm>
664
           </querygroup>
665
         </pathquery>
666
        </query>  
667
      
668
        <document>
669
          <docid>nceas.44.1</docid>
670
          <docname>resource</docname>
671
          <doctype>eml://ecoinformatics.org/eml-2.0.1</doctype>
672
          <createdate>2001-01-12 16:12:06.0</createdate>
673
          <updatedate>2001-01-12 16:12:06.0</updatedate>
674
          <param name="dataset/title">Datos Meteorologicos</param>
675
          <param name="keyword">intertidal</param>
676
          <param name="originator/individualName/surName">Smith</param>
677
        </document>  
678
        
679
        <document>
680
          <docid>nceas.42.1</docid>
681
          <docname>resource</docname>
682
          <doctype>eml://ecoinformatics.org/eml-2.0.1</doctype>
683
          <createdate>2001-01-12 16:11:31.0</createdate>
684
          <updatedate>2001-01-12 16:11:31.0</updatedate>
685
          <param name="dataset/title">Ocean Surface Temperature</param>
686
          <param name="keyword">Plant</param>
687
          <param name="originator/individualName/surName">Henry</param>   
688
       </document>
689
      .....  
690
  </resultset>
691

  
692
When Metacat returns a resultset document, the servlet always includes the 
693
pathquery used to create it. The pathquery XML is contained in the <query> tag, 
694
the first element in the resultset.
695

  
696
Each XML document returned by the query is represented by a ``<document>`` tag. By 
697
default, Metacat will return the docid, docname, doctype, doctitle, createdate 
698
and updatedate for each search result. If the user specified additional return 
699
fields in the pathquery using ``<returnfield>`` tags (e.g., dataset/title to return 
700
the document title), the additional fields are returned in ``<param>`` tags. 
701

  
702
Metacat can return the XML resultset to your client as either XML or HTML.
703

  
704
Paged Query Returns
705
~~~~~~~~~~~~~~~~~~~
706
Dividing large search result sets over a number of pages speeds load-time and 
707
makes the result sets more readable to users (Figure 4.12). To break your search 
708
results into pages, use the query action's optional pagestart and pagesize 
709
parameters. The pagesize parameter indicates how many results should be 
710
returned for a given page. The pagestart parameter indicates which page you 
711
are currently viewing.
712

  
713
.. figure:: images/screenshots/image045.jpg
714
   :align: center
715
   
716
   An example of paged search results. 
717

  
718
When a paged query is performed, the query's resultset contains four extra 
719
fields: pagestart, pagesize, nextpage, and previouspage (Figure 4.13).  The 
720
nextpage and previouspage fields help Metacat generate navigational links in 
721
the rendered resultset using XSLT to transform the XML to HTML. 
722

  
723
:: 
724

  
725
  <!-- An example of an XML resultset that include support for page breaks. 
726
       The pagestart parameter will always indicate the page you are currently viewing.
727
  -->
728
  <resultset>
729
      <pagestart>1</pagestart>
730
      <pagesize>10</pagesize>
731
      <nextpage>2</nextpage>
732
      <previouspage>0</previouspage>
733
      <query> ...</query>
734
      <document>...</document>
735
      <document>...</document>
736
    </resultset>
737

  
738
The HTML search results displayed in the figure were rendered using Kepler's XSLT, 
739
which can be found in lib/style/skins/kepler. Kepler's XSLT uses the four extra 
740
resultset fields to render the "Next" and "Previous" links.
741

  
742
::
743
  
744
  <a href="metacat?action=query&operator=INTERSECT&enableediting=false&anyfield=actor&qformat=kepler&pagestart=0&pagesize=10">Previous Page</a>
745
  <a href="metacat?action=query&operator=INTERSECT&enableediting=false&anyfield=actor&qformat=kepler&pagestart=2&pagesize=10">Next Page</a>
746
  
747
In the example above, the current page is 1, and the previous page (page 0) and next page (page 2) pages are indicated by the values of the pagestart parameters.
748

  
749
Reading Data and Metadata
750
~~~~~~~~~~~~~~~~~~~~~~~~~
751
To read data or metadata from Metacat, use the ``read`` action. The ``read`` action 
752
takes two parameters: ``docid``, which specifies the document ID of the document 
753
to return, and ``qformat``, which specifies the return format for the document 
754
(``html`` or ``xml`` or the name of a configured style-set, e.g., ``default``). If ``qformat`` 
755
is set to ``xml``, Metacat will return the XML document untransformed. If the 
756
return format is set to ``html``, Metacat will transform the XML document into 
757
HTML using the default XSLT style sheet (specified in the Metacat 
758
configuration). If the name of a style-set is specified, Metacat will use the 
759
XSLT styles specified in the set to transform the XML.
760

  
761
.. figure:: images/screenshots/image047.jpg
762
   :align: center
763
   
764
   The same document displayed using different qformat parameters (from left 
765
   to right: the default style-set, XML, and HTML). 
766

  
767
Note that the ``read`` action can be used to read both data files and metadata files. 
768
To read a data file, you could use the following request::
769

  
770
  http://yourserver.com/yourcontext/metacat?action=read&docid=nceas.55&qformat=default
771

  
772
Where ``nceas.55`` is the docid of the data file stored in the Metacat and 
773
``default`` is the name of the style (you could also use "html" or "xml" or the 
774
name of a customized skin).
775

  
776
::
777
  
778
  <html>
779
  <head>
780
    <title>Read Document</title>
781
  </head>
782
  <body>
783
    <form method="POST" action="http://your.server/your.context/servlet/metacat">
784
      <input name="action" value="read" type="hidden">
785
      <input name="docid" type="text" value="" size="40">
786
      <input name="qformat" value="default" type="hidden">
787
      <input value="Read" type="submit">
788
    </form>
789
  </body>
790
  </html>
791
  
792
Using the EarthGrid API (aka EcoGrid)
793
-------------------------------------
794

  
795
Using Morpho
10 796
------------
11 797

  
798
Creating Your Own Client
799
------------------------
800

  

Also available in: Unified diff