├── Trails.jpg ├── .gitattributes ├── coala.md ├── LICENSE.txt ├── package.json ├── Trail.md ├── Entry.md ├── Collection.md ├── Step.md └── README.md /Trails.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memex/trails-proposal/HEAD/Trails.jpg -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | $ cat .gitattributes 2 | *.md linguist-language=Markdown 3 | **/*.md linguist-language=Markdown -------------------------------------------------------------------------------- /coala.md: -------------------------------------------------------------------------------- 1 | ``` 2 | { 3 | "@context": "http://www.w3.org/ns/anno.jsonld", 4 | "id": "fs:/ipfs//scene1", 5 | "type": "Annotation", 6 | "motivation": "classifying", 7 | "creator": "fs:/ipfs/QmParty", // COALA IP: party? 8 | "dc:description": "I classify the targeted media as scene 1", 9 | "body": "fs:/ipfs//vocab/scene", 10 | "target": { 11 | "type": "List", // show the items in this order 12 | "items": [ 13 | "fs:/ipfs//scene1/movie.mp4", 14 | "fs:/ipfs//scene1/hero.jpg", 15 | "fs:/ipfs//scene1/transcript.txt" 16 | ] 17 | } 18 | } 19 | ``` -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Edward Silverton 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "memex", 3 | "version": "1.0.0", 4 | "description": "This is a proposal for a method to define linear and nonlinear narrative 'trails' of content using the [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/).\r The goal is to permit a 'Memex-like' application where users 'bookmark' content in a local database which provides a searchable index and UI allowing [Entries](Entry.md) to be combined into [Collections](Collection.md), which in turn can be referenced in each [Step](Step.md) of a greater narrative [Trail](Trail.md). The elements of this model should be sufficiently decoupled as to allow remixing [Entries](Entry.md) and [Collections](Collection.md) into other narrative [Trails](Trail.md).\r The model makes use of 'meta-annotations' (annotations targeting annotations) to create the proposed structures.", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/memex/trails.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/memex/trails/issues" 17 | }, 18 | "homepage": "https://github.com/memex/trails#readme" 19 | } 20 | -------------------------------------------------------------------------------- /Trail.md: -------------------------------------------------------------------------------- 1 | 2 | # Trail 3 | 4 | Trails act as containers for one or more [Steps](Step.md). 5 | 6 | Steps determine their linking order via the `target` property. However, it is useful to know which trail(s) a given Step belongs to. 7 | 8 | It is also necessary to know which Step is the first in any given Trail. 9 | 10 | A Trail's target is an ordered list of one or more Steps. The first Step represents the entry point for the Trail. The following Steps can be in any order - likely the order in which they were added to the Trail. 11 | 12 | ### Motivation 13 | classifying 14 | 15 | ### Body 16 | memex.global/classes/trail 17 | 18 | ### Target 19 | - [Step](Step.md) 20 | - List of one or more [Steps](Step.md) 21 | 22 | ## Examples 23 | 24 | ``` 25 | { 26 | "@context": "http://www.w3.org/ns/anno.jsonld", 27 | "id": "memex.global/users/userid/trails/1", 28 | "type": "Annotation", 29 | "motivation": "classifying", 30 | "body": "memex.global/classes/trail", 31 | "dc:title": "Trail 1", 32 | "dc:description": "I classify the targeted steps as part of trail 1", 33 | "target": { 34 | "type": "List", 35 | "items": [ 36 | "memex.global/users/userid/steps/1", 37 | "memex.global/users/userid/steps/2", 38 | "memex.global/users/userid/steps/3", 39 | "memex.global/users/userid/steps/4" 40 | ] 41 | } 42 | } -------------------------------------------------------------------------------- /Entry.md: -------------------------------------------------------------------------------- 1 | 2 | # Entry 3 | 4 | Entries bookmark or describe a resource or [fragment](https://www.w3.org/TR/annotation-model/#fragment-selector) of a resource. 5 | 6 | These are the basic units of a 'memex-like' application. They are records of items of interest that a user may wish to assemble into a narrative [Trail](Trail.md). 7 | 8 | An Entry could target a whole file of any type, or select a fragment within it using a [fragment selector](https://www.w3.org/TR/annotation-model/#fragment-selector). 9 | 10 | Examples of selectors: 11 | 12 | - movie.mp4#t=30,60 13 | - image.jpg#xywh=100,100,300,300 14 | - text.txt#char=0,100 15 | 16 | ### Motivation 17 | - bookmarking 18 | - describing 19 | 20 | ### Body 21 | - none 22 | - Resource 23 | - Choice 24 | 25 | ### Target 26 | - Resource 27 | - Fragment 28 | 29 | ## Examples 30 | 31 | ### Bookmarking, no body 32 | 33 | ``` 34 | { 35 | "@context": "http://www.w3.org/ns/anno.jsonld", 36 | "id": "memex.global/users/userid/entries/1", 37 | "type": "Annotation", 38 | "motivation": "bookmarking", 39 | "target": "fs:/ipfs/#t=30,60" 40 | } 41 | ``` 42 | 43 | ### Describing, single body 44 | 45 | ``` 46 | { 47 | "@context": "http://www.w3.org/ns/anno.jsonld", 48 | "id": "memex.global/users/userid/entries/1", 49 | "type": "Annotation", 50 | "motivation": "describing", 51 | "body": "fs:/ipfs/", 52 | "target": "fs:/ipfs/#t=30,60" 53 | } 54 | ``` 55 | 56 | ### Describing, choice of body 57 | 58 | ``` 59 | { 60 | "@context": "http://www.w3.org/ns/anno.jsonld", 61 | "id": "memex.global/users/userid/entries/1", 62 | "type": "Annotation", 63 | "motivation": "describing", 64 | "body": { 65 | "type": "Choice", // multiple languages 66 | "items": [ 67 | { 68 | "type": "TextualBody", 69 | "value": "Awesome scene", 70 | "format": "text/html", 71 | "language" : "en" 72 | }, 73 | { 74 | "type": "TextualBody", 75 | "value": "Fantastische Szene", 76 | "format": "text/html", 77 | "language" : "de" 78 | } 79 | ] 80 | }, 81 | "target": "fs:/ipfs/#t=30,60" 82 | } 83 | ``` -------------------------------------------------------------------------------- /Collection.md: -------------------------------------------------------------------------------- 1 | 2 | # Collection 3 | 4 | Collections act as containers for one or more [Entries](Entry.md). 5 | 6 | If [Steps](Step.md) are like slides in a Powerpoint presentation, Collections are the set of individual pieces of content ([Entries](Entry.md)) to include in them. 7 | 8 | ### Motivation 9 | classifying 10 | 11 | ### Body 12 | memex.global/classes/collection 13 | 14 | ### Target 15 | - [Entry](Entry.md) 16 | - List of one or more [Entries](Entry.md) 17 | - Composite of one or more [Entries](Entry.md) 18 | 19 | ## Examples 20 | 21 | ### Single target 22 | 23 | ``` 24 | { 25 | "@context": "http://www.w3.org/ns/anno.jsonld", 26 | "id": "memex.global/users/userid/collections/1", 27 | "type": "Annotation", 28 | "motivation": "classifying", 29 | "body": "memex.global/classes/collection", 30 | "dc:title": "Collection 1", 31 | "dc:description": "I classify the targeted entries as collection 1", 32 | "target": "memex.global/users/userid/entries/1" 33 | } 34 | ``` 35 | 36 | ### Multiple ordered targets 37 | 38 | ``` 39 | { 40 | "@context": "http://www.w3.org/ns/anno.jsonld", 41 | "id": "memex.global/users/userid/collections/1", 42 | "type": "Annotation", 43 | "motivation": "classifying", 44 | "body": "memex.global/classes/collection", 45 | "dc:title": "Collection 1", 46 | "dc:description": "I classify the targeted entries as collection 1", 47 | "target": { 48 | "type": "List", // show the items in this order 49 | "items": [ 50 | "memex.global/users/userid/entries/1", 51 | "memex.global/users/userid/entries/2", 52 | "memex.global/users/userid/entries/3" 53 | ] 54 | } 55 | } 56 | ``` 57 | 58 | ### Multiple unordered targets 59 | 60 | ``` 61 | { 62 | "@context": "http://www.w3.org/ns/anno.jsonld", 63 | "id": "memex.global/users/userid/collections/2", 64 | "type": "Annotation", 65 | "motivation": "classifying", 66 | "body": "memex.global/classes/collection", 67 | "dc:title": "Collection 2", 68 | "dc:description": "I classify the targeted entries as collection 2", 69 | "target": { 70 | "type": "Composite", // show the items in any order 71 | "items": [ 72 | "memex.global/users/userid/entries/4, 73 | "memex.global/users/userid/entries/5", 74 | "memex.global/users/userid/entries/6" 75 | ] 76 | } 77 | } 78 | ``` 79 | -------------------------------------------------------------------------------- /Step.md: -------------------------------------------------------------------------------- 1 | 2 | # Step 3 | 4 | Steps describe individual parts of a [Trail](Trail.md), linking one [Collection](Collection.md) to zero or more subsequent Steps. 5 | 6 | Think of Steps as like slides in a Powerpoint presentation or segments of a video. Unlike a 'linear' presentation however, they can be followed by n Steps, allowing 'non linear' or 'branching' presentations. 7 | 8 | Subsequent Steps can be defined in ordered Lists or unordered Composites. This could serve as a hint to a consuming application as to how to display them. 9 | 10 | ### Motivation 11 | linking 12 | 13 | ### Body 14 | [Collection](Collection.md) 15 | 16 | ### Target 17 | - none 18 | - [Step](Step.md) 19 | - List of zero or more [Steps](Step.md) 20 | - Composite of zero or more [Steps](Step.md) 21 | 22 | ## Examples 23 | 24 | ### Single target (linear) 25 | 26 | ``` 27 | { 28 | "@context": "http://www.w3.org/ns/anno.jsonld", 29 | "id": "memex.global/users/userid/steps/1", 30 | "type": "Annotation", 31 | "motivation": "linking", 32 | "dc:title": "Step 1", 33 | "dc:description": "I'm the first part of trail1 linking collection 1 to step 2", 34 | "body": "memex.global/users/userid/collections/1", 35 | "target": "memex.global/users/userid/steps/2" // linear 36 | } 37 | ``` 38 | 39 | ### Multiple ordered targets (non linear) 40 | ``` 41 | { 42 | "@context": "http://www.w3.org/ns/anno.jsonld", 43 | "id": "memex.global/users/userid/steps/2", 44 | "type": "Annotation", 45 | "motivation": "linking", 46 | "dc:title": "Step 2", 47 | "dc:description": "I'm the second part of trail1 linking collection2 to step 3 and step 4", 48 | "body": "memex.global/users/userid/collections/2", 49 | "target": { 50 | "type": "List", // specific order 51 | "items": [ 52 | "memex.global/users/userid/steps/3", 53 | "memex.global/users/userid/steps/4" 54 | ] 55 | } 56 | } 57 | ``` 58 | 59 | ### Multiple unordered targets (non linear) 60 | ``` 61 | { 62 | "@context": "http://www.w3.org/ns/anno.jsonld", 63 | "id": "memex.global/users/userid/steps/2", 64 | "type": "Annotation", 65 | "motivation": "linking", 66 | "dc:title": "Step 2", 67 | "dc:description": "I'm the second part of trail1 linking collection2 to step 3 and step 4", 68 | "body": "memex.global/users/userid/collections/2", 69 | "target": { 70 | "type": "Composite", // no specific order 71 | "items": [ 72 | "memex.global/users/userid/steps/3", 73 | "memex.global/users/userid/steps/4" 74 | ] 75 | } 76 | } 77 | ``` -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Introduction 3 | 4 | This is a proposal for a method to define linear and nonlinear narrative 'trails' of content using the [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/). 5 | The goal is to permit a 'Memex-like' application where users 'bookmark' content in a local database which provides a searchable index and UI allowing [Entries](Entry.md) to be combined into [Collections](Collection.md), which in turn can be referenced in each [Step](Step.md) of a greater narrative [Trail](Trail.md). The elements of this model should be sufficiently decoupled as to allow remixing [Entries](Entry.md) and [Collections](Collection.md) into other narrative [Trails](Trail.md). 6 | The model makes use of 'meta-annotations' (annotations targeting annotations) to create the proposed structures. 7 | 8 | ## Example 9 | 10 | ![](Trails.jpg) 11 | *Elements contained within a dotted element outline are targets of the containing element.* 12 | 13 | This example shows: 14 | 15 | - One [Trail](Trail.md) 16 | 17 | - Four [Steps](Step.md) 18 | 19 | - Four [Collections](Collection.md) 20 | 21 | - Twelve [Entries](Entry.md) 22 | 23 | ## Presentation 24 | 25 | A client application would display these linked elements using whatever layout/navigation strategy it sees fit. 26 | One example of a layout strategy might be to show each Step in a Trail as a slide in a slide presentation. The contents of each slide would be dereferenced from the Collection specified in the Step's `body`. Collections serve as a means to show one or more Entries per narrative Step. Each Step targets 0 or more subsequent Steps. These might be used to provide navigation to the next slide, or slides in the case of a nonlinear/branching presentation. 27 | Collections and Steps can both make use of Lists or Composites to specify whether their respective targets should be displayed in a particular order. 28 | 29 | ## P2P 30 | In the original decentralised spirit of the Memex, it is possible to store these JSON-LD annotations in a peer-to-peer content-addressable network such as [IPFS](https://ipfs.io/). To do so, the `@id` property must be excluded as per [this discussion](https://github.com/ipfs/notes/issues/152#issuecomment-239153915). 31 | Content IRIs can take the form `fs:/ipfs//`. The consuming application is responsible for interpreting and routing these IRIs. 32 | 33 | ## Questions 34 | 35 | - Authors of Trails may wish to include a `viewingHint` property to give consuming clients a hint as to how to best present the content e.g. `"memex:viewingHint": "iiif"`. 36 | - What is the correct syntax for a `dc:description` with multiple languages? 37 | 38 | ## Background and inspiration 39 | 40 | "There is a new profession of trail blazers, those who find delight in the task of establishing useful trails through the enormous mass of the common record." -- Vannevar Bush (1945) 41 | 42 | [Wikipedia](https://en.wikipedia.org/wiki/Memex): "Memex is the name of the hypothetical proto-hypertext system that Vannevar Bush described in his 1945 The Atlantic Monthly article '[As We May Think](http://www.theatlantic.com/magazine/archive/1945/07/as-we-may-think/303881/)'. Bush describes the Memex as an electromechanical device enabling individuals to develop and read a large self-contained research library, create and follow associative trails of links and personal annotations, and recall these trails at any time to share them with other researchers. This device would closely mimic the associative processes of the human mind, but it would be gifted with permanent recollection." 43 | 44 | Bush: "With one item in its grasp, [the human mind] snaps instantly to the next that is suggested by the association of thoughts, in accordance with some intricate web of trails carried by the cells of the brain. It has other characteristics, of course; trails that are not frequently followed are prone to fade, items are not fully permanent, memory is transitory. Yet the speed of action, the intricacy of trails, the detail of mental pictures, is awe-inspiring beyond all else in nature. Man cannot hope fully to duplicate this mental process artificially, but he certainly ought to be able to learn from it." (As We May Think, Section 6) 45 | 46 | "The basic idea of [associative indexing] is a provision whereby any item may be caused at will to select immediately and automatically another. This is the essential feature of the memex. The process of tying two items together is the important thing...The user taps a single key, and the items are permanently joined...When numerous items have been thus joined together to form a trail, they can be reviewed in turn, rapidly or slowly, by deflecting a lever like that used for turning the pages of a book. It is exactly as though the physical items had been gathered together from widely separated sources and bound together to form a new book. It is more than this, for any item can be joined into numerous trails." (As We May Think, Section 7) 47 | 48 | USECASE#1 (Bush): "The owner of the memex, let us say, is interested in the origin and properties of the bow and arrow. Specifically he is studying why the short Turkish bow was apparently superior to the English long bow in the skirmishes of the Crusades. He has dozens of possibly pertinent books and articles in his memex. First he runs through an encyclopedia, finds an interesting but sketchy article, leaves it projected. Next, in a history, he finds another pertinent item, and ties the two together. Thus he goes, building a trail of many items. Occasionally he inserts a comment of his own, either linking it into the main trail or joining it by a side trail to a particular item. When it becomes evident that the elastic properties of available materials had a great deal to do with the bow, he branches off on a side trail which takes him through textbooks on elasticity and tables of physical constants. He inserts a page of longhand analysis of his own. Thus he builds a trail of his interest through the maze of materials available to him." (As We May Think, Section 7) 49 | 50 | USECASE#2 (Bush): "...And his trails do not fade. Several years later, his talk with a friend turns to the queer ways in which a people resist innovations, even of vital interest. He has an example, in the fact that the outraged Europeans still failed to adopt the Turkish bow. In fact he has a trail on it. A touch brings up the code book. Tapping a few keys projects the head of the trail. A lever runs through it at will, stopping at interesting items, going off on side excursions. It is an interesting trail, pertinent to the discussion. So he sets a reproducer in action, photographs the whole trail out, and passes it to his friend for insertion in his own memex, there to be linked into the more general trail." (As We May Think, Section 7) 51 | --------------------------------------------------------------------------------