Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beta build, 6/5, version diffs #12

Merged
merged 86 commits into from
Jun 5, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
cd139dc
SWORD: rather than creator, check for Permission.DestructiveEdit #3385
pdurbin May 21, 2014
521d6ad
Adding datasets and datasets via API - DONE.
michbarsinai May 21, 2014
9a50a4a
no more manual dataset creation! use JSON thanks to Michael!
pdurbin May 21, 2014
e604e46
Dataset version API endpoint now specifies x.y versioning, NOT the ve…
michbarsinai May 21, 2014
2dbe883
Can now delete a permission from a role (closes #4012)
michbarsinai May 21, 2014
725fe65
Add Version difference functionality
sekmiller May 21, 2014
2dd2b35
Fix display issue - also added isEmpty check to added data check
sekmiller May 22, 2014
47430b2
Fix Compare Primitive and check empty for deleted data
sekmiller May 22, 2014
c99cf80
Start of Differences by Metadata Block
sekmiller May 22, 2014
2a8a116
Add File Info to Differences by Block Pop up
sekmiller May 22, 2014
976ccf9
Add Added and Deleted Data to the By Block Popup
sekmiller May 22, 2014
6e0e705
Merge origin/master
mheppler May 22, 2014
678d323
Moved file ingest logic from the dataset page and into ingestService.
landreev May 22, 2014
5d42569
More functionality moved from DatasetPage and into the Ingest Service.
landreev May 22, 2014
f812ffd
cosmetic: removed some dead, commented-out code from datasetpage.
landreev May 22, 2014
d606492
progress on SWORD file upload (look in zip, get filename, etc.) #3385
pdurbin May 22, 2014
d075c1d
Merge origin/master
mheppler May 23, 2014
426b5a6
upload trees.png in test via SWORD. APIs FTW!
pdurbin May 23, 2014
c5d7693
Updated the website to link to http://datascience.iq.harvard.edu/
May 23, 2014
6ecf17c
SWORD: ensure multifile zips work, error on bad zips #3385
pdurbin May 23, 2014
7cfdb98
Updated .js on the dataverse.xhtml page to fix bug #3935. The breadc…
raprasad May 23, 2014
7b20c0d
Merge branch 'master' of github.com:IQSS/dataverse
raprasad May 23, 2014
cd0c449
Removed commented out alert from .js file
raprasad May 23, 2014
3b36d31
Changed <image tag to <img tag for bug #4030
raprasad May 23, 2014
823f0ff
start using new ingestService.createDataFile method #3385
pdurbin May 23, 2014
517b4ff
cause.getMessage() was null for homemade.zip, added check
pdurbin May 27, 2014
03eeef0
Merge origin/master
mheppler May 27, 2014
7d6fef0
more work on deleting datasets via SWORD #3385
pdurbin May 27, 2014
b01035d
Merge origin/master
mheppler May 27, 2014
8d9d62b
enable publishing of datasets via SWORD #3385
pdurbin May 27, 2014
009c253
Committing progress on cleaning up the UI for Roles + Permissions. Mo…
mheppler May 27, 2014
84ab3d6
Merge origin/master
mheppler May 27, 2014
92df151
Modified ingest of metadata extracted from (fits) files, to properly …
landreev May 28, 2014
d213de8
enforce auth and other SWORD cleanup #3385
pdurbin May 28, 2014
8a0aea3
SWORD cleanup of filename handling #3385
pdurbin May 28, 2014
2975f21
Added a real uniqueness check on compound fields, comparing compound …
landreev May 28, 2014
7088103
SWORD cleanup (especially globalId handling) #3385
pdurbin May 28, 2014
b65b5a9
Changed the sizing of PDF thumbnails, to match the resizing rules
landreev May 28, 2014
d542da8
Merge branch 'master' of github.com:IQSS/dataverse_temp
landreev May 28, 2014
a0af16d
Cleaned up the spacing and wrapping issues for selected facets that a…
mheppler May 29, 2014
551b936
allow file deletion via SWORD #3385
pdurbin May 29, 2014
998c636
Adding some subsetting optimization code I've been working on.
landreev May 29, 2014
489be9e
No extra html tags in the header (closes #3903)
michbarsinai May 30, 2014
0d140d2
AbstractVoidCommand can no get any DvObject (not jsut Dataverse). Clo…
michbarsinai May 30, 2014
35988af
Removed "Setup" from the Edit Dataverse dropdown menu and moved the S…
mheppler May 30, 2014
44acc14
Revise the version differences notes
sekmiller May 30, 2014
8f070f4
fix build. DeleteDataFileCommand changed in 0d140d2
pdurbin May 30, 2014
797123d
Fix format issue for commas
sekmiller May 30, 2014
5970789
Ticket #4033: Moved the 'inherit assignments' checkbox to the top
michbarsinai May 30, 2014
e43f5f2
Merge branch 'master' of github.com:IQSS/dataverse
michbarsinai May 30, 2014
b0d6d4c
move publish dataverse rules from front to back end #3225
pdurbin May 30, 2014
3ec905f
manage-roles page working with the new setup
michbarsinai Jun 2, 2014
c22507e
API now deals properly with updating of the DRAFT versions of dataset…
michbarsinai Jun 2, 2014
1b4163e
DeleteDatasetCommand now triggers indexing (closes #4040)
michbarsinai Jun 2, 2014
7ef9761
Cleaned up the UI of the version differences popup. Added some static…
mheppler Jun 2, 2014
2367ff5
API change - PUT is used to create or update the DRAFT version of a d…
michbarsinai Jun 2, 2014
80cd546
Merge origin/master
mheppler Jun 2, 2014
4b9944e
post-beta (beta 2?) FITS parsing plugin patch.
landreev Jun 3, 2014
3753ce4
one last cosmetic fix... no need to adjust the end time, if no exposu…
landreev Jun 3, 2014
6af8b19
one more last fix to the fits plugin...
landreev Jun 3, 2014
76ec05f
purely cosmetic - rearranged some commented-out and documented code l…
landreev Jun 3, 2014
62bbe85
Added an API call to release a dataset
michbarsinai Jun 3, 2014
c019da4
Terminology clean-up: 'release' ---> 'publish'
michbarsinai Jun 3, 2014
81e1c3a
Some internal optimizations for subsetting; used in the summary stati…
landreev Jun 3, 2014
1794e43
changed call from ReleaseDatasetCommand to PublishDatasetCommand
scolapasta Jun 3, 2014
03e0e92
changed call from ReleaseDataverseCommand to PublishDataverseCommand
scolapasta Jun 3, 2014
994985b
Minor cleanup to get the roles + permissions page a little more organ…
mheppler Jun 3, 2014
8f398d3
Vagrant working again, documented, tests added
pdurbin Jun 4, 2014
b07cc01
Added API to publish a dataverse. This closes #4035
michbarsinai Jun 4, 2014
7103752
build war inside Vagrant VM if need be
pdurbin Jun 4, 2014
403b14f
Get 3.x file differences
sekmiller Jun 4, 2014
fbc1a22
converting API beans to return proper responses (#3712)
michbarsinai Jun 4, 2014
9fba117
Merge branch 'master' of github.com:IQSS/dataverse
michbarsinai Jun 4, 2014
9a01c5b
Changed summary note from Data File to File
sekmiller Jun 4, 2014
8b866f4
More work on converting API responses (#3712)
michbarsinai Jun 4, 2014
4a463fa
Merge branch 'master' of github.com:IQSS/dataverse
michbarsinai Jun 4, 2014
d13f572
a couple of last minute fits fixes.
landreev Jun 4, 2014
bb2420c
Another change to the date formatting.
landreev Jun 4, 2014
4373299
More API response code work (#3712)
michbarsinai Jun 4, 2014
1fa864d
Merge branch 'master' of github.com:IQSS/dataverse
michbarsinai Jun 4, 2014
329b9f3
Order changed fields by display order for Ver Diff Pop-up
sekmiller Jun 4, 2014
71cd4ef
progress on fronting glassfish with apache #1096 #2657
pdurbin Jun 4, 2014
36b7dad
Cleaned up multiple UI issues for the version differences dialog popup.
mheppler Jun 4, 2014
6d8d630
Fix File Differences when there are no changes
sekmiller Jun 5, 2014
e648bd0
Fix issue of going from "0" to "1" compound field
sekmiller Jun 5, 2014
c52d4c1
Updated documentation
michbarsinai Jun 5, 2014
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
8 changes: 6 additions & 2 deletions Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,11 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

config.vm.provision "shell", path: "scripts/setup/asadmin-setup.sh"
config.vm.provision "shell", path: "scripts/vagrant/deploy.sh"
config.vm.provision "shell", path: "scripts/vagrant/test.sh"

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# accessing "localhost:8888" will access port 8080 on the guest machine.
config.vm.network "forwarded_port", guest: 8080, host: 8888

# Create a private network, which allows host-only access to the machine
Expand All @@ -41,10 +42,13 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# FIXME: use /dataverse/downloads instead
config.vm.synced_folder "downloads", "/downloads"
config.vm.synced_folder "target", "/builds"
# FIXME: use /dataverse/conf instead
config.vm.synced_folder "conf", "/conf"
# FIXME: use /dataverse/scripts instead
config.vm.synced_folder "scripts", "/scripts"
config.vm.synced_folder ".", "/dataverse"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
Expand Down
19 changes: 19 additions & 0 deletions conf/httpd/conf.d/dataverse.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
ProxyPass / ajp://localhost:8009/

# From https://wiki.apache.org/httpd/RewriteHTTPToHTTPS

RewriteEngine On
# This will enable the Rewrite capabilities

RewriteCond %{HTTPS} !=on
# This checks to make sure the connection is not already HTTPS

#RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/dvn/api/data-deposit/?(.*) https://%{SERVER_NAME}/dvn/api/data-deposit/$1 [R,L]
# This rule will redirect users from their original location, to the same location but using HTTPS.
# i.e. http://www.example.com/foo/ to https://www.example.com/foo/
# The leading slash is made optional so that this will work either in httpd.conf
# or .htaccess context

# [#GLASSFISH-20694] Glassfish 4.0 and jk Unable to populate SSL attributes - Java.net JIRA - https://java.net/jira/browse/GLASSFISH-20694
#SSLOptions +StdEnvVars +ExportCertData
11 changes: 11 additions & 0 deletions doc/Sphinx/source/Developers/tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,14 @@ created. You can edit this file to configure PageKite to serve up port 8080
(the default GlassFish HTTP port) or the port of your choosing.

According to https://pagekite.net/support/free-for-foss/ PageKite (very generously!) offers free accounts to developers writing software the meets http://opensource.org/docs/definition.php such as Dataverse.

Vagrant
+++++++

Vagrant allows you to spin up a virtual machine running Dataverse on
your development workstation.

From the root of the git repo, run ``vagrant up`` and eventually you
should be able to reach an installation of Dataverse at
http://localhost:8888 (or whatever forwarded_port indicates in the
Vagrantfile)
2 changes: 1 addition & 1 deletion doc/Sphinx/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Other Resources
Additional information about the Dataverse Project itself
including presentations, information about upcoming releases, data
management and citation, and announcements can be found at
`http://thedata.org <http://thedata.org/>`__
`http://datascience.iq.harvard.edu/ <http://datascience.iq.harvard.edu/>`__

**User Group**

Expand Down
2 changes: 1 addition & 1 deletion scripts/api/data-deposit/create-dataset
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
DATAVERSE_ALIAS=peteTop
curl --insecure --data-binary "@scripts/api/data-deposit/data/atom-entry-study.xml" -H "Content-Type: application/atom+xml" https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/collection/dataverse/$DATAVERSE_ALIAS \
curl -s --insecure --data-binary "@scripts/api/data-deposit/data/atom-entry-study.xml" -H "Content-Type: application/atom+xml" https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/collection/dataverse/$DATAVERSE_ALIAS \
| xmllint -format -
9 changes: 7 additions & 2 deletions scripts/api/data-deposit/delete-dataset
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
#GLOBAL_ID=hdl:TEST/12345
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12`
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
# https://redmine.hmdc.harvard.edu/issues/3993
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
#curl --insecure -X DELETE https://$DVN_SERVER/api/datasets/$DATABASE_ID?key=$USERNAME
curl --insecure -i -X DELETE https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit/study/$GLOBAL_ID
#| xmllint -format -
14 changes: 14 additions & 0 deletions scripts/api/data-deposit/delete-file
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash -x
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
if [ -z "$1" ]; then
FILE_ID=`scripts/api/data-deposit/show-files | cut -d'/' -f1`
#echo $FILE_ID
#exit
else
FILE_ID=$1
fi
#curl --insecure -X DELETE https://$DVN_SERVER/api/datasets/$DATABASE_ID?key=$USERNAME
curl --insecure -i -X DELETE https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit-media/file/$FILE_ID
#| xmllint -format -
9 changes: 7 additions & 2 deletions scripts/api/data-deposit/list-datasets
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
DATAVERSE_ALIAS=peteTop
curl --insecure https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/collection/dataverse/$DATAVERSE_ALIAS \
if [ -z "$1" ]; then
DATAVERSE_ALIAS=peteTop
#DATAVERSE_ALIAS=root
else
DATAVERSE_ALIAS=$1
fi
curl --insecure -s https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/collection/dataverse/$DATAVERSE_ALIAS \
| xmllint -format -
11 changes: 11 additions & 0 deletions scripts/api/data-deposit/pipeline
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env ruby
require "rexml/document"
include REXML
service_document = Document.new `scripts/api/data-deposit/service-document`
collection = XPath.first(service_document, "//collection/@href")
puts collection

puts "Getting first title from #{collection}"
feed_of_studies = Document.new `scripts/api/data-deposit/show-collection #{collection}`
title = XPath.first(feed_of_studies, "//title")
puts title
14 changes: 14 additions & 0 deletions scripts/api/data-deposit/publish-dataset
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/sh
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
# We cat /dev/null so that contentLength is zero. This makes headersOnly true:: https://github.com/swordapp/JavaServer2.0/blob/sword2-server-1.0/src/main/java/org/swordapp/server/ContainerAPI.java#L338
# 'to tell curl to read the format from stdin you write "@-"' -- http://curl.haxx.se/docs/manpage.html
cat /dev/null | curl -s --insecure -X POST -H "In-Progress: false" --data-binary @- https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit/study/$GLOBAL_ID \
| xmllint --format -
13 changes: 13 additions & 0 deletions scripts/api/data-deposit/publish-dataverse
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/sh
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
if [ -z "$1" ]; then
echo "Please supply a dataverse alias"
exit 1
else
DATAVERSE_ALIAS=$1
#DATAVERSE_ALIAS=peteTop
fi
cat /dev/null | curl -s --insecure -X POST -H "In-Progress: false" --data-binary @- https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit/dataverse/$DATAVERSE_ALIAS \
| xmllint --format -
12 changes: 11 additions & 1 deletion scripts/api/data-deposit/service-document
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
#!/bin/bash
curl --insecure https://pete:pete@localhost:8181/dvn/api/data-deposit/v1/swordv2/service-document | xmllint -format -
USERNAME=pete
PASSWORD=$USERNAME
if [ -z "$1" ]; then
HOSTNAME=localhost:8181
else
HOSTNAME=$1
fi
URL=https://$HOSTNAME/dvn/api/data-deposit/v1/swordv2/service-document
echo Retrieving service document from $URL >&2
curl --insecure -u $USERNAME:$PASSWORD $URL \
| xmllint -format -
8 changes: 6 additions & 2 deletions scripts/api/data-deposit/show-atom-entry
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
#GLOBAL_ID=hdl:TEST/12345
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12`
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
curl --insecure -s https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit/study/$GLOBAL_ID \
| xmllint -format -
10 changes: 10 additions & 0 deletions scripts/api/data-deposit/show-collection
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash
USERNAME=pete
PASSWORD=pete
if [ -z "$1" ]; then
echo "Please provide a URL"
else
URL=$1
fi
curl --insecure -s -u $USERNAME:$PASSWORD $URL
#| xmllint -format -
2 changes: 1 addition & 1 deletion scripts/api/data-deposit/show-files
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/sh
#scripts/api/data-deposit/show-statement | xpath "//entry/content/@*[name()='type' or name()='src']"
scripts/api/data-deposit/show-statement | xpath '//entry/id/text()' | cut -d'/' -f11,12
scripts/api/data-deposit/show-statement | xpath '//entry/id/text()' | cut -d'/' -f11,12,13
7 changes: 6 additions & 1 deletion scripts/api/data-deposit/show-statement
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,12 @@
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12`
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
curl --insecure -s https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/statement/study/$GLOBAL_ID \
| xmllint -format - \
#| xpath '//entry/title'
12 changes: 12 additions & 0 deletions scripts/api/data-deposit/unsupported-download-files
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/sh
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
curl -s --insecure https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit-media/study/$GLOBAL_ID \
| xmllint -format -
9 changes: 8 additions & 1 deletion scripts/api/data-deposit/upload-file
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,13 @@
USERNAME=pete
PASSWORD=pete
DVN_SERVER=localhost:8181
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12`
if [ -z "$1" ]; then
GLOBAL_ID=`scripts/api/data-deposit/list-datasets | xpath '//id/text()' | cut -d'/' -f11,12,13`
else
GLOBAL_ID=$1
#GLOBAL_ID=doi:10.5072/FK2/5555
fi
curl -s --insecure --data-binary @scripts/api/data-deposit/data/example.zip -H "Content-Disposition: filename=example.zip" -H "Content-Type: application/zip" -H "Packaging: http://purl.org/net/sword/package/SimpleZip" https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit-media/study/$GLOBAL_ID \
| xmllint -format -
#curl -s --insecure --data-binary @scripts/search/data/binary/trees.zip -H "Content-Disposition: filename=trees.zip" -H "Content-Type: application/zip" -H "Packaging: http://purl.org/net/sword/package/SimpleZip" https://$USERNAME:$PASSWORD@$DVN_SERVER/dvn/api/data-deposit/v1/swordv2/edit-media/study/$GLOBAL_ID \
#| xmllint -format -
7 changes: 4 additions & 3 deletions scripts/api/data/dataset-bad-missingInitialVersion.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"authority":"anAuthority",
"identifier":"dataset-one",
"protocol":"chadham-house-rule"
"authority": "anAuthority",
"identifier": "dataset-one",
"persistentUrl": "http://dx.doi.org/10.5072/FK2/9",
"protocol": "chadham-house-rule"
}
Loading