将 ckan 许可证添加到来自 java 的上传文件
Add ckan license to uploaded file from java
我创建了一个 java 客户端,可以将文件上传到 ckan 安装。我想在文件上添加许可证。从 ckan 文档中,我看到 ckan 安装上有一个 json 文件,其中包含所有可用的许可证,但我不确定如何在我的客户端上使用它
来自 ckan docs
的示例
licenses_group_url = file:///path/to/my/local/json-list-of-licenses.json
licenses_group_url = http://licenses.opendefinition.org/licenses/groups/od.json
我的部分客户端程序是
ContentBody cbFile = new FileBody(file, ContentType.TEXT_HTML);
HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("file", cbFile)
.addPart("key", new StringBody(uploadFileName+date,ContentType.TEXT_PLAIN))
.addPart("package_id",new StringBody("test2",ContentType.TEXT_PLAIN))
.addPart("url",new StringBody(HOST+"/files/"+date+"/test.txt",ContentType.TEXT_PLAIN))
.addPart("upload",cbFile)
.addPart("comment",new StringBody("comments",ContentType.TEXT_PLAIN))
.addPart("notes", new StringBody("notes",ContentType.TEXT_PLAIN))
.addPart("author",new StringBody("AuthorName",ContentType.TEXT_PLAIN))
.addPart("author_email",new StringBody("AuthorEmail",ContentType.TEXT_PLAIN))
.addPart("title",new StringBody("title",ContentType.TEXT_PLAIN))
.addPart("description",new StringBody("file Desc"+date,ContentType.TEXT_PLAIN))
.build();
更新
在 Odis 提示后,我意识到我一直都错了(显然)。
事实证明,文件的许可自动设置为数据集的许可。我在没有许可证的情况下将文件上传到数据集,所以我的文件没有许可证。当我用这个
.addPart("license_id", new StringBody("CC-BY-4.0",ContentType.TEXT_PLAIN))
我的文件仍然没有获得许可。当我更改我的数据集的许可证时,无论我是否使用该命令,或者即使它与其他许可证 ID 一起使用,我仍然获得与数据集相同的许可证。
老实说,这对我来说毫无意义。我不能拥有具有某些许可证的数据集,而我的某些文件使用不同的许可证吗?有人可以确认一下吗?
你说的JSON是license_group_file
。
如果您查看其中一个条目,它们看起来像这样:
{
status: "active",
maintainer: "Creative Commons",
od_conformance: "approved",
family: "",
osd_conformance: "not reviewed",
domain_data: true,
title: "Creative Commons Attribution 4.0",
is_okd_compliant: true,
domain_content: true,
url: "https://creativecommons.org/licenses/by/4.0/",
is_osi_compliant: "not reviewed",
domain_software: false,
id: "CC-BY-4.0"
}
如您所见,有一个 id
字段。这是您在创建数据集时可以使用的内容。只需在名为 license_id
的字段中传递许可证的值(在上面的示例中 CC-BY-4.0
)(see the docs 用于所有可用字段)
我创建了一个 java 客户端,可以将文件上传到 ckan 安装。我想在文件上添加许可证。从 ckan 文档中,我看到 ckan 安装上有一个 json 文件,其中包含所有可用的许可证,但我不确定如何在我的客户端上使用它 来自 ckan docs
的示例licenses_group_url = file:///path/to/my/local/json-list-of-licenses.json
licenses_group_url = http://licenses.opendefinition.org/licenses/groups/od.json
我的部分客户端程序是
ContentBody cbFile = new FileBody(file, ContentType.TEXT_HTML);
HttpEntity reqEntity = MultipartEntityBuilder.create()
.addPart("file", cbFile)
.addPart("key", new StringBody(uploadFileName+date,ContentType.TEXT_PLAIN))
.addPart("package_id",new StringBody("test2",ContentType.TEXT_PLAIN))
.addPart("url",new StringBody(HOST+"/files/"+date+"/test.txt",ContentType.TEXT_PLAIN))
.addPart("upload",cbFile)
.addPart("comment",new StringBody("comments",ContentType.TEXT_PLAIN))
.addPart("notes", new StringBody("notes",ContentType.TEXT_PLAIN))
.addPart("author",new StringBody("AuthorName",ContentType.TEXT_PLAIN))
.addPart("author_email",new StringBody("AuthorEmail",ContentType.TEXT_PLAIN))
.addPart("title",new StringBody("title",ContentType.TEXT_PLAIN))
.addPart("description",new StringBody("file Desc"+date,ContentType.TEXT_PLAIN))
.build();
更新
在 Odis 提示后,我意识到我一直都错了(显然)。
事实证明,文件的许可自动设置为数据集的许可。我在没有许可证的情况下将文件上传到数据集,所以我的文件没有许可证。当我用这个
.addPart("license_id", new StringBody("CC-BY-4.0",ContentType.TEXT_PLAIN))
我的文件仍然没有获得许可。当我更改我的数据集的许可证时,无论我是否使用该命令,或者即使它与其他许可证 ID 一起使用,我仍然获得与数据集相同的许可证。
老实说,这对我来说毫无意义。我不能拥有具有某些许可证的数据集,而我的某些文件使用不同的许可证吗?有人可以确认一下吗?
你说的JSON是license_group_file
。
如果您查看其中一个条目,它们看起来像这样:
{
status: "active",
maintainer: "Creative Commons",
od_conformance: "approved",
family: "",
osd_conformance: "not reviewed",
domain_data: true,
title: "Creative Commons Attribution 4.0",
is_okd_compliant: true,
domain_content: true,
url: "https://creativecommons.org/licenses/by/4.0/",
is_osi_compliant: "not reviewed",
domain_software: false,
id: "CC-BY-4.0"
}
如您所见,有一个 id
字段。这是您在创建数据集时可以使用的内容。只需在名为 license_id
的字段中传递许可证的值(在上面的示例中 CC-BY-4.0
)(see the docs 用于所有可用字段)