| 1 | = Sub-templates = |
| 2 | |
| 3 | || '''Date''' || 2011/05/25 || |
| 4 | || '''Contact(s)''' || Francois, Simon || |
| 5 | || '''Last edited''' || || |
| 6 | || '''Status''' || draft || |
| 7 | || '''Assigned to release''' || 2.7.0 || |
| 8 | || '''Resources''' || Available || |
| 9 | || '''Ticket''' || #XYZ || |
| 10 | |
| 11 | == Overview == |
| 12 | |
| 13 | This proposal aims to provide the capability to handle sub-templates. Sub-templates are XML fragment of metadata records. |
| 14 | |
| 15 | Example for a point of contact in ISO19139: |
| 16 | {{{ |
| 17 | <?xml version="1.0" encoding="UTF-8"?> |
| 18 | <gmd:pointOfContact xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gml="http://www.opengis.net/gml"> |
| 19 | <gmd:CI_ResponsibleParty> |
| 20 | <gmd:individualName> |
| 21 | <gco:CharacterString>NAME</gco:CharacterString> |
| 22 | </gmd:individualName> |
| 23 | <gmd:organisationName> |
| 24 | <gco:CharacterString>Name of the responsible organization</gco:CharacterString> |
| 25 | </gmd:organisationName> |
| 26 | <gmd:positionName> |
| 27 | <gco:CharacterString>Function performed by the responsible party</gco:CharacterString> |
| 28 | </gmd:positionName> |
| 29 | <gmd:role> |
| 30 | <gmd:CI_RoleCode codeList="./resources/codeList.xml#CI_RoleCode" codeListValue="pointOfContact"/> |
| 31 | </gmd:role> |
| 32 | </gmd:CI_ResponsibleParty> |
| 33 | </gmd:pointOfContact> |
| 34 | }}} |
| 35 | |
| 36 | Sub-templates are designed to be inserted into metadata records using 2 mode: |
| 37 | * one time link with copy/paste action |
| 38 | * permanent link with XLink. |
| 39 | |
| 40 | |
| 41 | |
| 42 | === Proposal Type === |
| 43 | * '''Type''': Metadata |
| 44 | * '''App''': !GeoNetwork |
| 45 | * '''Module''': Admin, Editor |
| 46 | |
| 47 | === Links === |
| 48 | * '''Documents''': |
| 49 | * '''Email discussions''': |
| 50 | * '''Other wiki discussions''': |
| 51 | |
| 52 | === Voting History === |
| 53 | * Vote proposed by on , result was |
| 54 | |
| 55 | ---- |
| 56 | |
| 57 | == Proposal == |
| 58 | |
| 59 | Sub-templates are: |
| 60 | * XML document |
| 61 | * stored in the Metadata table with |
| 62 | * value 's' for the template column (reminder: 'y' is for template, 'n' is for metadata) |
| 63 | * root element is stored in the root column. It allows us to know the type of sub-templates (and where it could be inserted in an existing record) |
| 64 | * schema is defined like metadata or template documents |
| 65 | * indexed using Lucene identified by field _isTemplate='s' |
| 66 | * imported through the metadata record import administration page ? |
| 67 | * similar to metadata document for privileges management |
| 68 | |
| 69 | In the user interface, sub-templates are accessible through: |
| 70 | * a sub-templates manager in the administration |
| 71 | * a popup selection mechanism in the metadata editor (like CRS, Thesaurus) |
| 72 | |
| 73 | Types of sub-templates: |
| 74 | * contact |
| 75 | * ... extent ? |
| 76 | |
| 77 | === Manage sub-templates === |
| 78 | |
| 79 | A service is added to return the list of available sub-templates available. |
| 80 | * getTypes method: return the list of available sub-templates available |
| 81 | |
| 82 | Sub-templates actions: |
| 83 | * insert : Use the metadata insert form to create a sub-template |
| 84 | * update/delete : Use the sub-template manager |
| 85 | * search : Use any search services with _isTemplate='s' |
| 86 | * privileges : Define privileges for the sub-template. |
| 87 | |
| 88 | === Using sub-templates in the editor === |
| 89 | |
| 90 | TODO : basically using similar popup like CRS or Thesaurus |
| 91 | * full text search |
| 92 | * select one or more elements |
| 93 | * add (as XLink or using simple copy) |
| 94 | * could this be generic ? |
| 95 | * add selector according to the types available in the catalogue (using the _root info) ? |
| 96 | |
| 97 | === Questions: === |
| 98 | |
| 99 | * do we need more than full text indexing ? |
| 100 | * should we use metadata import page to import sub template ? or a custom one ? |
| 101 | * how to autodetect schema for templates ? - maybe we need a specific import page to set schema value. or if user set subtemplate for the type, then schema is mandatory ? |
| 102 | * we always edit in advanced mode - at least non flat mode to provide all schema elements ? |
| 103 | * Subtemplate model |
| 104 | * we need a title for all types of subtemplate (to be display in search). Where/how to configure ? |
| 105 | * Quid on extent ? using description which is not mandatory ? |
| 106 | |
| 107 | Future feature: |
| 108 | * Capability to extract subtemplate from existing record (cf. ReusableObjectStrategy in geocat.ch)? |
| 109 | |
| 110 | |
| 111 | === Backwards Compatibility Issues === |
| 112 | None. |
| 113 | |
| 114 | === New libraries added === |
| 115 | None. |
| 116 | |
| 117 | |
| 118 | == Participants == |
| 119 | * Francois Prunayre |
| 120 | * Simon Pigot |