将 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 用于所有可用字段)