Element Set Linked Groups


First off, I wanted to say that I am new to Omeka, and its been a while since I worked with data in this way, so please be patient with my inquiry.

I'm looking to create an element set that meets the standards of the Europeana Data Model (EDM). The details can be found here...

My problem is that their metadata has 2 levels. There are Core Classes and Contextual Classes. But all are relevant to each item. The PDF file at the following link describes the rules for metadata that is EDM compliant...

When researching how to create an element set in Omeka, each resource I find online only talks about single level data. Like the Dublin Core, for example, its just 10-12 items, with no sub-items, or linked metadata at different levels.

Is this possible in Omeka?
I also tried to find more examples of how to write element sets, but I just have the example here, http://omeka.org/codex/Creating_an_Element_Set.

My question about that set, is how editable are these fields? It lists name, record_type and data_type, for example. Could I change those names to something like, core_class instead? Or are these hard coded?

For example, could this...

'record_type' => [(string) record type name, optional],

Become this...

'core_type' => [(string) core type name, optional],

This is more of a programming question I know, but again its been a long time since I coded anything like this.

Thanks to anyone that can help!

The question of subelements comes up here and there. Omeka doesn't have a general way to have multiple levels of elements. It might be possible to create a plugin that would basically fake it for a particular standard by creating relations between elements and managing their storage and display.

It won't really work to change record_type, since that's a column in the database.

It looks like you are also looking at documentation for an older version of Omeka (and I notice that we don't seem to have it updated in the existing documentation pages).

There is a updated page documenting insert_element_set, though.

Thanks! I'll check it all out. Too bad about leveled elements.

The following quote was on the "old" page for creating elements. Does it still apply in the new version as well? I assumed as much but wanted to double check.

"To simulate hierarchical elements in your schema we recommend delimiting the elements with a colon. For example, in the full Dublin Core list of terms, "created" is a refinement of "date," so an element with the name "date:created" is sufficient."

Also, there are no examples of the code on the new page, just the setup instructions. Could you list a simple example here? Or update the page? Not one that uses placeholders but uses "real" values? Just test data, I want to make sure I'm getting my syntax right. Programming cobwebs in my brain.


So I have been looking at a lot of online documentation, but the problem now is that they are conflicting. Most likely differences between versions of Omeka. For example, some use the single quotes around values, others don't. Here's the code I have right now...

$elementSetMetadata = array(
    'name' 			=> [(string) 'DC ProvidedCHO for EDM', required, unique],
    'description' 	=> [(string) 'Dublin Core elements for the ProvidedCHO core class of the Europeana Data Model (EDM) metadata standard', optional];
	'record_type' 	=> [(string) 'dc:ProvidedCHO', optional]

$elements = array(
        'name'           => [(string) 'dc:contributor', required],
        'description'    => [(string) 'Use for contributors to the CHO. If possible supply the identifier of the contributor from an authority source', optional],
        'record_type'    => [(string) 'Literal or reference', optional],
        'name'           => [(string) 'dc:coverage', optional],
        'description'    => [(string) 'The spatial or temporal topic of the CHO', optional],
        'record_type'    => [(string) 'Literal or reference', optional],

Does this look right? Now I need to know where to put this code.

A couple things on the array:

The (string) in documentation refers to the data type, and is just guidance. Same with the required and unique. So, for example, it would just be

$elementSetMetadata = array(
    'name' 		=> 'DC ProvidedCHO for EDM',
    'description' 	=> 'Dublin Core elements for the ProvidedCHO core class of the Europeana Data Model (EDM) metadata standard'

I've left off the record_type because it works differently from what you have. The record type refers to which Omeka record types (Item, Collection, etc) the element set applies to. Generally, then, it can be left off.

As for where it would go, it will go in a plugin. Here's a guide to building a plugin. The existing Dublin Core Extended plugin will be a good example and model.

Perfect, just what I needed! I'm sure these are no brainer questions I'm asking. I'm pretty new to Omeka's inner workings, my programming skills are rusty (but there, I swear) and Google searches have been surprisingly unproductive for me on these topics. Most results end up being about older versions.

This helps a lot I appreciate the time you took to reply. Thanks again!