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

de-clawing #1190

Merged
merged 2 commits into from
Jun 28, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 9 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,30 @@
# Welcome!

If you are reading this document then you are interested in contributing to Islandora CLAW. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
If you are reading this document then you are interested in contributing to Islandora 8. All contributions are welcome: use-cases, documentation, code, patches, bug reports, feature requests, etc. You do not need to be a programmer to speak up!
seth-shaw-unlv marked this conversation as resolved.
Show resolved Hide resolved

We also have an irc channel -- #islandora -- on freenode.net. Feel free to hang out there, ask questions, and help others out if you can.

Please note that this project operates under the [Islandora Community Code of Conduct](http://islandora.ca/codeofconduct). By participating in this project you agree to abide by its terms.

## Workflows

The group meets each Wednesday at 1:00 PM Eastern. Meeting notes and announcements are posted to the [Islandora community list](https://groups.google.com/forum/#!forum/islandora) and the [Islandora developers list](https://groups.google.com/forum/#!forum/islandora-dev). You can view meeting agendas, notes, and call-in information [here](https://github.com/Islandora-CLAW/CLAW/wiki#islandora-claw-tech-calls). Anybody is welcome to join the calls, and add items to the agenda.

### Use cases

If you would like to submit a use case to the Islandora CLAW project, please submit an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new) using the [Use Case template](https://github.com/Islandora-CLAW/CLAW/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.
If you would like to submit a use case to the Islandora 8 project, please submit an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new) using the [Use Case template](https://github.com/Islandora-CLAW/CLAW/wiki/Use-Case-template), prepending "Use Case:" to the title of the issue.

### Documentation

You can contribute documentation in two different ways. One way is to create an issue [here](https://github.com/Islandora-CLAW/CLAW/issues/new), prepending "Documentation:" to the title of the issue. Another way is by pull request, which is the same process as [Contribute Code](https://github.com/Islandora-CLAW/CLAW/blob/master/CONTRIBUTING.md#contribute-code). All documentation resides in [`docs`](https://github.com/Islandora-CLAW/CLAW/tree/master/docs).

### Request a new feature

To request a new feature you should [open an issue in the CLAW repository](https://github.com/Islandora-CLAW/CLAW/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.
To request a new feature you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) or create a use case (see the _Use cases_ section above), and summarize the desired functionality. Prepend "Enhancement:" if creating an issue on the project repo, and "Use Case:" if creating a use case.

### Report a bug

To report a bug you should [open an issue in the CLAW repository](https://github.com/Islandora-CLAW/CLAW/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.
To report a bug you should [open an issue in the Islandora 8 repository](https://github.com/Islandora-CLAW/CLAW/issues/new) that summarizes the bug. Prepend the label "Bug:" to the title of the issue.

In order to help us understand and fix the bug it would be great if you could provide us with:

Expand Down Expand Up @@ -66,4 +70,4 @@ You may want to read [Syncing a fork](https://help.github.com/articles/syncing-a

## License Agreements

The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose.
The Islandora Foundation requires that contributors complete a [Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_cla.pdf) or be covered by a [Corporate Contributor License Agreement](http://islandora.ca/sites/default/files/islandora_ccla.pdf). The signed copy of the license agreement should be sent to <a href="mailto:community@islandora.ca?Subject=Contributor%20License%20Agreement" target="_top">community@islandora.ca</a>. This license is for your protection as a contributor as well as the protection of the Foundation and its users; it does not change your rights to use your own contributions for any other purpose. A list of current CLAs is kept [here](https://github.com/Islandora/islandora/wiki/Contributor-License-Agreements).
6 changes: 3 additions & 3 deletions docs/islandora/drupal-bundle-configurations.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## Drupal Bundle Configurations

In Islandora CLAW, [content models](https://github.com/Islandora/islandora/wiki/Content-Models) are primarily created using content types (also known as node bundles) and media bundles. [Bundles](https://www.drupal.org/docs/8/api/entity-api/bundles) are defined by [YAML](http://befused.com/drupal/yaml) configuration files. [To create new content models](https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8), one would create the needed content types and media bundles via UI, then export the yml files related for those bundles using Configuration Synchronization (`http://localhost:8000/admin/config/development/configuration`) or [Features](https://www.drupal.org/project/features). An understanding about the structure of a bundle and various configuration files used to define it helps in creating and updating it.
In Islandora 8, [content models](https://github.com/Islandora/islandora/wiki/Content-Models) are primarily created using content types (also known as node bundles) and media bundles. [Bundles](https://www.drupal.org/docs/8/api/entity-api/bundles) are defined by [YAML](http://befused.com/drupal/yaml) configuration files. [To create new content models](https://www.drupal.org/docs/8/api/entity-api/creating-a-custom-content-type-in-drupal-8), one would create the needed content types and media bundles via UI, then export the yml files related for those bundles using Configuration Synchronization (`http://localhost:8000/admin/config/development/configuration`) or [Features](https://www.drupal.org/project/features). An understanding about the structure of a bundle and various configuration files used to define it helps in creating and updating it.

Content types and media bundles can be thought of as web [forms](https://www.drupal.org/docs/user_guide/en/structure-widgets.html) consisting of fields. Drupal provides [widgets](https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-widget) to define the behavior of a field and field storage to define how the data is stored in the database. Drupal provides various [display modes](https://www.drupal.org/docs/8/api/entity-api/display-modes-view-modes-and-form-modes) to show the forms to user when they are editing (Manage form display) or viewing (Manage display).
Content types and media bundles can be thought of as web [forms](https://www.drupal.org/docs/user_guide/en/structure-widgets.html) consisting of fields. Drupal provides [widgets](https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-widget) to define the behavior of a field and field storage to define how the data is stored in the database. Drupal provides various [display modes](https://www.drupal.org/docs/8/api/entity-api/display-modes-view-modes-and-form-modes) to show the forms to user when they are editing (Manage form display) or viewing (Manage display).

A content model is packaged as a module for installation. All yml files are put in `config/install` folder of the module. Note that not all content models would contain media bundles.

Expand Down Expand Up @@ -45,7 +45,7 @@ core.entity_view_display.node.your_content_type.default.yml
core.entity_view_display.node.your_content_type.teaser.yml
```

In addition, CLAW needs a RDF mapping to express the content in RDF and to sync to fedora. There will be one RDF mapping per bundle.
In addition, Islandora needs a RDF mapping to express the content in RDF and to sync to fedora. There will be one RDF mapping per bundle.
```
rdf.mapping.media.your_media_bundle.yml
rdf.mapping.node.your_content_type.yml
Expand Down
16 changes: 7 additions & 9 deletions docs/islandora/rdf-mapping.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
## RDF Mapping
RDF mapping is aligning drupal fields to RDF ontology properties. For example the `title` field of a content model can be mapped to `dcterms:title` and/or `schema:title`. In Islandora CLAW, triples expressed by these mappings get synced to Fedora and indexed in the Blazegraph triplestore.
RDF mapping is aligning drupal fields to RDF ontology properties. For example the `title` field of a content model can be mapped to `dcterms:title` and/or `schema:title`. In Islandora 8, triples expressed by these mappings get synced to Fedora and indexed in the Blazegraph triplestore.

Drupal provides default RDF mappings for its core entities. For instance, the article content type's RDF mapping is specified in the `rdf.mapping.node.page.yml` config. One can export this RDF mapping by going to Configuration Synchronization: `http://localhost:8000/admin/config/development/configuration/single/export`, selecting `RDF` for Configuration type and choosing `node.article`.

RDF mappings are defined/stored in Drupal as a YAML file. Currently, Drupal 8 does not have a UI to create/update RDF mappings to ontologies other than Schema.org. There is a project underway to develop a [UI](https://github.com/Islandora-CLAW/CLAW/issues/647) to support RDF mappings to any ontology. However, until then exporting/importing RDF yml files via Configuration Synchronization is the primary method to create/update RDF mappings.
RDF mappings are defined/stored in Drupal as a YAML file. Currently, Drupal 8 does not have a UI to create/update RDF mappings to ontologies other than Schema.org. There is a project underway to develop a [UI](https://github.com/Islandora-CLAW/CLAW/issues/647) to support RDF mappings to any ontology. However, until then exporting/importing RDF yml files via Configuration Synchronization is the primary method to create/update RDF mappings.

### Structure of RDF YAML file
Below is an example of RDF mapping. It is the current version of the RDF mapping of islandora collection content model (`rdf.mapping.node_type.collection.yml`). `types` specify the `rdf:type` of the resource or content model. `fieldMappings` specify all fields of that bundle and their RDF property mappings. One field can be mapped to more than one RDF property. It is a simple flat list.
Below is an example of RDF mapping. It is the current version of the RDF mapping of Islandora collection content model (`rdf.mapping.node_type.collection.yml`). `types` specify the `rdf:type` of the resource or content model. `fieldMappings` specify all fields of that bundle and their RDF property mappings. One field can be mapped to more than one RDF property. It is a simple flat list.

types and fieldMappings
```yml
Expand All @@ -21,7 +21,7 @@ dependencies:
module:
- islandora_collection
id: node.islandora_collection
targetEntityType: node
targetEntityType: node
bundle: islandora_collection
types:
- 'pcdm:Collection'
Expand Down Expand Up @@ -54,19 +54,17 @@ fieldMappings:
```

### Viewing RDF mapping of a resource
Please see the following tutorial to configure and view resources via REST request:
Please see the following tutorial to configure and view resources via REST request:
[An Introduction to RESTful Web Services in Drupal 8](https://drupalize.me/blog/201401/introduction-restful-web-services-drupal-8). To get the JsonLD mapping, use jsonld format. Example request url: `http://localhost:8000/node/1?_format=jsonld`

### Altering an existing RDF mapping
Each Islandora CLAW content models come with a RDF mapping. It can be exported similar to above article's rdf mapping, modified and imported back by going to here: `http://localhost:8000/admin/config/development/configuration/single/import`.
Each Islandora content models come with a RDF mapping. It can be exported similar to above article's rdf mapping, modified and imported back by going to here: `http://localhost:8000/admin/config/development/configuration/single/import`.

### Defining a new RDF mapping
A RDF mapping need to be created for a new or custom content model/type. The following steps describe the procedure:
* Export RDF mapping of a similar content type
* Export form display yml to get the list of the fields (ex `core.entity_form_display.node.your_content_type.default.yml`)
* Remove any cache and uuid related elements
* Add/modify the fields and ontology properties as needed, following the same syntax
* Name it following the convention (ex `rdf.mapping.node_type.your_content_type.yml`)
* Name it following the convention (ex `rdf.mapping.node_type.your_content_type.yml`)
* Import it by going to `http://localhost:8000/admin/config/development/configuration/single/import`


8 changes: 4 additions & 4 deletions docs/mvp/mvp_doc.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# Islandora CLAW MVP
# Islandora 8 MVP

## Motivation

The Islandora CLAW project is currently transitioning from a prototype into a competitive product, and has had a requirements change from integration with Drupal 7 to Drupal 8. In order to aid in that transition, we are defining the minimum viable product. This will defend against scope creep, give clearly defined goals for community members to work towards, and present the point at which the CLAW team feels the software is ready to be tested out in small installations.
The Islandora 8 project is currently transitioning from a prototype into a competitive product, and has had a requirements change from integration with Drupal 7 to Drupal 8. In order to aid in that transition, we are defining the minimum viable product. This will defend against scope creep, give clearly defined goals for community members to work towards, and present the point at which the development team feels the software is ready to be tested out in small installations.

Needless to say, since this is a minimum product, a lot of parts of the previous prototype are either going to get replaced by an existing project to ease the maintenance load, or be removed altogether until time and resources allow other development.


## High Level Features
These are what are considered the minimum requirements for a functional Islandora CLAW that is worthy of a 1.0.0 release.
These are what are considered the minimum requirements for a functional Islandora 8 that is worthy of a 1.0.0 release.


* Content modeled in Drupal as Entities using [PCDM](https://github.com/duraspace/pcdm/wiki) 1.0
Expand All @@ -30,7 +30,7 @@ These are what are considered the minimum requirements for a functional Islandor
### Overview
Islandora is composed of four broad categories of technologies. On one end, there is the administrative interface, which users and other clients will interact with. On the other is a repository, which will hold binary data and RDF triples. In between the two are connectors, which are small pieces of software that react to events from either administrative interface or the repository. These connectors will utilize microservices -- small utilities exposed as web services either internally or out on the internet at large.

![High Level Diagram of Islandora CLAW](https://raw.githubusercontent.com/Islandora-CLAW/CLAW/masterhttps://raw.githubusercontent.com/Islandora-CLAW/CLAW/master/docs/assets/image11.png)
![High Level Diagram of Islandora 8](https://raw.githubusercontent.com/Islandora-CLAW/CLAW/masterhttps://raw.githubusercontent.com/Islandora-CLAW/CLAW/master/docs/assets/image11.png)

### Administrative Interface

Expand Down
4 changes: 2 additions & 2 deletions docs/technical-documentation/drupal-project.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Introduction

Islandora CLAW makes use of [drupal-project](https://github.com/drupal-composer/drupal-project), a composer template for Drupal projects. We augment it with Islandora CLAW specific changes, and need to occasionally pull in upstream changes. The process below outlines how we will do it in a consistent manner.
Islandora 8 makes use of [drupal-project](https://github.com/drupal-composer/drupal-project), a composer template for Drupal projects. We augment it with Islandora specific changes, and need to occasionally pull in upstream changes. The process below outlines how we will do it in a consistent manner.

# Pull in upstream changes

Expand All @@ -10,7 +10,7 @@ Islandora CLAW makes use of [drupal-project](https://github.com/drupal-composer/
<br /> `git remote add upstream https://github.com/drupal-composer/drupal-project.git`
3. Fetch everything:
<br /> `git fetch --all`
4. Create a branch to pull in changes that is based off the Islandora-CLAW 8.x-1.x branch:
4. Create a branch to pull in changes that is based off the Islandora 8.x-1.x branch:
<br /> `git checkout -b sync-upstream`
5. Rebase upstream changes:
<br /> `git rebase upstream/8.x` (fix any merge conflicts, and then `git rebase --continue`)
Expand Down
2 changes: 1 addition & 1 deletion docs/technical-documentation/versioning.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Versioning Policy

Islandora CLAW uses [semantic versioning](http://semver.org/), except for Drupal modules.
Islandora 8 uses [semantic versioning](http://semver.org/), except for Drupal modules.

## Components

Expand Down
Loading