Hi Francois,
Thx for the reply, good to see you have been working on this. I do try
to keep track of the Geonetwork dev forum but I have a bunch of apps I'm
maintaining and have been very busy last couple of months so have missed
some of the previous forum entries. I'm happy to work on a joint
proposal with you so long as the requirements my organisation require
are met.
Checked out your geonetwork url and tried the "land cover" search but it
returned no records for me. Nor did "la couverture des terres" :-). I
had not authenticated though.
Will definitely check out what you have done (your source). I have made
some good progress here locally with parent->child and also
child->parent with the schema extension I mentioned below. I introduced
logic to Create, Update, and Delete metadata services so everything
stays sync'd up. Functionality I have at the moment is as follows;
-automation of child->parent and parent->child linkage creation in
create
-automation of parent->child linkage removal in delete
-automation of child->parent and parent->child linkage creation and
removal in update
-allowing creation of child and sibling relationships via the
create/duplicate service and setting up the appropriate child->parent
and parent->child linkage
-failing delete on parents that have children
-href link in show form only when string length of parentIdentifier and
childIdentifier fields is 36 (UUID length)
I haven't started on the indexing yet so these relationships can be
searchable, but even just having the links in the show form allows easy
traversal up and down the generations. My thoughts on searching were
that you really only want to search for children, as there can only be
one parent. Not sure returning a single record is of any real use when
you can link directly to it from the child record (maybe just need a
parent link in the brief showed in the search results list). But a
search on all descendants of a parent could be quite a few records. I
don't know that lucene will let me return all descendants anyway which
is what my org wants, so might have to introduce a new service to do
this. Guess I could have some sort of recursive lucene search.
For any of what I have done to be taken on board I really need everyone
to agree on something like the following schema extension to the mcp
profile (not sure if you even use this profile. If not perhaps this
could be worked into the iso19139 standard). What I have done so far
required no changes to the DB schema, just the XML schema.
<!-- child records -->
<xs:element name="childIdentifier"
type="gco:CharacterString_PropertyType"/>
<xs:element name="children">
<xs:complexType>
<xs:sequence>
<xs:element ref="mcp:childIdentifier" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
-->
<!-- Add revisionDate to gmd:MD_Metadata -->
<!--
-->
<xs:complexType name="MD_Metadata_Type">
<xs:annotation>
<xs:documentation>
Extends the metadata element to include revisionDate and
AIMS Extension elements
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="gmd:MD_Metadata_Type">
<xs:sequence>
<xs:element ref="mcp:children" minOccurs="0"
maxOccurs="1"/>
<xs:element name="revisionDate"
type="gco:Date_PropertyType" minOccurs="0"/>
<xs:element ref="mcp:AIMS_Extensions" minOccurs="1"
maxOccurs="1"/>
</xs:sequence>
<xs:attribute ref="gco:isoType"
use="required" fixed="gmd:MD_Metadata"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Happy to get any comments you (or anyone) have on this. I don't have
this running on an external site yet, hope to have something like a test
site available soon so long as my org lets me. The following is the AIMS
external metadata system, but it doesn't have any of this on it yet.
http://data.aims.gov.au/geonetwork
Cheers,
Kevin
-----Original Message-----
From: Francois-Xavier Prunayre
[mailto:francois-xavier.prunayre@anonymised.com]
Sent: Wednesday, 12 November 2008 19:06 PM
To: Kevin Gunn
Cc: geonetwork-devel@lists.sourceforge.net
Subject: Re: [GeoNetwork-devel] parent and child relationships
Hi Kevin,
as mentionned in previous post, I've been working on parent child
relationship. You could have a look to
http://brgm-geosourcev2.demo-camptocamp.com/geonetwork/
and search for "land cover". Then you have access to one parent and 2
child (UI only in French sorry).
The idea is to make this available in future GeoNetwork release creating
a sandbox for geosource project in sourceforge as mentionned by Pierre 2
weeks ago [1]. Once loaded in sourceforge, it will be available. If you
want to access to the source code you could download the version 2 beta
installer [2].
On lun, 2008-11-10 at 12:42 +1000, Kevin Gunn wrote:
I'm implementing a check box in the duplicate form that lets you say
it's a child record. Then using the fixed info styling with its
environment element (that is already used to pass in changeDate and
the
new UUID) pass in the old UUID from the template/parent and set the
parent identifier field with this UUID. The finishing touch on this
will
be to then display the parent Identifier as a link (or have a
button/icon next to it) that when selected opens the parent record.
I want to find out any details on the following.
1. Has something already been done and I'm just reinventing the wheel
here. Or that there is something currently planed for addition to the
current MEST
2. If this was something you might want committed into the BlueNet
SVN.
3. For the reverse relationship, parent to child, is there something
in
the 19139 schema that caters for this, i.e. child identifier fields.
No, but you could store in the index for each metadata record the
parentIdentifier and using the index you could find children. Then
everytime you update a metadata record, you have to update the index for
the current metadata and the related old/new parents (if set).
If
not does the community think this might be a good schema extension to
have?
Maybe we could work on a join proposal for handling parent-child
relation on the trac ?
Ciao.
Francois
[1] http://trac.osgeo.org/geonetwork/wiki/Community_FR
[2] http://adullact.net/frs/?group_id=561
--
------------------------------------------------------------------------
The information contained in this communication is for the use of the
individual or entity to whom it is addressed, and may contain
information which is the subject of legal privilege and/or copyright.
If you have received this communication in error, please notify the
sender by return email and delete the transmission, together with any
attachments, from your system. Thank you.
------------------------------------------------------------------------