Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

{toc}

#+OPTIONS H:2


h1. Linked Data Platform: Overview
h2

h1. slide: Sir Tim's rules
h3. Think of them as opportunities!
h3. - Use URIs as names for things
h3. - Use HTTP URIs so that people can look up those names.
h3. - When someone looks up a URI, provide useful information, using the
standards (RDF*, SPARQL)
h3. - Include links to other URIs. so that they can discover more things.
h2

h1. slide: image: promised land of linked data
A graph image shows collections and objects connected, browseable,
across repositories, across collections, "data reunification".
h2

h1. slide: What is the goal of the LDP?
h3. - help publish Sir Tim-compliant linked data
h3. - reduce pain of normalizing your existing data to a standard
h3. - create a shared CRUD API for LD applications
h3. - reduce pain of supporting existing LD query and access applications
h3. - enable enhanced containers with custom schemes
h2

h1. slide: Why Fedora adopted it
h3. - ensure resolveable HTTP URIs (c.f. Sir Tim)
h3. - expand Fedora's shared API to common container use cases
h3. - avoid local reinvention of basic models (folder hierarchy)
h3. - Do so without sacrificing local flexibility (content models)
h3. - leverage performance of ModeShape JMS


h1. LDP Server
h2

h1. slide: what an LDP server does
h3. - an API for building and serving RDF and binaries
h3. - an RDF terminology for expressing a tree of resources
h3. - an pattern for arbitrarily enhancing this tree of resources
h3. - an request pattern for RDF subsets (LDPath, Link Prefer)
h3. - Fedora's /rest endpoint is an LDP server
h2

h1. slide: LDP Types
h3. Fedora supports all of the LDP resource types
[LDP
Types|http://www.w3.org/TR/ldp/images/ldpc-hierarchy.png] RDF Sources
Sources are simply RDF documents. They can be retrieved in many forms.
Non-RDF Sources are binary and text files, not RDF.  Containers are
RDF sources that also contain other resources.  There are a few kinds
of containers, but let's start with the basic use case.
h2

h1. slide: Create a LDP-RS RDF Source
First let's create an RDF document that describes a high-level
collection.  For this we are making just one REST request.  Note: All
these REST examples are available as an import files for the POSTMan
REST client (JSON format) (Switch to POSTMan, open LDAP collection,
load "Create Pythagoras collection")

Let's create a collection for Pythagoras [insert Create collection
REST]

Now we have an RDF resource that makes a few assertions about the
collection and Pythagoras himself.  You can see that the resource may
contain arbitrary RDF statements including blank nodes. He is
interested in this thing he calls "Geometry", but it is a blank node
in this graph. Nothing here says container yet.

Find *ldp:RDFSource* type in response.
h4

h1. LDP-NR Non-RDF Source (a datastream, binary/text)
Now let's add a surrogate image to the collection that will represent
it visually.

[insert Add image REST]
h2

h1. slide: LDP-C Container
Now get let's GET the Pythagoras collection.  Find *ldp:Container* type in
response. Now it is both a container and an RDFSourceRDF source. Find the
contains image triple in response.
h4

h1. slide LDP-BC Basic Container
Pythagoras is now an example of a LDP basic container. If you post new
resources to a basic container, they become the object of an
*ldp:Contains* triple. When you post new resources to any object in
Fedora it will become a *ldp:Container* and accumulate contains
triples
for all children.
h2

h1. slide: Okay, use LDP Containers and you are done!
Okay, so from now on you need to use LDP for containment.  Throw away
whatever triples you used before.

Just kidding. Nobody wants to have a standard imposed on them.  You
especially cannot tell RDF people to use any particular terminology.
LDP is designed to please RDF people.  It gives you the flexibility to
continue to use your own vocabulary while adopting the standard.  This
also helps when supporting legacy applications and domain-specific
vocabularies.

Let's look at how this works.
h2

h1. slide: LDP-DC Direct Container
[diagram Direct container graph]

You can migrate to LDP and continue to use your own vocabulary.  This
is done by establishing what are called membership triples.  An LDP
direct container allows you to customize this set of membership
relationships.  You do that by setting a few additional triples on the
container: ldp:hasMemberRelation or ldp:isMemberOfRelation - specifies
the predicate and position of container/child in the member triple
- sets custom predicate for the form X-Container
<predicate> Y-Child
- sets custom predicate for the form Y-Child
<predicate> X-Container

Let's create a direct container within our pythagoras collection.
Provides a REST API to manage relationships within your RDF. to
embedded RDF resources (e.g. liabilities/assets)
h4.

h1. LDP-IC Indirect Container
Another We will use it to list the people who cite him as an
influence.  Our membership triple influence. We
will manage the people he influenced within an LDP container, but we
will also express the relationship between Pythagoras and each person
in FOAF.

Our membership triples will be of the form X
wasInfluencedBy Pythagoras#he
h2. "Platform" for more specific descriptionsX#me influencedBy
Pythagoras#me


h1. slide: uses in Fedora
h2

h1. content negotiation of formats supported
h3

h1. turtle, N3, JSON-LD, RDF/XML
h2

h1. slide LDPath queries
[LDPath spec|http://wiki.apache.org/marmotta/LDPath] Properties of a
resource can be selected via XPath-style LDPath queries.  Let's you
get just the information you need about a resource.
h3

h1. slide: Simple query example
h3

h1. slide: Complex query example