Enhance RIF-CS output to support v1.6
Goals
- Create new transformer to implement RIF-CS 1.6 schema using ANDS RIF-CS Java API, to
- transform tfpackage into rif-cs XML for RDA
- validate transformed xml
- Engage with user community for:
- priorities for RIF-CS 1.6 schema
- testing
- Update of the data collection form to capture additional information required for the 1.6 specification.
- Provide some support for continuing support for use of existing template, over transformer
- Deprecate use of velocity template for rifcs generation
- Map tfpackage keys to rifcs
- Create new transformer to implement RIF-CS 1.6 schema using ANDS RIF-CS Java API, to
Background and strategic fit
The existing rif-cs template is using an older version (1.3) and has been reported as difficult to use and/or update with changes, especially in adapting it to support 1.6 schema additions. Supporting this new schema version has been marked as a priority by the redbox user community.
Assumptions
- ANDS schema incorporates all elements of RIF-CS 1.6 schema
- ANDS validation is correct for all parts of RIF-CS 1.6 schema
- logic of current RIF-CS template is sound (or able to gather feedback as to this for 1.3)
Priorities
Requirements
# | Title | User Story | Importance | Notes |
---|---|---|---|---|
1 | ||||
2 |
User interaction and design
Rifcs Changesets and redbox support (tick box)
1.4 | 1.5 | 1.6 | 1.6.1 |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
| |
|
|
| |
|
|
| |
|
|
| |
| |||
| |||
| |||
| |||
| |||
| |||
|
Rifcs elements ( included by current redbox / optional components not supported / required components not supported / updated for next redbox release ):
http://services.ands.org.au/documentation/rifcs/1.6.1/schema/registryObjects.xsd
http://services.ands.org.au/documentation/rifcs/1.6.1/schema/extRif.xsd
http://services.ands.org.au/documentation/rifcs/1.6.1/schema/registryTypes.xsd
http://services.ands.org.au/documentation/rifcs/1.6.1/schema/collection.xsd
http://services.ands.org.au/documentation/rifcs/1.6.1/vocabs/vocabularies.html
http://services.ands.org.au/documentation/rifcs/1.6/guidelines/rif-cs.html#location
( + = more than 1 element allowed)
- key
- originatingSource
- registryObject group
- annotationType
Collection | Service (mint) | Activity (mint) | Party (mint) |
---|---|---|---|
|
|
|
|
Rifcs Mapping from Redbox Tfpackage, metadata and system config:
Rifcs | Tfpackage/Metatdata/Systemconfig (|| or) (&& and) | conditions (== equal) (!= not equal) | ||
---|---|---|---|---|
key | metadata.get(config.get(curation.pidProperty)) || tfpackage.get(metadata.'rdf:resource') || tfpackage.get(metadata.'dc.identifier') || config.get(urlBase) + '/detail/' + metadata.get('objectId') | tfpackage.get('dc:identifier.redbox:origin') == 'internal' | ||
tfpackage.'dc:identifier.rdf:PlainLiteral' || '&Invalid ID: Not curated yet&' | tfpackage.get('dc:identifier.redbox:origin') != 'internal' | |||
originatingSource | config.get(urlBase) | |||
registryObject | group | config.get(identity.RIF_CSGroup) | ||
dateAccessioned | tfpackage.get('dc:created') | |||
type | tfpackage.get('dc:type.rdf:PlainLiteral') | |||
dateModified | tfpackage.get('dc:modified') | |||
identifier | metadata.get(config.get(curation.pidProperty)) || tfpackage.get(metadata.'rdf:resource') || tfpackage.get(metadata.'dc.identifier') || config.get(urlBase) + '/detail/' + metadata.get('objectId') | tfpackage.get('dc:identifier.redbox:origin') == 'internal' | ||
tfpackage.'dc:identifier.rdf:PlainLiteral' || '&Invalid ID: Not curated yet&' | tfpackage.get('dc:identifier.redbox:origin') != 'internal' | |||
identifier type | config.get(curation.pidType) || '&Invalid XML placeholder... prevents ANDS Harvesting records in error&' | if exists (metadata.get(config.get(curation.pidProperty)) || tfpackage.get(metadata.'rdf:resource') || tfpackage.get(metadata.'dc.identifier')) | ||
'uri' | if NOT exists (metadata.get(config.get(curation.pidProperty)) || tfpackage.get(metadata.'rdf:resource') || tfpackage.get(metadata.'dc.identifier')) | |||
name (type = 'primary')
| namePart |
tfpackage.get('dc:title') | ||
location address | electronic | value(type ='url') |
tfpackage.get('bibo:Website'1,2...'dc:identifier') | |
physical | addressPart (type = 'text') |
tfpackage.get('vivo:Location.vivo:GeographicLocation.gn:name') | ||
coverage | spatial | value | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...) "name=...'rdf:PlainLiteral'; east = ...'geo:long'; north =...'geo:lat'; projection=WGS84" | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...) ...'dc:type' == 'text' && NOT ...'redbox:wktRaw'
|
type | 'dcmiPoint' | |||
value | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'rdf:PlainLiteral' | |||
type | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'dc:type' | |||
value | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'rdf:PlainLiteral' | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...) ...'dc:type' != 'text' && NOT ...'redbox:wktRaw' | ||
type | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'dc:type' | |||
value | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'rdf:PlainLiteral' | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...) ...'dc:type' && ...'redbox:wktRaw' exist | ||
type | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'dc:type' | |||
value | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...'rdf:PlainLiteral' | tfpackage.get('dc:coverage.vivo:GeographicLocation'1,2...) .startsWith("POLYGON") ...'dc:type' && ...'redbox:wktRaw' exist | ||
type | "kmlPolyCoords" | |||
temporal | date (type = 'dateFrom') | tfpackage.get('dc:coverage.vivo:DateTimeInterval.vivo:start') | ||
date (type = 'dateTo') | tfpackage.get('dc:coverage.vivo:DateTimeInterval.vivo:end') | |||
text | tfpackage.get('dc:coverage.redbox:timePeriod') | |||
relatedObject | key | tfpackage.get(relationships...) ...curatedPid
| tfpackage.get(relationships...) ...curatedPid exists && ...isCurated == true | |
relationType | description | tfpackage.get(relationships...) ...description | ||
type | tfpackage.get(relationships...) | |||
key | tfpackage.get('dc:creator.foaf:Person'1,2...) ...'dc:identifier' | tfpackage.get('dc:creator.foaf:Person'1,2...) 'dc:identifier' == 'http://nla.gov.au/nla.party-...' | ||
relationType | type | 'hasCollector' | ||
key | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'dc:identifier' | |||
relationType | type | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'vivo:Relationship.rdf:PlainLiteral' | ||
subject | (type= 'local') | tfpackage.get('dc:subject.vivo:keyword'1,2...) ...'rdf:PlainLiteral' |
| |
(type= 'anzsrc-for') | tfpackage.get('dc:subject.anzsrc:for'1,2...) ...'rdf:resource' (after last /) | |||
(type= 'anzsrc-seo') | tfpackage.get('dc:subject.anzsrc:seo'1,2...) ...'rdf:PlainLiteral'(after last /) | |||
(type= 'anzsrc-toa') | tfpackage.get('dc:subject.anzsrc:toa.skos:prefLabel') | |||
description (type = 'full') | tfpackage.get('dc:description') | |||
rights | rightsStatement | tfpackage.get('dc:accessRights.dc:RightsStatement.skos:prefLabel') |
| |
rightsUri | tfpackage.get('dc:accessRights.dc:RightsStatement.dc:identifier') | |||
licence | tfpackage.get('dc:license.skos:prefLabel') | tfpackage.get('dc:accessRights.dc:licence.skos:prefLabel') && tfpackage.get('dc:accessRights.dcl:icence.dc:identifier') exist | ||
rightsUri | tfpackage.get('dc:license.dc:identifier') | |||
licence | tfpackage.get('dc:license.rdf:Alt.skos:prefLabel') | tfpackage.get('dc:license.rdf:Alt.skos:prefLabel') exists | ||
rightsUri | tfpackage.get('dc:license.rdf:Alt.dc:identifier') | |||
accessRights | tfpackage.get('dc:accessRights.skos:prefLabel') | |||
rightsUri | tfpackage.get('dc:accessRights.dc:identifier') | |||
relatedInfo | Identifier (type= "publication", identifierType ="uri") | tfpackage.get('dc:relation.bibo:Publication'1,2...) ...'dc:identifier'
| ||
title | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'dc:title' | |||
Identifier (type ="website", identifierType="uri") | tfpackage.get('dc:relation.swrc:Website'1,2...) ...'dc:identifier' | |||
title | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'dc:title' | |||
Identifier(type ="service", identifierType="uri") | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'dc:identifier' | |||
title | tfpackage.get('dc:relation.vivo:Service'1,2...) ...'dc:title' | |||
CitationInfo (style ="Datacite") | FullCitation | tfpackage.get('dc:biblioGraphicCitation.skos:prefLabel') replace(\{ID_WILL_BE_HERE\}/ ) with "http://dx.doi.org/" + (config.get(andsDoi.doiProperty) || metadata.get(config.andsDoi.doiProperty)) | tfpackage.'dc:biblioGraphicCitation.redbox:sendCitation' == 'on' | |
tfpackage.get('dc:biblioGraphicCitation.skos:prefLabel') replace(\{ID_WILL_BE_HERE\}/ ) with metadata.get(config.get(curation.pidProperty)) || tfpackage.get(metadata.'rdf:resource') || tfpackage.get(metadata.'dc.identifier') || config.get(urlBase) + '/detail/' + metadata.get('objectId') | tfpackage.'dc:biblioGraphicCitation.redbox:sendCitation' == 'on' && tfpackage.get('dc:identifier.redbox:origin') == 'internal' | |||
tfpackage.get('dc:biblioGraphicCitation.skos:prefLabel') replace(\{ID_WILL_BE_HERE\}/ ) with tfpackage.'dc:identifier.rdf:PlainLiteral' || '&Invalid ID: Not curated yet&' | tfpackage.'dc:biblioGraphicCitation.redbox:sendCitation' == 'on' && tfpackage.get('dc:identifier.redbox:origin') != 'internal' | |||
Feature Requests
Priority | Feature | Issue | Resolution | Feedback from demo site. | Description | Comments | Github Issue URL |
---|---|---|---|---|---|---|---|
8 | Add identifier field for creators, primary contact, supervisors and collaborators. |
|
| Currently, there is no way to add a related party if they already have an identifier and are not referenced in Mint or NLA (and soon ORCID). Add an identifier field to the creators, primary contact, supervisors and collaborators fields.
These fields should be hidden when the lookup functionality is used. | raised through redbox support and redbox lite work | ||
9 | Allow ability to define which identifiers should be curated and which ones should be ignored |
| Currently in ReDBox you can exclude identifier patterns from attempting to be curated (i.e. identifiers that start with http://nla.gov.au are already curated and need no further processing). It can be cumbersome however to determine which identifiers are needed to be added to this configuration and a value that isn't on the list and not in Mint will cause the curation process to stall.
It would be simpler if we could configure the identifier pattern used by Mint for records that haven't been curated yet.
For simplicity, make a change to the excludeCondition configuration so that as well as the "startsWith" a user can specify a "doesntStartWith" string. | raised through redbox support and redbox lite work | |||
10 | Problem with reverse relationship shown in Mint |
| https://github.com/redbox-mint/redbox/issues/60 | ||||
11 | Problem with a collection record's representation of a service in RIF-CS |
| https://github.com/redbox-mint/redbox/issues/60 | ||||
1 | Please add type property to RIF-CS licence element |
| https://github.com/redbox-mint/redbox/issues/48 | ||||
2 | No type for access rights |
| https://github.com/redbox-mint/redbox/issues/48 | ||||
12 | Creator validation does not enforce RIF-CS Party relationship requirement | - REDBOX-392Getting issue details... STATUS |
|
| https://github.com/redbox-mint/redbox/issues/23 | ||
17 | OAI-PMH Sets don't return any results | - REDBOX-393Getting issue details... STATUS |
| https://groups.google.com/d/topic/redbox-repo/P0lRpENDFGM/discussion | https://github.com/redbox-mint/mint/issues/9 | ||
15 | Add metadata to rifcs |
| https://github.com/redbox-mint-contrib/config-samples/blob/master/ReDBox/Metadata%20templates/rif14.vm | ||||
13 | Consider ANDS demo site for testing higher quality levels and incorporating these as form validation rules |
| https://demo.ands.org.au/registry/registry_object | ||||
3 | support kmlPolyCoords |
| see JCU RIF.docx | ||||
4 | add multiple description support |
| start with brief, full and logo see JCU RIF.docx | ||||
5 | date formatting fix |
| see JCU RIF.docx | ||||
6 | support multiple identifiers |
| see JCU RIF.docx | ||||
7 | location urls may not be suitable for all implementations especially if not public |
| see JCU RIF.docx | ||||
16 | Set up data migration script to support schema changes made to form |
| perhaps Jay van Schyndel (Unlicensed) and Grant may be able to share data for more thorough testing | ||||
14 | Ensure rifcs changes are applied to both researcher dashboard as well as self-submission |
|
other supporting documents:
Questions
Below is a list of questions to be addressed as a result of this requirements document:
Question | Outcome |
---|---|
Not Doing
- Supporting all requests for existing rifcs velocity template