Jupyter notebook 将许可证信息嵌入Jupyter笔记本文件的正确方法是什么?
我想在Apache 2.0许可证下发布Jupyter笔记本,因此需要向文件中添加许可证头,如Apache 2.0许可证文件中所述: 附录:如何将Apache许可证应用于您的工作 要将Apache许可证应用于您的工作,请附加以下内容 样板通知,字段用括号“[]”括起 替换为您自己的识别信息。(不包括 括号!)文本应包含在适当的 文件格式的注释语法。我们还建议 文件或类名以及用途说明应包含在 与版权声明相同的“打印页”,以便于 第三方档案中的标识 版权[yyyy][版权所有人姓名] 根据Apache许可证2.0版(以下简称“许可证”)获得许可Jupyter notebook 将许可证信息嵌入Jupyter笔记本文件的正确方法是什么?,jupyter-notebook,Jupyter Notebook,我想在Apache 2.0许可证下发布Jupyter笔记本,因此需要向文件中添加许可证头,如Apache 2.0许可证文件中所述: 附录:如何将Apache许可证应用于您的工作 要将Apache许可证应用于您的工作,请附加以下内容 样板通知,字段用括号“[]”括起 替换为您自己的识别信息。(不包括 括号!)文本应包含在适当的 文件格式的注释语法。我们还建议 文件或类名以及用途说明应包含在 与版权声明相同的“打印页”,以便于 第三方档案中的标识 版权[yyyy][版权所有人姓名] 根据Apache
除非遵守许可证,否则不得使用此文件。
您可以通过以下方式获得许可证副本: 除非适用法律要求或书面同意,软件 根据许可证分发的内容是按“原样”分发的,
没有任何形式的保证或条件,无论是明示的还是明示的 暗指的。请参阅特定语言的许可证 许可证下的权限和限制 但是,仅将标题添加为JavaScript注释将使笔记本无效:
//
// Copyright ...
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
{
"cells": [...],
"metadata": {...},
"nbformat": 4,
"nbformat_minor": 4
}
或
这两个都不会被JupiterLab加载
我还注意到,有一个顶级键metadata
,它应该是添加许可证信息的正确位置。但是,未定义用于添加许可证信息的密钥
将许可证信息嵌入Jupyter笔记本文件的正确方法是什么?一些解决方案:
1.存储库许可证文件
建议只将许可证信息添加到包含的存储库中。这很容易应用,但不符合指导原则。(在这里讨论法律问题是错误的。)
2.许可通知作为内容
可以在笔记本中添加带有许可证信息的降价单元格。这也很容易应用,但不支持搜索引擎等自动处理
3.许可证作为自定义元数据字段
当前版本只定义了作者
、标题
、语言信息
、内核规范
、以及元数据
中的源格式
,但也允许添加键。因此,只需添加一个许可证
密钥即可。在(被拒绝的)功能请求中,建议声明许可证和其他元数据。经过调整的解决方案:
{
"cells": [...],
"metadata": {
"@context": {
"CreativeWork": "http://schema.org/CreativeWork",
"Organization": "http://schema.org/Organization",
"Person": "http://schema.org/Person",
"author": "http://schema.org/author",
"copyrightHolder": "http://schema.org/copyrightHolder",
"copyrightYear": "http://schema.org/copyrightYear",
"license": "http://schema.org/license",
"name": "http://schema.org/name",
"title": "http://schema.org/name",
"url": "http://schema.org/url"
},
"@type": "CreativeWork",
"author": [
{
"@type": "Person",
"name": "<full author name>",
"@id": "<some identifier URI, e.g. an ORCID URI>",
"url": "<person website URL>"
}
],
"copyrightHolder": [
{
"@type": "Organization",
"name": "<full organization name>",
"url": "<organization website URL>"
},
{
"@type": "Person",
"name": "<full author name>",
"@id": "<some identifier URI, e.g. an ORCID URI>",
"url": "<person website URL>"
}
],
"copyrightYear": <year as yyyy>,
"kernelspec": {...},
"language_info": {...},
"license": "<license URL>",
"title": "<title of the notebook>"
"nbformat": 4,
"nbformat_minor": 4
}
{
“单元格”:[…],
“元数据”:{
“@context”:{
“创造性工作”:http://schema.org/CreativeWork",
“组织”:http://schema.org/Organization",
“人”:http://schema.org/Person",
“作者”:http://schema.org/author",
“版权持有人”:http://schema.org/copyrightHolder",
“版权年”:http://schema.org/copyrightYear",
“许可证”:http://schema.org/license",
“名称”:http://schema.org/name",
“标题”:http://schema.org/name",
“url”:”http://schema.org/url"
},
“@type”:“CreativeWork”,
“作者”:[
{
“@type”:“Person”,
“名称”:“,
“@id”:”,
“url”:”
}
],
“版权持有人”:[
{
“@type”:“组织”,
“名称”:“,
“url”:”
},
{
“@type”:“Person”,
“名称”:“,
“@id”:”,
“url”:”
}
],
“版权年”:,
“内核规范”:{…},
“语言信息”:{…},
“许可证”:“,
“标题”:”
“nbformat”:4,
“NBU小调”:4
}
不幸的是,jupyter笔记本的根节点中不允许有额外的密钥,JupiterLab将删除未知密钥。因此,需要将@context
和@type
(CreativeWork
)添加到元数据节点中,因为整个文档(即根节点)并非100%正确是许可的CreativeWork
。可以用谷歌等进行测试。应用这项技术需要更多的工作,但我认为,它符合指导原则,并支持搜索引擎等自动处理。一些解决方案:
1.存储库许可文件
建议只将许可证信息添加到包含的存储库中。这很容易应用,但不符合指导原则。(在这里讨论法律方面是错误的。)
2.许可证通知作为内容
可以在笔记本中添加一个带有许可证信息的降价单元格。这也很容易应用,但不支持搜索引擎等自动处理
3.许可证作为自定义元数据字段
当前版本只定义了作者
,标题
,语言信息
,内核规范
,以及元数据
中的原始格式
,但也允许添加其他密钥。因此,只需在a中添加一个许可证
密钥即可(已拒绝)功能请求时,建议声明许可证和其他元数据。一种改进的解决方案:
{
"cells": [...],
"metadata": {
"@context": {
"CreativeWork": "http://schema.org/CreativeWork",
"Organization": "http://schema.org/Organization",
"Person": "http://schema.org/Person",
"author": "http://schema.org/author",
"copyrightHolder": "http://schema.org/copyrightHolder",
"copyrightYear": "http://schema.org/copyrightYear",
"license": "http://schema.org/license",
"name": "http://schema.org/name",
"title": "http://schema.org/name",
"url": "http://schema.org/url"
},
"@type": "CreativeWork",
"author": [
{
"@type": "Person",
"name": "<full author name>",
"@id": "<some identifier URI, e.g. an ORCID URI>",
"url": "<person website URL>"
}
],
"copyrightHolder": [
{
"@type": "Organization",
"name": "<full organization name>",
"url": "<organization website URL>"
},
{
"@type": "Person",
"name": "<full author name>",
"@id": "<some identifier URI, e.g. an ORCID URI>",
"url": "<person website URL>"
}
],
"copyrightYear": <year as yyyy>,
"kernelspec": {...},
"language_info": {...},
"license": "<license URL>",
"title": "<title of the notebook>"
"nbformat": 4,
"nbformat_minor": 4
}
{
“单元格”:[…],
“元数据”:{
“@context”:{
“创造性工作”:http://schema.org/CreativeWork",
“组织”:http://schema.org/Organization",
“人”:http://schema.org/Person",
“作者”:http://schema.org/author",
“版权持有人”:http://schema.org/copyrightHolder",
“版权年”:http://schema.org/copyrightYear",
“许可证”:http://schema.org/license",
“名称”:http://schema.org/name",
“标题”:http://schema.org/name",
“url”:”http://schema.org/url"
},
“@type”:“CreativeWork”,
“作者”:[
{
“@type”:“Person”,
“名称”:“,
“@id”:”,
“url”:”
}
],
“版权持有人”:[
{
“@type”:“组织”,
“名称”:“,
“url”:”
},
{
“@type”:“Person”,
“名称”:“,
“@id”:”,
“url”:”
}
],
“抄袭