Skip to content

Instantly share code, notes, and snippets.

@brialparker
Last active September 18, 2015 17:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brialparker/b16fbfaebc7fa04f2665 to your computer and use it in GitHub Desktop.
Save brialparker/b16fbfaebc7fa04f2665 to your computer and use it in GitHub Desktop.

Within the agent element in the UMDM schema there are two attributes that indicate agent role and agent type. Not all agents have both attributes, but at the least, each agent should have a type. There are three types: creator, contributor, and provider. The UMDM schema differentiates between personal and corporate names via the use of the persName or corpName element within agent.

A simple example of a person creator:

<agent type="creator">
  <persName>Olson, Mancur</persName>
</agent>

For our uses, this easily maps to

<> dcterms:creator <http://viaf.org/viaf/108503985>

(The same mapping would be the same for type="creator" agents)

Similarly,

<agent type="contributor">
  <persName>Porter, Katherine Anne -- 1890-1980</persName>
</agent>

maps to:

<> dcterms:contributor <http://viaf.org/viaf/56620604>

Similarly, there should be no difference in mapping between persName and corpName.

However, if there is a role attribute present, this changes our proposed mappings.

<agent type="contributor" role="illustrator">
  <persName xml:lang="ja">中村裕</persName>
</agent>
<agent type="contributor" role="illustrator">
  <persName xml:lang="ja-Latn">Nakamura Yutaka</persName>
</agent>

(side note, our Japanese language books have both characters and transliterations as separate and unrelated agent elements, which is our own special challenge.)

We could use the marcrel terms as a predicate:

<> marcrel:ill <<http://viaf.org/viaf/266258836>

Where marcrel is the namespace for http://id.loc.gov/vocabulary/relators

Or, we could try

<> schema:illustrator <http://viaf.org/viaf/266258836>

In this case, I chose a property from schema.org to better describe the role of the agent. Another option is to continue to use a dc terms property (creator or contributor) and further refine the role using schema:role property, paired with a URI for a relator term from the marc relator vocab . This complicates the issue though, since it would require hashing to enter the role term.

<> dcterms:contributor <http://viaf.org/viaf/266258836#Role>.

<http://viaf.org/viaf/266258836#Role>
  a   schema:Role ;
    schema:name <http://id.loc.gov/vocabulary/relators/ill>.

There are schema.org properties related to the role (like schema:illustrator, schema:editor, schema:author), but I can see the value of having a uri to indicate the role. There is a mapping between schema.org and dcterms that list these schema.org properties as subproperties of either dcterms:creator or dcterms:contributor: http://wiki.dublincore.org/index.php/Schema.org_Alignment/Mappings_Details. I am still working through the logic of how this type of metadata can be captured/stored in Fedora4.

Richard Wallis has an example like this:

    schema:contributor [
        a schema:Role;
        schema:roleName relators:wpr; # Writer of preface
        schema:contributor viaf:283191359; # Floor de Goede
        ]

but I'm not sure that particular structure will work well for our situation (or be so simple in Fedora) and using marcrel terms as predicates (or schema, but we're less sure about using those) is simpler and still get the same idea across. Added bonus? The marcrel properties are already subproperties of dc:contributor, which is helpful.

Agents listed as providers are publishers, and so can easily be mapped from:

<agent role="publisher" type="provider">
  <corpName>University of Maryland</corpName>
</agent>

to

<> dcterms:publisher <http://viaf.org/viaf/157598087>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment