icatproject / icat.server

The ICAT server offering both SOAP and "RESTlike" interfaces to a metadata catalog.
Other
1 stars 5 forks source link

Add a new entity type Subject to add keywords to data publications #327

Open RKrahl opened 8 months ago

RKrahl commented 8 months ago

The DataPublication class has a property subject with the description "List of keywords". It is a simple string property, although it is typically multi valued in practice.

This was done according to my own proposal (#200). The intention back then was to keep things simple. In the practice, you can set multiple keywords by setting a comma (or semicolon) separated list in the string value, e.g. set something like subject = "Light Management; Perovskite/Silicon Tandem Solar Cells; Nanotexture; Bayesian Optimization; Finite Element Method". When generating DataCite metadata out of that, this may translate to:

  <subjects>
    <subject>Light Management</subject>
    <subject>Perovskite/Silicon Tandem Solar Cells</subject>
    <subject>Nanotexture</subject>
    <subject>Bayesian Optimization</subject>
    <subject>Finite Element Method</subject>
  </subjects>

This works fine as long as you only need to set simple keywords. But the DataCite property Subject has subproperties subjectScheme, schemeURI, and valueURI and we might want to use them in order to set subjects from a controlled vocabulary, as in:

  <subjects>
    <subject schemeURI="http://purl.org/pan-science/PaNET/" subjectScheme="The Photon and Neutron Experimental Techniques Ontology" valueURI="http://purl.org/pan-science/PaNET/PaNET01217">neutron diffraction</subject>
  </subjects>

That is very difficult to encode in the current ICAT schema.

So I suggest to add the following new entity type:

Subject

Subject, keyword, classification code, or key phrase describing a data publication

Constraint: dataPublication, name

Relationships:

Card Class Field
1,1 DataPublication dataPublication

Other fields:

Field Type
name String[255] NOT NULL
pid String[255]
subjectScheme String[255]
schemeURI String[255]
valueURI String[255]
classificationCode String[255]

(Obviously, this would add the new corresponding one-to-many relation to DataPublication as well.)

RKrahl commented 7 months ago

As discussed in the ICAT Schema Discussion on April 2nd and in the collaboration meeting today, this change should be in a version 7.0 release that we aim to make in the second half of this year.