Как правильно вставить информацию о лицензии в файл Jupyter Notebook? - PullRequest
0 голосов
/ 26 марта 2020

Я хочу опубликовать sh Блокнот Jupyter под лицензией Apache 2.0 и, следовательно, должен добавить заголовок лицензии в файл, как указано в файле лицензии Apache 2.0:

ПРИЛОЖЕНИЕ: Как применить лицензию Apache к вашей работе.

Чтобы применить лицензию Apache к вашей работе, приложите следующее шаблонное уведомление с полями, заключенными в квадратные скобки "[]", замененными на Ваша собственная идентификационная информация. (Не включайте скобки!) Текст должен быть заключен в соответствующий синтаксис комментария для формата файла. Мы также рекомендуем, чтобы имя файла или класса и описание цели были включены в ту же «печатную страницу», что и уведомление об авторском праве, для упрощения идентификации в сторонних архивах.

Copyright [yyyy] [имя владельца авторских прав ]

Лицензировано по лицензии Apache, версия 2.0 (далее «Лицензия»);
вы не можете использовать этот файл, кроме как в соответствии с Лицензией.
Вы можете получить копию Лицензия на

http://www.apache.org/licenses/LICENSE-2.0

Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по лицензии, распространяется на ОСНОВЕ «КАК ЕСТЬ»,
БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, express или подразумеваемых. См. Лицензию для конкретного c языка, регулирующего разрешения и ограничения по Лицензии.

Однако, просто добавив заголовок в качестве комментария 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
}

или

/*
 * 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 Notebook?

1 Ответ

0 голосов
/ 30 марта 2020

Некоторые решения:

1. Файл лицензии репозитория

Статья рекомендует просто добавить информацию о лицензии в содержащийся репозиторий. Это легко применить, но не соответствует руководящим указаниям. (Это неправильное место для обсуждения правовых аспектов.)

2. Уведомление о лицензии в виде содержимого

Можно добавить ячейку уценки в блокнот с информацией о лицензии. Это также легко применить, но не поддерживает автоматическую обработку, например, поисковыми системами.

3. Лицензия как поле пользовательских метаданных

Текущее определение формата тетради (v4.4) определяет только ключи authors, title, language_info, kernelspec и orig_nbformat в metadata, но также позволяет дополнительные ключи. Так что можно просто добавить, например, ключ license. В (отклоненном) запросе функции было предложено использование JSON -LD и schema.org для объявления лицензии и других метаданных. Адаптированное решение:

{
 "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
}

К сожалению, никакие дополнительные ключи не разрешены в узле root ноутбуков Jupyter, и неизвестные ключи будут удалены JupiterLab. Следовательно, @context и @type (CreativeWork) необходимо добавить в узел метаданных, что не на 100% правильно, поскольку весь документ (то есть узел root) является лицензированным CreativeWork. Это можно проверить, например, с помощью Googles Инструмент тестирования структурированных данных . Применение этого - немного больше работы, но я думаю, что оно соответствует руководящим принципам и поддерживает автоматическую обработку, например, поисковыми системами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...