Fork me on GitHub

OpenLink Software logo

64px OSDE icon
OSDE
The OpenLink Structured Data Editor

     

Why is OSDE Important?

The World Wide Web (or simply, the Web) was originally conceived as a Read-and-Write medium, but even now, with user-created content filling many web surfers' screens, most usage remains Read-Only.

OSDE bolsters the growing Write dimension by letting users create structured data using the familiar File Create → Save → Share pattern, without forcing a document storage location, i.e., documents created with OSDE may be stored to the desktop or to virtually anywhere in the cloud.

Features of OSDE

How do I use OSDE?

Overview

Metaphorically, as in the real-word —

  1. You write sentences to a document (e.g., a page in a book).
  2. Sentences in a page are grouped by paragraphs. OSDE groups statements by attribute (predicate) to emulate this concept.
  3. A document may be part of a collection — like one of many pieces of paper in a folder, pages in a chapter, or chapters in a book. When writing to a SPARQL server, OSDE treats each document as a named graph.

Somewhat more elaborately —

  • You write "entity → attribute → value" statements or "subject → predicate → object" triples to a document, which is identified by an HTTP-scheme URL.
  • Entity and Attribute (or, if you prefer RDF parlance, Subject and Predicate) are each identified by an HTTP URI, which may be absolute or relative to the document. Value (a/k/a Object) may be either a literal string or a URI.
  • Sentence/Statement collections are grouped by Attribute (Predicate), and this is the basis for optimistic concurrency hashes constructed for handling multi-user editing activity against the same document.

You can get started by creating a brand new document or applying edits to an existing document.

Using an existing OSDE Instance, Local or Hosted

Basic Usage

  1. Set a location for your document. This could be a folder to contain a new document, or the target document itself.
  2. Open your document from its location.
  3. Add or edit RDF Language statements using any of the view options — defaults are Statements, Entities, Attributes, Values. Configuration options let you change these labels to Triples, Subjects, Predicates, Objects.
  4. Save your document to your desktop (via download link) or to a remote cloud location that supports one of:
  5. Done.

Demonstration of Turtle Input

  1. Start OSDE with a New Document.

    PNG of OSDE demo starting point

  2. From the Action menu, select Input Turtle Directly. Paste or type your Turtle, and click Import.

    PNG of OSDE demo Turtle input

  3. Inspect and/or edit the imported data in Statements view.

    PNG of OSDE demo Statements view

  4. Inspect and/or edit the imported data in Entities (Subjects) view.

    PNG of OSDE demo Entities (Subjects) view

  5. Inspect and/or edit the imported data in Attributes (Predicates) view.

    PNG of OSDE demo Attributes (Predicates) view

  6. Inspect and/or edit the imported data in Values (Objects) view.

    PNG of OSDE demo Values (Objects) view

Usage Screencasts

Here are a couple of silent screencasts showing OSDE in action, through loose coupling to the OpenLink Structured Data Sniffer (OSDS), which exposes OSDE as its Annotation feature.

  • OpenLink RDF Editor Demo -- Open Data Flow

  • OSDS & OSDE Integration Demo — Beyond Bookmarking Annotation Feature

Deploying a new OSDE instance

If you don't have an existing OSDE instance, deployment takes just a few simple steps, which vary with your HTTP server.

  • For deployment on Virtuoso Enterprise Edition 7.2+, there are version-specific VAD packages (rdf_editor_dav.vad).
  • For deployment on any other HTTP server, including Virtuoso Open Source Edition or Virtuoso Enterprise Edition ≤7.1, there is a ZIP archive (rdf_editor_pkg.zip).

Apache

  1. Download and install Apache (v2.x).
  2. Extract RDF Editor:

    unzip rdf_editor_pkg.zip -d [PATH]

  3. Add new drectory (/rdf-edtor) with RDF Editor to the server configuration.
  4. Start Apache Server.

    [APACHE HOME]/bin/httpd

  5. Load this URI in your web browser:

    http://localhost:[port]/rdf-editor/index.html

IIS

  1. Start IIS.
  2. Extract RDF Editor:

    unzip rdf_editor_pkg.zip -d [IIS Root Path]

  3. Load this URI in your web browser:

    http://localhost:[port]/rdf-editor/index.html

Node.js

  1. Download and install Node.js.
  2. Download and install NPM manager.
  3. Install the node.js http-server (a simple, zero-configuration command-line http server) globally, so that it may be run from the command line:

    npm install http-server -g

  4. Extract RDF Editor:

    unzip rdf_editor_pkg.zip -d [RDF Editor Path]

  5. Start the HTTP Server:

    http-server [RDF Editor Path]/rdf-editor [options]

  6. Load this URI in your web browser:

    http://localhost:[port]/index.html

Tomcat

  1. Download and install Tomcat (v8.x).
  2. Start Tomcat.

    [TOMCAT HOME]/bin/startup

  3. Extract RDF Editor:

    unzip rdf_editor_pkg.zip -d [TOMCAT HOME]/webapps/Root

  4. Load this URI in your web browser:

    http://localhost:[port]/rdf-editor/index.html

Virtuoso Enterprise Edition 7.2+

  1. In the Virtuoso Conductor, navigate to the System AdminPackages tab, and use the Install Packages section to install the OSDE VAD package, called rdf_editor_dav.vad.
    • If not yet listed, download the rdf_editor_dav.vad package for your version of Virtuoso from our repository.
  2. OSDE will be available at a URL similar to that below, where cname is the {hostname}:{port-number} at which your Virtuoso instance is listening.

    http://{cname}/rdf-editor/index.html

Virtuoso Open Source Edition or Enterprise Edition ≤7.1

  1. Mount your Virtuoso DAV repository to your local filesystem.
  2. Unzip the RDF Editor ZIP archive to your preferred location in the DAV tree.
  3. If desired, use the Virtuoso Conductor to configure a vdir to listen at, for instance, http://{cname}/rdf-editor/index.html, and expose the physical location you chose for the extraction.

Custom Crafting OSDE-Controlling URIs

You can use an XHR-oriented parameterized URL to load the Editor with a number of UI choices already made. Several examples follow the parameter details, all based on the URI Template —

http://{cname}/rdf-editor/#/editor(?uri,ioType,saveDocument,newDocument,view,newStatement,statement:subject,
statement:predicate,statement:object)

URL Parameters

Usable with READ-oriented GET and POST Methods

  • newDocument — Drops current OSDE content before next action. Optional values: true or false.
  • uriURL encoded URI of the resource to be opened by OSDE.
  • view — The editor view is identified by one of the following values:
    • statements or triples — The default view. Always valid.
    • entities or subjects — The default view when statement:subject is set. Invalid when statement:predicate or statement:object is set.
    • attributes or predicates — The default view when statement:predicate is set. Invalid when statement:subject or statement:object is set.
    • values or objects— The default view when statement:object is set. Invalid when statement:subject or statement:predicate is set.
  • newStatement — The editor will be opened in 'new statement' state.
  • statement:subjectURL encoded URI value to be initially used as the subject of new statements. If the view parameter is omitted, the editor is opened in Subjects view. When this parameter is used, the enabled values for the view parameter are statements and subjects.
  • statement:predicateURL encoded URI value to be initially used as the predicate of new statements. If the view parameter is omitted, the editor is opened in Predicates view. When this parameter is used, the enabled values for the view parameter are statements and predicates.
  • statement:objectURL encoded URI value to be initially used as the object of new statements. If the view parameter is omitted, the editor is opened in Objects view. When this parameter is used, the enabled values for the view parameter are statements and objects.

Usable with WRITE-oriented POST Methods

  • uriURL encoded URI of the resource to be written by OSDE.
  • ioType — Protocol to use to access the target resource. Optional values:
    • webdav — The document will be accessed using WebDAV protocol
    • ldp — The document will be accessed using LDP protocol
    • sparql — The document will be accessed using SPARQL protocol
    • http — The document will be accessed using HTTP protocol
  • sparqlEndpointURL encoded URI that identifies SPARQL endpoint to be used when source document content is identified by a SPARQL CONSTRUCT or DESCRIBE query results URL
  • saveDocument — Save current content to document identified by the Document URI. Optional values: true or false

Custom URI Examples

[1] Open 'New Document' using 'Statements' view with specific 'Entity' for new Statement

Place Editor in 'New Document' state with current Entity identified by <http://dbpedia.org/resource/DBpedia> as the Entity of the initial EAV Statement, using 'Statements' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?newDocument=true&statement:entity=http%3A%2F%2Fdbpedia.org%2Fresource%2FDBpedia&view=statements

[2] Open 'New Document' using 'Entities' view with specific 'Entity' for new Statement

Place Editor in 'New Document' state with current Entity identified by <http://dbpedia.org/resource/DBpedia> as the Entity of the initial EAV Statement, using 'Entities' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?newDocument=true&statement:entity=http%3A%2F%2Fdbpedia.org%2Fresource%2FDBpedia&view=entities

[3] Open 'New Document' using 'Attributes' view with specific 'Attribute' for new Statement

Place Editor in 'New Document' state with current Entity identified by <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> as the Attribute of the initial EAV Statement, using 'Attributes' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?newDocument=true&statement:attribute=http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23type&view=attributes

[4] Open 'New Document' using 'Values' view with specific 'Value' for new Statement

Place Editor in 'New Document' state with current Value identified by "Initial Value" as the Value of the initial EAV Statement, using 'Values' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?newDocument=true&statement:value=%22Initial%20Value%22&view=values

[5] Open existing document using default (i.e., 'Statements') view

Opens up the Description of <https://dbpedia.org/resource/DBpedia> in the Editor, using the default EAV 'Statements' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?uri=http%3A%2F%2Fdbpedia.org%2Fresource%2FDBpedia

[6] Open existing document forcing 'Statements' (default) view

Opens up the Description of <https://dbpedia.org/resource/DBpedia> in the Editor, using the default EAV 'Statements' view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?uri=http%3A%2F%2Fdbpedia.org%2Fresource%2FDBpedia&view=statements

[7] Open existing document using default 'Statements' view

Opens up <https://dbpedia.org/ontology/Company> in the Editor, using the default Statements view —

http://linkeddata.uriburner.com/rdf-editor/#/editor?uri=http:%2F%2Fdbpedia.org%2Fontology%2FCompany

[8] Open existing document in 'Statements' view with specific 'Entity' for new Statement

Opens up <https://s3.amazonaws.com/webid-sandbox/Profile/Basic-Identity-Claims-And-Profile-Document.ttl> in the Editor, using Statements view, with <http://dbpedia.org/resource/DBpedia> set as the Entity of an additional Statement —

http://linkeddata.uriburner.com/rdf-editor/#/editor?uri=https:%2F%2Fs3.amazonaws.com%2Fwebid-sandbox%2FProfile%2FBasic-Identity-Claims-And-Profile-Document.ttl&statement:entity=http%3A%2F%2Fdbpedia.org%2Fresource%2FDBpedia&view=statements

Troubleshooting

CORS Error: {document} failed to load - this could be related to missing CORS settings on the server.

This somewhat cryptic error message results from a complex set of web browser and web server behaviors and design choices. If you encounter a message like this, please see our detailed discussion of Cross-Origin Resource Sharing (CORS) Errors.