Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
5076dd1
Add controlled vocabulary
ekoi Jan 20, 2021
6960a4c
Merge pull request #41 from ekoi/external-cvoc
PaulBoon Feb 2, 2021
f1d5fb5
Merge branch 'develop' into external-cvoc
PaulBoon Feb 2, 2021
6ee5a09
Merge branch 'external-cvoc' of github.com:DANS-KNAW/dataverse into e…
janvanmansum Feb 2, 2021
56721ad
Merge pull request #44 from PaulBoon/external-cvoc
PaulBoon Feb 2, 2021
68d5aa3
Fix problem where pressing tab skips some fields.
JingMa87 Feb 17, 2021
6224e3b
Merge pull request #49 from JingMa87/external-cvoc
janvanmansum Feb 18, 2021
8e5eb3c
External cvoc (#47)
ekoi Feb 19, 2021
4cb9ca9
Have cvoc URL fields use the readonly setting
PaulBoon Feb 24, 2021
847dc65
Merge pull request #50 from PaulBoon/DD-375
janvanmansum Feb 24, 2021
aa43772
DD-377 Improving the cvoc metadata term selection input (#52)
PaulBoon Mar 3, 2021
8ef8408
Added ajax loading indicator css for the extenal cvoc autocomplete in…
PaulBoon Mar 10, 2021
c0d9c30
DD-386: Uses the vocab-uri parameter from the cvoc config (#55)
PaulBoon Mar 16, 2021
43d6631
Merge branch 'develop' into external-cvoc
PaulBoon Mar 16, 2021
e369ffe
Merge pull request #56 from PaulBoon/external-cvoc
PaulBoon Mar 16, 2021
feefe49
Added the cvoc-interface.js file to the application resources
PaulBoon Mar 23, 2021
78f3ec2
Changed the default js-url to this compiled in resource
PaulBoon Mar 23, 2021
5d78401
Merge pull request #60 from PaulBoon/FixInterfaceJs
janvanmansum Mar 23, 2021
a480b4f
Merge branch 'develop' into external-cvoc
janvanmansum Mar 23, 2021
30de328
Merged back develop in external cvoc
janvanmansum Apr 14, 2021
ec5d019
Merge pull request #71 from janvanmansum/MERGE_BACK_DEVELOP_IN_EXT_CVOC
janvanmansum Apr 14, 2021
00e5df4
Merge branch 'develop' into external-cvoc
janvanmansum Apr 23, 2021
1792fc2
Proof-of-concept ORCID integration for a new 'creator' field
qqmyers Dec 31, 2020
2359567
add scripts - temporary measure
qqmyers May 17, 2021
74c9952
fix when query doesn't exist yet
qqmyers May 17, 2021
cb60c23
Allow plain text entries
qqmyers May 17, 2021
dc09b20
avoid html escaping - temporary
qqmyers May 17, 2021
8228ba3
Merge remote-tracking branch 'IQSS/develop' into external-cvoc
qqmyers May 17, 2021
5273ba0
Merge branch 'CVV-ORCID' into external-cvoc
qqmyers May 17, 2021
3cb810d
add table, move config to servicebean, use json
qqmyers May 20, 2021
5c1091c
adding demo block, config file
qqmyers May 20, 2021
7056248
Merge remote-tracking branch 'IQSS/develop' into external-cvoc
qqmyers May 21, 2021
f3fbb81
add lang
qqmyers May 25, 2021
cd7ac8f
remove creator demo field
qqmyers May 25, 2021
a8a6690
add term-uri-field, adjust names
qqmyers May 25, 2021
cf521ae
add external val table
qqmyers May 25, 2021
9f1ffa8
put auto select in front
qqmyers May 25, 2021
b8df216
add single primitive field examples, fix cvoc conf npe for no children
qqmyers May 25, 2021
6971c1a
single field, single vocab basic impl
qqmyers Jun 2, 2021
1952ba2
fix quotes remove primitive fielfd formatting
qqmyers Jun 2, 2021
17115af
now remove primitive formatting
qqmyers Jun 2, 2021
9a0e905
display side, cleanup
qqmyers Jun 2, 2021
ffec0eb
cache cvoc map in view
qqmyers Jun 2, 2021
bbe5e25
cleanup
qqmyers Jun 2, 2021
275c05f
add / to prefix
qqmyers Jun 2, 2021
d2798fd
use prefix
qqmyers Jun 2, 2021
16b2d6e
fix multivalue attributes
qqmyers Jun 2, 2021
8e59065
partial updates
qqmyers Jun 3, 2021
934ce27
fix for multi-values
qqmyers Jun 4, 2021
a135da7
support multi-vocabs
qqmyers Jun 4, 2021
ba2a579
filtering for externalvocabularyvalue table
qqmyers Jun 8, 2021
06fe5e2
conf file
qqmyers Jun 8, 2021
ad265f8
single and multiple vocab versions
qqmyers Jun 8, 2021
145a363
use field independent keys, add search of filtered info
qqmyers Jun 9, 2021
afba981
lastname, firstname
qqmyers Jun 9, 2021
d4b8e25
empty set rather than null on errors
qqmyers Jun 9, 2021
a2a808c
try synchronous for indexing, add debug stmnts
qqmyers Jun 9, 2021
4ab2695
pass JsonArray through without string conversion
qqmyers Jun 9, 2021
1ad7b46
export json with external vcab values
qqmyers Jun 9, 2021
3045c90
add an @id for skosterm
qqmyers Jun 9, 2021
026a4b3
export to json and ore
qqmyers Jun 10, 2021
5ddb75b
multifield support fix input, add in display
qqmyers Jun 11, 2021
c116466
workaround re width of select2, fix primitive display,beautify people.js
qqmyers Jun 11, 2021
66e1f3b
style multivalue cvoc combo field
qqmyers Jun 11, 2021
026f5e6
cleanup, add comments
qqmyers Jun 11, 2021
9986022
cleanup, simple documentation
qqmyers Jun 11, 2021
61937a1
cleanup/fix @id pattern
qqmyers Jun 14, 2021
5477c43
add ardc demo field and ardc2 script
qqmyers Jun 14, 2021
e12e0f1
update placeholder text
qqmyers Jun 14, 2021
7dc4798
typo || vs or, cleanup
qqmyers Jun 18, 2021
dadf4c3
Testing external cvoc; bugfixes in progress
janvanmansum Jun 26, 2021
aa3ddc1
Restoring language param
janvanmansum Jun 26, 2021
ad59198
initial vocab languages support
qqmyers Jul 7, 2021
eebc826
make skosterm demo field facetable
qqmyers Jul 8, 2021
b21da5c
don't create a link if already in an <a> element
qqmyers Jul 8, 2021
bac6fc8
support showing name in facets
qqmyers Jul 8, 2021
02ced93
update examples with languages field
qqmyers Jul 8, 2021
c38230c
doc/example updates
qqmyers Jul 8, 2021
0027b01
handle missing term name
qqmyers Jul 8, 2021
f14f224
comments
qqmyers Jul 9, 2021
91c6995
Merge branch 'external-cvoc2' into BUGFIXES
janvanmansum Jul 14, 2021
622fa04
Improved skosmos.js
janvanmansum Jul 14, 2021
4460d0c
Commented out copyField for creator field in schema.xml (Solr). This …
janvanmansum Jul 15, 2021
d82fa1d
Change tags allowed to default 'false'
janvanmansum Jul 19, 2021
8f138b0
Merge pull request #7 from janvanmansum/BUGFIXES
qqmyers Jul 19, 2021
21161fb
Merge pull request #8 from janvanmansum/IMPROVE_SKOSMOS_JS
qqmyers Jul 19, 2021
9dd15e3
Merge pull request #9 from janvanmansum/FIX_SOLR_SCHEMA
qqmyers Jul 19, 2021
45726b5
Merge pull request #12 from janvanmansum/CHANGE_TAGS_ALLOWED_DEFAULT
qqmyers Jul 19, 2021
8320b17
handle single language fields (json object responses)
qqmyers Jul 20, 2021
01b7045
improve error handling/logging, add lastupdateddate
qqmyers Jul 20, 2021
aee6d53
unused import
qqmyers Jul 20, 2021
0ae203e
fixes for ORCID filtering
qqmyers Jul 20, 2021
6776146
add free-text and uriSpace params
qqmyers Jul 20, 2021
0e3f929
remove unused method
qqmyers Jul 20, 2021
380631a
create separate expandedvalues element in json
qqmyers Jul 27, 2021
552a34a
advanced search support
qqmyers Aug 4, 2021
cf3588f
advanced xhtml updates
qqmyers Aug 4, 2021
7dabd61
fix expandedvalue in json
qqmyers Aug 4, 2021
081affe
support allow-free-text
qqmyers Aug 4, 2021
de6578a
support new vocab structure
qqmyers Aug 4, 2021
8a2894b
Merge remote-tracking branch 'IQSS/develop' into external-cvoc2
qqmyers Aug 4, 2021
406ffc5
API validation, update readme doc/examples
qqmyers Aug 4, 2021
b31ad5c
fix MockDatasetFieldService for no CVoc test cases
qqmyers Aug 4, 2021
4ad6a31
Merge remote-tracking branch 'IQSS/develop' into external-cvoc2
qqmyers Aug 18, 2021
aa7c7b9
allow apache httpclient
qqmyers Aug 18, 2021
002852b
remove cut/paste text
qqmyers Aug 18, 2021
cf75880
extra }
qqmyers Aug 18, 2021
372f843
Merge remote-tracking branch 'IQSS/develop' into external-cvoc2
qqmyers Aug 27, 2021
b74278c
moving to https://github.com/gdcc/dataverse-external-vocab-support
qqmyers Aug 27, 2021
1c57af1
revert schema changes for demo metadata block (which was removed)
qqmyers Aug 27, 2021
090d32a
address reviewer comments
qqmyers Aug 27, 2021
e76ac79
no longer required
qqmyers Aug 31, 2021
e52fdf9
cleanup, fix indexes
qqmyers Aug 31, 2021
891be71
refactor
qqmyers Aug 31, 2021
351a01f
spacing fix
qqmyers Aug 31, 2021
e78c434
doc updates
qqmyers Sep 3, 2021
a568d7e
typos, updates
qqmyers Sep 3, 2021
14a66de
Merge remote-tracking branch 'IQSS/develop' into external-cvoc2
qqmyers Sep 3, 2021
90cb865
release note
qqmyers Sep 3, 2021
dbbf15b
revert table changes
qqmyers Sep 9, 2021
35d5839
Update doc/sphinx-guides/source/installation/config.rst
qqmyers Sep 9, 2021
792f0e9
add generated id
qqmyers Sep 10, 2021
b9cb3a7
Merge branch 'external-cvoc2' of https://github.com/GlobalDataverseCo…
qqmyers Sep 10, 2021
11b1cef
Merge remote-tracking branch 'IQSS/develop' into external-cvoc2
qqmyers Sep 10, 2021
c63a2ec
blank line needed
qqmyers Sep 13, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion checkstyle.xml
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
</module>
-->
<module name="IllegalImport">
<property name="illegalPkgs" value="org.apache.commons.lang, org.apache.commons.httpclient"/>
<property name="illegalPkgs" value="org.apache.commons.lang"/>
</module>
<!-- <module name="RedundantImport"/> -->
<!-- <module name="UnusedImports">
Expand Down
3 changes: 3 additions & 0 deletions doc/release-notes/7946-external-vocab-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Experimental Support for External Vocabulary Services

Dataverse can now be configured to associate specific metadata fields with third-party vocabulary services to provide an easy way for users to select values from those vocabularies. The mapping involves use of external Javascripts. Two such scripts have been developed so far: one for vocabularies served via the SKOSMOS protocol (see https://skosmos.org) and one allowing people to be identified via their ORCID (see https://orcid.org). The guides contain info about the new :CVocConf setting used for configuration and additional information about this functionality. Scripts, examples, and additional documentation are available at https://github.com/gdcc/dataverse-external-vocab-support.
31 changes: 31 additions & 0 deletions doc/sphinx-guides/source/admin/metadatacustomization.rst
Original file line number Diff line number Diff line change
Expand Up @@ -677,6 +677,37 @@ Great care must be taken when reloading a metadata block. Matching is done on fi

The ability to reload metadata blocks means that SQL update scripts don't need to be written for these changes. See also the :doc:`/developers/sql-upgrade-scripts` section of the Developer Guide.

Using External Vocabulary Services
----------------------------------

The Dataverse software has a mechanism to associate specific fields defined in metadata blocks with a vocabulary(ies) managed by external services. The mechanism relies on trusted third-party Javascripts. The mapping from field type to external vocabulary(ies) is managed via the :ref:`:CVocConf <:CVocConf>` setting.

*This functionality is considered 'experimental'. It may require significant effort to configure and is likely to evolve in subsequent Dataverse software releases.*


The effect of configuring this mechanism is similar to that of defining a field in a metadata block with 'allowControlledVocabulary=true':

- Users are able to select from a controlled list of values.
- Values can be shown in any language the term has been defined in.

In general, the external vocabulary support mechanism may be a better choice for large vocabularies, hierarchical/structured vocabularies, and/or vocabularies managed by third-parties. In addition, the external vocabulary mechanism differs from the internal controlled vocabulary mechanism in several ways that may make it a preferred option:

- the machine-readable URI form of a vocabulary is stored in the Dataverse database and can be included in exported metadata files.
- vocabulary mappings can be changed without changing the metadata block, making it possible for different Dataverse installations to use different vocabularies in the same field.
- mappings can associate a field with more than one vocabulary.
- mappings can be configured to also allow custom/free-text entries as well as vocabulary values.
- mappings can be configured for compound fields and a user's selection of a given vocabulary value can be used to fill in related child fields (e.g. selection of a keyword could fill in a vocabulary name field as well).
- removing a mapping does not affect stored values (the field would revert to allowing free text).

The specifics of the user interface for entering/selecting a vocabulary term and how that term is then displayed are managed by third-party Javascripts. The initial Javascripts that have been created provide auto-completion, displaying a list of choices that match what the user has typed so far, but other interfaces, such as displaying a tree of options for a hierarchical vocabulary, are possible.
Similarly, existing scripts do relatively simple things for displaying a term - showing the term's name in the appropriate language and providing a link to an external URL with more information, but more sophisticated displays are possible.

Scripts supporting use of vocabularies from services supporting the SKOMOS protocol (see https://skosmos.org) and retrieving ORCIDs (from https:/orcid.org) are available https://github.com/gdcc/dataverse-external-vocab-support. (Custom scripts can also be used and community members are encouraged to share new scripts through the dataverse-external-vocab-support repository.)

Configuration involves specifying which fields are to be mapped, whether free-text entries are allowed, which vocabulary(ies) should be used, what languages those vocabulary(ies) are available in, and several service protocol and service instance specific parameters.
These are all defined in the :ref:`:CVocConf <:CVocConf>` setting as a JSON array. Details about the required elements as well as example JSON arrays are available at https://github.com/gdcc/dataverse-external-vocab-support, along with an example metadata block that can be used for testing.
The scripts required can be hosted locally or retrieved dynamically from https://gdcc.github.io/ (similar to how dataverse-previewers work).

Tips from the Dataverse Community
---------------------------------

Expand Down
16 changes: 15 additions & 1 deletion doc/sphinx-guides/source/installation/config.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2364,11 +2364,25 @@ Refer to "Physical Files Validation in a Dataset" API :ref:`dataset-files-valida

Also refer to the "Datafile Integrity" API :ref:`datafile-integrity`


:SendNotificationOnDatasetCreation
++++++++++++++++++++++++++++++++++

A boolean setting that, if true will send an email and notification to users when a Dataset is created. Messages go to those, other than the dataset creator,
who have the ability/permission necessary to publish the dataset. The intent of this functionality is to simplify tracking activity and planning to follow-up contact.

``curl -X PUT -d true http://localhost:8080/api/admin/settings/:SendNotificationOnDatasetCreation``

.. _:CVocConf:

:CVocConf
+++++++++

A JSON-structured setting that configures Dataverse to associate specific metadatablock fields with external vocabulary services and specific vocabularies/sub-vocabularies managed by that service. More information about this capability is available at :doc:`/admin/metadatacustomization`.

Scripts that implement this association for specific service protocols are maintained at https://github.com/gdcc/dataverse-external-vocab-support. That repository also includes a json-schema for validating the structure required by this setting along with an example metadatablock and sample :CVocConf setting values associating entries in the example block with ORCID and SKOSMOS based services.

``wget https://gdcc.github.io/dataverse-external-vocab-support/examples/config/cvoc-conf.json``

``curl -X PUT --upload-file cvoc-conf.json http://localhost:8080/api/admin/settings/:CVocConf``


Loading