SlideShare une entreprise Scribd logo
1  sur  58
Center for 
Open 
Middleware 
Learning 
W3C Linked Data Platform 1.0 
with examples 
Nandana Mihindukulasooriya, 
Center for Open Middleware / Ontology Engineering Group 
Universidad Politécnica de Madrid, 
Spain. 
@nandanamihindu / nmihindu@fi.upm.es
Center for 
Open 
Middleware 
License 
2 
• This work is licensed under a Creative Commons Attribution- 
ShareAlike 4.0 International License. 
• You are free to: 
• Share — copy and redistribute the material in any medium or format 
• Adapt — remix, transform, and build upon the material 
for any purpose, even commercially. 
• Under the following terms: 
• Attribution — You must attribute by including a credits text stating 
• 'The slides are particially based on "Learning W3C Linked Data Platform 1.0 
with examples" by Nandana Mihindulasooriya, Ontology Engineering Group' 
• ShareAlike — If you remix, transform, or build upon the material, you 
must distribute your contributions under the same license as the 
original.
Center for 
Open 
Middleware 
Agenda 
3 
• Introduction 
• Examples 
• Looking up a Linked Data resource 
• Modifying a Linked Data resource 
• Creating Linked Data resources 
• Deleting a Linked Data resource 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Learning W3C Linked Data Platform 1.0 with examples 
INTRODUCTION 
4
Center for 
Open 
Middleware 
Back to the basics … 
5 
“Linked Data principles 
• Use URIs as names for things 
• Use HTTP URIs so that people can look up those 
names 
• When someone looks up a URI, provide useful 
information, using the standards (RDF*, SPARQL) 
• Include links to other URIs, so that they can 
discover more things” 
Tim Berners-Lee. Linked data-design issues (2006) http://www. w3.org/DesignIssues/LinkedData.html 
Leo Sauermann and Richard Cyganiak. Cool URIs for the Semantic Web (2008) http://www.w3.org/TR/cooluris/ 
Tom Heath and Christian Bizer. Linked Data: Evolving the Web into a Global Data Space (2011) http://linkeddatabook.com/
Center for 
Open 
Middleware 
Let´s see an example 
6 
Nandana Sampath 
Mihindukulasooriya 
http://id.nandana.org/card#me 
GET /card#me HTTP/1.1 
Host: id.nandana.org 
HTTP/1.1 200 ok 
OK 
Content-Type: text/turtle; charset=UTF-8 
Content-Length: 250 
content-type: text/turtle; charset=utf-8 
content-length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
(1) (2) 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
personalprofiledocument; 
foaf:primarytopic primaryTopic <<http://http://example.example.org/org/nandana#nandana#me> me> ; 
; 
dc:title ‘nandana’s Nandana’s foaf FOAF personal personal profile’ profile’ . 
. 
<http://example.org/nandana#me> a foaf:Person; 
person; 
foaf:name ‘Nandana nandana mihindukulasooriya’ Mihindukulasooriya’ ; 
. 
foaf:workplacehomepage <http://www.oeg-upm.net/> ; 
foaf:workplacehomepage <http://www.centeropenmiddleware.com/> 
; 
foaf:schoolhomepage <http://www.fi.upm.es/> ; 
foaf:topic_interest <http://dbpedia.org/resource/linked_data> ; 
foaf:based_near <http://dbpedia.org/resource/madrid> . 
(3) 
(4)
Center for 
Open 
Middleware 
Linked Data in practice 
7 
• Linked Data resources (documents) 
• easier to traverse, live data, less computational cost to the provider 
• slow querying 
• Public SPARQL endpoints 
• live data 
• high cost to the provider, low availability 
• Data dumps + private SPARQL endpoints 
• set up and maintenance cost, stale data, silos 
• high availability and performance 
• Linked Data Fragments 
• less workload on server, high availability 
• more bandwidth, slow querying 
LDP makes these 
resources LD+RW
Center for 
Open 
Middleware 
Linked Data Platform 1.0 
http://www.w3.org/TR/ldp/ 
8 
• A standard protocol for Read / Write Linked Data 
• Extensions to HTTP protocol 
• Pagination, ordering, partial updates, introspection, creation factories, 
collections 
• Standardization focused of interoperability 
• Developed by W3C Linked Data Platform Working Group 
• 54 participants from 32 organizations 
• Industry: IBM, Oracle, EMC, Fujitsu, OpenLink Software, Base22, … 
• Academia: Universidad Politécnica de Madrid, University of Oxford, DERI, 
Université de Lyon, INRIA, … 
• Progress: 
• W3C LDP Working Group is launched, June 2014, 
• W3C Last Call Working Draft (3), 7 September 2014, 
• W3C Proposed Recommendation, October-November 2014
Center for 
Open 
Middleware 
LDP Terminology 
9 
conforms to the lifecycle patterns and 
conventions defined in LDP 
state is fully represented in RDF 
state is NOT represented in RDF 
a special type of RDF Source that acts 
as 
• an enumeration of a collection of 
linked documents 
• a creation factory
Center for 
Open 
Middleware 
Learning W3C Linked Data Platform 1.0 with examples 
EXAMPLES 
10
Center for 
Open 
Middleware 
Few simple scenarios 
11 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Creating Linked Data Platform containers 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Looking up a Linked Data resource 
12 
Nandana´s 
FOAF file 
• a simple HTTP GET with 
• additional guarantees 
• LDP mandates some features that are optional in HTTP 
• e.g., e-tags, HEAD, OPTIONS 
• Some extensions 
• e.g., paging 
GET 
GET 
200 OK
Center for 
Open 
Middleware 
Looking up a Linked Data resource 
GET on LDPR 
13 
GET /nandana HTTP/1.1 
Host: example.org 
Accept: text/turtle 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type” 
ETag: “123456789” 
Allow: OPTIONS,HEAD,GET,PUT,PATCH 
Accept-Patch: text/ldpatch 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
foaf:primaryTopic <http://example.org/nandana#me> ; 
dc:title ‘Nandana’s FOAF file’ . 
<http://example.org/nandana#me> a foaf:Person; 
foaf:name ‘Nandana Mihindukulasooriya’; 
foaf:currentProject <http://www.seals-project.eu/> . 
GET 
200 OK
Center for 
Open 
Middleware 
Looking up a Linked Data document 
GET on LDPR 
14 
GET /nandana HTTP/1.1 
Host: example.org 
Accept: text/turtle 
HTTP/1.1 conformant has Turtle and JSON-LD representations advertises support for LDP 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type” 
ETag: “123456789” 
Allow: OPTIONS,HEAD,GET,PUT,PATCH 
Accept-Patch: text/ldpatch 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
advertises which operations are allowed provides an entity tag 
supports the OPTIONS,HEAD, and PATCH operations 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
foaf:primaryTopic <http://example.org/nandana#me> ; 
dc:title ‘Nandana’s FOAF file’ . 
<http://example.org/nandana#me> a foaf:Person; 
foaf:name ‘Nandana Mihindukulasooriya’; 
foaf:currentProject <http://www.seals-project.eu/> . 
advertises media types accepted by the PATCH method 
reuses existing vocabularies 
use standard vocabularies [ e.g., Dublin Core, RDF(S) ] 
has at least one rdf:type set explicitly
Center for 
Open 
Middleware 
Looking up a Linked Data document 
GET on LDPR with paging 
15 
GET /nandana HTTP/1.1 
Host: example.org 
Accept: text/turtle 
Prefer: return=representation; max-triple-count="500" 
HTTP/1.1 303 See Other 
Location: <http://example.org/nandana?page1> 
redirects to the first page 
GET 
303 See Other 
communicates support for LDP Paging and maximum desired size
Center for 
Open 
Middleware 
Looking up a Linked Data document 
GET on LDPR with paging 
communicates support for LDP Paging and maximum desired size 
GET 
16 
GET /nandana HTTP/1.1 
Host: example.org 
Accept: text/turtle 
Prefer: return=representation; max-triple-count="500" 
HTTP/1.1 303 See Other 
Location: <http://example.org/nandana?page1> 
GET /nandana?page1 HTTP/1.1 
Host: example.org 
Accept: text/turtle 
Prefer: return=representation; max-triple-count="500" 
HTTP/1.1 200 OK 
Content-Type: text/turtle 
ETag: "_87e52ce291112" 
Link: <http://www.w3.org/ns/ldp#Resource>; rel="type", <http://www.w3.org/ns/ldp#Page>; rel="type" 
Link: <http://example.org/customer-relations?p=2>; rel='next' 
Link: <http://example.org/nandana>; rel='canonical'; etag="_87e52ce291110" 
Allow: GET,OPTIONS,HEAD 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
foaf:primaryTopic <http://example.org/nandana#me> ; 
dc:title ‘Nandana’s FOAF file’ . 
<http://example.org/nandana#me> a foaf:Person; 
foaf:name ‘Nandana Mihindukulasooriya’; 
… 
redirects to the first page 
GET 
303 See Other 
GET 
advertises the response representation is a pa2g0e0 OK 
provides a link to the next page 
provides a link to resource being paged and the entity tag of complete resource
Center for 
Open 
Middleware 
Looking up a Linked Data document 
GET on LDPR with paging (optimized) 
17 
GET /nandana HTTP/1.1 
Host: example.org 
Accept: text/turtle 
Prefer: return=representation; max-triple-count="500“ 
Prefer: contents-of-related 
HTTP/1.1 209 Contents of Related 
Content-Type: text/turtle 
ETag: "_87e52ce291112" 
Link: <http://www.w3.org/ns/ldp#Resource>; rel="type", <http://www.w3.org/ns/ldp#Page>; rel="type" 
Link: <http://example.org/customer-relations?p=2>; rel='next' 
Link: <http://example.org/nandana>; rel='canonical'; etag="_87e52ce291110" 
Allow: GET,OPTIONS,HEAD 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
foaf:primaryTopic <http://example.org/nandana#me> ; 
dc:title ‘Nandana’s FOAF file’ . 
<http://example.org/nandana#me> a foaf:Person; 
foaf:name ‘Nandana Mihindukulasooriya’; 
… 
communicates support for LDP Paging and maximum desired size 
communicates that the client understand “contents-of-related” status code 
advertises the response representation is a page 
provides a link to the next page 
provides a link to resource being paged and the entity tag of complete resource
Center for 
Open 
Middleware 
Few simple scenarios 
18 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Modifying a Linked Data resource 
19 
• uses HTTP PUT or PATCH operations 
• encourages conditional requests to avoid “lost update” 
problem 
GET 
200 OK 
ETag: “123456789” 
If-Match: W/'123456789' 
PUT/PATCH 
Nandana´s 
FOAF file 
GET 
204 No Content 
Modify
Center for 
Open 
Middleware 
Modifying a Linked Data resource 
PUT on LDPR 
20 
PUT /nandana HTTP/1.1 
Host: example.org 
If-Match: W/'123456789' 
Content-Type: text/turtle 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
uses conditional requests 
<http://example.org/nandana> a foaf:PersonalProfileDocument; 
foaf:primaryTopic <http://example.org/nandana#me> ; 
dc:title ‘Nandana’s FOAF file’ . 
<http://example.org/nandana#me> a foaf:Person; 
foaf:name ‘Nandana Mihindukulasooriya’; 
foaf:currentProject <http://www.ldp4j.org/> . 
HTTP/1.1 204 No Content 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
modifies one triple 
PUT 
204 No Content
Center for 
Open 
Middleware 
Modifying a Linked Data resource 
PATCH on LDPR 
21 
PATCH /nandana HTTP/1.1 
Host: example.org 
If-Match: W/'123456789' 
Content-Type: text/ldpatch 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
Delete <http://example.org/nandana#me> foaf:currentProject <http://www.seals-project.eu/>. 
Add <http://example.org/nandana#me> foaf:currentProject <http://www.ldp4j.org/>. 
HTTP/1.1 204 No Content 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
uses conditional requests 
uses LDP Patch format 
PATCH 
204 No Content
Center for 
Open 
Middleware 
Modifying a Linked Data resource 
Constraint validation errors 
22 
publishes any constraints on create/update 
HTTP/1.1 422 Unprocessable Entity 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
Link: <http://example.org/constraints/101>; rel=‘http://www.w3.org/ns/ldp#constrainedBy’ 
422 Unprocessable Entity 
• constrainedBy link provides any constraints on the update 
GET /constraints/101 HTTP/1.1 
Host: example.org 
Accept: */* 
HTTP/1.1 200 OK 
Content-Type: text/plain; charset=UTF-8 
Content-Length: 150 
constraints can be machine readable (better) 
or in natural language 
When modifying the current project of a person, the information about the past projects should be preserved using 
the foaf:pastProject property. Suggested Update: 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
Delete <http://example.org/nandana#me> foaf:currentProject <http://www.seals-project.eu/>. 
Add <http://example.org/nandana#me> foaf:currentProject <http://www.ldp4j.org/>. 
Add <http://example.org/nandana#me> foaf:pastProject < http://www.seals-project.eu/>. 
GET 
200 OK
Center for 
Open 
Middleware 
Few simple scenarios 
23 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
LDP Basic Container 
24 
• Allows creation of new resources through POST 
• Maintains containment triples 
Subject Predicate Object 
Pattern LDPC-URI ldp:contains document-URI 
Example http://example.org/nandana/contacts/ ldp:contains http://example.org/nandana/contacts/raul 
Nandana’s 
Contact List 
<<Basic Container>> 
Raul’s 
Contact 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
http://example.org/nandana/contacts/ 
http://example.org/nandana/contacts/raul 
http://example.org/nandana/contacts/miguel
Center for 
Open 
Middleware 
LDP Basic Container 
25 
GET /nandana/contacts/ HTTP/1.1 
Host: example.org 
Accept: text/turtle 
advertises LDP Basic Container semantics 
GET 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ 
ETag:W/'123456711' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
supports the POST method 
200 OK 
advertises media types accepted by the POST method 
<http://example.org/nandana/contacts/> a ldp:Container, ldp:BasicContainer; 
has containment triples 
dc:title ‘Nandana’s contact list’; 
ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> .
Center for 
Open 
Middleware 
LDP Basic Container 
Creating an LDPR 
26 
Nandana’s 
Contact List 
<<Basic Container>> 
Raul’s 
Contact 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
Fernando’s 
Contact 
POST
Center for 
Open 
Middleware 
LDP Basic Container 
Creating an LDPR 
27 
POST /nandana/contacts/ HTTP/1.1 
Host: example.org 
Slug: fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' 
Content-Type: text/turtle 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
<> a vcard:Individual; 
vcard:hasURL <http://example.org/fernando#me> ; 
vcard:hasEmail <mailto:fernado@example.com>; 
vcard:fn "Fernando Serena"; 
vcard:hasTelephone [ a vcard:Home, vcard:Voice; 
vcard:hasValue <tel:+34655555555> ] . 
HTTP/1.1 201 Created 
Location: http://example.org/nandana/contacts/fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
Content-Length: 0 
POST 
201 Created
Center for 
Open 
Middleware 
LDP Basic Container 
Creating an LDPR 
28 
POST /nandana/contacts/ HTTP/1.1 
Host: example.org 
Slug: fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' 
Content-Type: text/turtle 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
<> a vcard:Individual; 
vcard:hasURL <http://example.org/fernando#me> ; 
vcard:hasEmail <mailto:fernado@example.com>; 
vcard:fn "Fernando Serena"; 
vcard:hasTelephone [ a vcard:Home, vcard:Voice; 
vcard:hasValue <tel:+34655555555> ] . 
provides a hint for the new URI to be minted 
HTTP/1.1 201 Created 
Location: http://example.org/nandana/contacts/fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
Content-Length: 0 
POST 
requests the LDPR interaction model 
a null URI is used to refer to the resource to be created 
201 Created 
provides the URI of the newly created resource
Center for 
Open 
Middleware 
LDP Basic Container 
After the resource creation 
29 
Nandana’s 
Contact List 
<<Basic Container>> 
Raul’s 
Contact 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
Fernando’s 
Contact 
ldp:contains
Center for 
Open 
Middleware 
LDP Basic Container 
After the resource creation 
30 
GET /nandana/contacts/ HTTP/1.1 
Host: example.org 
Accept: text/turtle 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; 
rel='type‘ 
ETag: W/'123456712' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
a containment triple is added for the newly created resource 
<http://example.org/nandana/contacts/> a a ldp:Container, ldp:BasicContainer; 
dc:title ‘Nandana’s contact list’; 
ldp:contains <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel> , 
<http://example.org/nandana/friends/fernando> . 
GET 
200 OK
Center for 
Open 
Middleware 
Few simple scenarios 
31 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Isn’t LDP Basic Containers enough? 
32 
• For most use cases, may be. 
• There are some limitations 
• can’t use domain-specific relationships 
• containment triples have a fixed pattern for <s, p, o> of the triple 
• containment triples can say relationships among two web 
resources (the LDPC and resources created using it) 
• some use cases require relationships between resources other than the 
LDP Container itself 
• some use cases require relationship among real world resource (in 
contrast to information resources / documents) 
• LDP Direct/Indirect containers introduce membership 
triples to address aforementioned limitations
Center for 
Open 
Middleware 
LDP Direct Container 
33 
• Maintains the containment triple similar to the basic containers 
• Maintains membership triples 
defined in the container 
Subject Predicate Object 
Pattern membership-constant-URI membership-predicate member-derived-URI 
Example http://example.org/nandana#me foaf:knows http://example.org/nandana/contacts/raul 
• Domain vocabularies can be used in membership predicate 
http://example.org/nandana/contacts/ 
Nandana’s 
Contact List 
<<Direct Container>> 
http://example.org/nandana/contacts/raul 
Raul’s 
Contact 
http://example.org/nandana/contacts/miguel 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
Nandana 
foaf:knows 
http://example.org/nandana#me foaf:knows
Center for 
Open 
Middleware 
Direct Containers 
34 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; 
rel='type‘ 
ETag: W/'123456711' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
advertises LDP Basic Container interaction model 
defines the membership-constant-URI 
<http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; 
ldp:membershipResource <http://example.org/nandana#me>; 
ldp:hasMemberRelation foaf:knows; 
dc:title ‘Nandana’s contact list’; 
ldp:contains <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel> . 
defines the membership predicate 
contains membership triples 
<http://example.org/nandana#me> foaf:knows <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel> . 
200 OK
Center for 
Open 
Middleware 
LDP Basic Container 
Creating an LDPR 
35 
Fernando’s 
Contact 
http://example.org/nandana/contacts/ 
POST Nandana’s 
Contact List 
<<Direct Container>> 
http://example.org/nandana/contacts/raul 
Raul’s 
Contact 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
Nandana 
foaf:knows 
foaf:knows 
http://example.org/nandana#me 
http://example.org/nandana/contacts/miguel
Center for 
Open 
Middleware 
LDP Direct Container 
Creating an LDPR 
36 
POST /nandana/contacts/ HTTP/1.1 
Host: example.org 
Slug: fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' 
Content-Type: text/turtle 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
<> a vcard:Individual; 
vcard:hasURL <http://example.org/fernando#me> ; 
vcard:hasEmail <mailto:fernado@example.com>; 
vcard:fn "Fernando Serena"; 
vcard:hasTelephone [ a vcard:Home, vcard:Voice; 
vcard:hasValue <tel:+34655555555> ] . 
HTTP/1.1 201 Created 
Location: http://example.org/nandana/contacts/fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
Content-Length: 0 
POST 
201 Created
Center for 
Open 
Middleware 
Direct Containers 
After the resource creation 
37 
http://example.org/nandana/contacts/ 
Nandana’s 
Contact List 
<<Direct Container>> 
http://example.org/nandana/contacts/raul 
Raul’s 
Contact 
Miguel’s 
Contact 
ldp:contains 
ldp:contains 
Nandana 
foaf:knows 
foaf:knows 
http://example.org/nandana#me 
http://example.org/nandana/contacts/miguel 
Fernando’s 
Contact 
foaf:knows 
ldp:contains 
http://example.org/nandana/contacts/fernando
Center for 
Open 
Middleware 
Direct Containers 
After the resource creation 
38 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; 
rel='type‘ 
ETag: W/'123456711' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
a containment triple is added for the newly created resource 
<http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; 
ldp:membershipResource <http://example.org/nandana#me>; 
ldp:hasMemberRelation foaf:knows; 
dc:title ‘Nandana’s contact list’; 
ldp:contains <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel>, <http://example.org/nandana/friends/fernando> . 
<http://example.org/nandana#me> foaf:knows <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel> , <http://example.org/nandana/friends/fernando> . 
a membership triple is added for the newly created resource 
200 OK
Center for 
Open 
Middleware 
Few simple scenarios 
39 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
LDP Indirect Container 
40 
Subject Predicate Object 
Pattern membership-constant-URI membership-predicate member-derived-URI 
Example http://example.org/nandana#me foaf:knows http://example.org/nandana/contacts/raul 
Nandana’s 
Contact List 
<<Indirect Container>> 
Raul’s 
Contact 
ldp:contains 
http://www.garcia-castro.com/foaf#me 
foaf:knows 
http://example.org/nandana#me 
http://example.org/miguel#me 
Nandana foaf:knows 
Raul 
Miguel 
• Maintains the containment triple similar to the basic containers 
• Maintains membership triples 
• Full flexibility with the membership triples 
defined in the container 
Miguel’s 
Contact 
ldp:contains
Center for 
Open 
Middleware 
Indirect Containers 
41 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ 
ETag:W/'123456711' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
ldp:insertedContentRelation defines how to select 
the object of the membership triple 
<http://example.org/nandana/friends/> a a ldp:Container, ldp:IndirectContainer; 
200 OK 
ldp:membershipResource <http://example.org/nandana#me>; 
ldp:hasMemberRelation foaf:knows; 
ldp:insertedContentRelation vcard:hasURL; 
dc:title ‘Nandana’s contact list’; 
ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> . 
<http://example.org/nandana#me> foaf:knows <http://www.garcia-castro.com/foaf#me>, 
<http://example.org/miguel#me> .
Center for 
Open 
Middleware 
LDP Indirect Container 
Creating an LDPR 
42 
Nandana’s 
Contact List 
<<Indirect Container>> 
ldp:contains 
ldp:contains 
Nandana 
foaf:knows 
foaf:knows 
Raul’s 
Contact 
Miguel’s 
Contact 
http://www.garcia-castro.com/foaf#me 
http://example.org/nandana#me 
Raul 
POST 
Fernando 
<> v:hasURL <#me>. 
Raul 
http://example.org/miguel#me
Center for 
Open 
Middleware 
LDP Indirect Container 
Creating an LDPR 
43 
POST /nandana/contacts/ HTTP/1.1 
Host: example.org 
Slug: fernando 
Content-Type: text/turtle 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
<> a vcard:Individual; 
vcard:hasURL <#me> ; 
vcard:hasEmail <mailto:fernado@example.com>; 
vcard:fn "Fernando Serena"; 
vcard:hasTelephone [ a vcard:Home, vcard:Voice; 
vcard:hasValue <tel:+34655555555> ] . 
POSTed resource contains a triple with the predicate 
defined in the ldp:insertedContentRelation 
HTTP/1.1 201 Created 
Location: http://example.org/nandana/friends/fernando 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
Content-Length: 0 
POST 
201 Created
Center for 
Open 
Middleware 
Indirect Containers 
After the resource creation 
44 
Nandana’s 
Contact List 
<<Indirect Container>> 
ldp:contains 
ldp:contains 
Nandana 
foaf:knows 
foaf:knows 
foaf:knows 
http://www.garcia-castro.com/foaf#me 
http://example.org/nandana#me 
Raul 
http://example.org/miguel#me 
http://example.org/fernando#me 
ldp:contains 
Raul 
Miguel 
Fernando 
Miguel 
Fernando
Center for 
Open 
Middleware 
Indirect Containers 
After the resource creation 
45 
HTTP/1.1 200 OK 
Content-Type: text/turtle; charset=UTF-8 
Link: <http://www.w3.org/ns/ldp#IndirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; 
rel='type‘ 
ETag: W/'123456711' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: text/turtle 
Content-Length: 250 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
<http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; 
ldp:membershipResource <http://example.org/nandana#me>; 
ldp:hasMemberRelation foaf:knows; 
dc:title ‘Nandana’s friends’; 
ldp:contains <http://example.org/nandana/friends/raul>, 
<http://example.org/nandana/friends/miguel>, <http://example.org/nandana/friends/fernando> . 
<http://example.org/nandana#me> foaf:knows <http://www.garcia-castro.com/foaf#me>, 
<http://example.org/miguel#me> <http://example.org/fernando#me> . . 
200 OK 
a containment triple is added for the newly created resource 
a membership triple is added for the newly created resource 
the object of the membership triple is selected 
based on ldp:insertedContentRelation
Center for 
Open 
Middleware 
Few simple scenarios 
46 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create (PUT) 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Creating a Linked Data resource 
PUT on a non-existing URI 
47 
• Clients can decide the URI to be used 
PUT /nandana/contacts/fernando HTTP/1.1 
Host: example.org 
Content-Type: text/turtle 
the URI for the resource to be created 
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> . 
< http://example.org/nandana/contacts/fernando> a vcard:Individual; 
vcard:hasURL <http://example.org/fernando#me> ; 
vcard:hasEmail <mailto:fernado@example.com>; 
vcard:fn "Fernando Serena"; 
vcard:hasTelephone [ a vcard:Home, vcard:Voice; 
vcard:hasValue <tel:+34655555555> ] . 
HTTP/1.1 204 No Content 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
PUT 
204 No Content
Center for 
Open 
Middleware 
Few simple scenarios 
48 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Deleting a Linked Data document 
49 
DELETE /nandana/contacts/fernando HTTP/1.1 
Host: example.org 
HTTP/1.1 204 No Content 
Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ 
DELETE 
204 No Content 
• Corresponding containment triples and membership triples will be removed from the containers 
upon deletion 
• E.g., in the Indirect Container example following triples will be removed 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix ldp: <http://www.w3.org/ns/ldp#>. 
<http://example.org/nandana/contacts/> ldp:contains <http://example.org/nandana/contacts/fernando> . 
<http://example.org/nandana#me> foaf:knows <http://example.org/fernando#me> .
Center for 
Open 
Middleware 
Few simple scenarios 
50 
• Looking up a Linked Data resource (GET on LDPR) 
• Modifying a Linked Data resource (PUT/PATCH on LDPR) 
• Creating Linked Data resources 
• Basic Container (POST on LDP-BC) 
• Direct Container (POST on LDP-DC) 
• Indirect Container (POST on LDP-IC) 
• PUT to create 
• Deleting a Linked Data resource (DELETE on LDPR) 
• Managing non-RDF resources
Center for 
Open 
Middleware 
Managing non-RDF resources 
A container for managing photos 
51 
• LDPRs can be non-RDF sources (LDP-NR) 
• An LDP-NR source typically has an associated LDP-RS to 
contain data about the LDP-NR 
Nandana’s 
Photo Gallery 
<<Basic Container>> 
ldp:contains 
ldp:contains 
describedby 
describedby 
http://example.org/nandana/photos/ 
http://example.org/nandana/photos/sigiriya 
http://example.org/nandana/photos/sigiriya/meta 
http://example.org/nandana/photos/eiffel 
http://example.org/nandana/photos/eiffel/meta
Center for 
Open 
Middleware 
52 
Managing non-RDF resources 
A container for managing photos 
OPTIONS /nandana/photos/ HTTP/1.1 
Host: example.org 
OPTIONS 
HTTP/1.1 204 No Content 
Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; 
rel='type' 
Allow: OPTIONS,HEAD,GET,POST 
Accept-Post: image/png, image/jpeg 
204 No Content 
advertises support for non-RDF (binary) resource creation
Center for 
Open 
Middleware 
53 
Managing non-RDF resources 
Creating a new binary resource 
http://example.org/nandana/photos/Nandana’s 
Photo Gallery 
<<Basic Container>> 
ldp:contains 
ldp:contains 
http://example.org/nandana/photos/ 
http://example.org/nandana/photos/sigiriya 
POST
Center for 
Open 
Middleware 
54 
Managing non-RDF resources 
Creating a new binary resource 
POST /nandana/photos/ HTTP/1.1 
Host: example.org 
Slug: monalisa 
Content-Type: image/png 
Content- Length: 1020 
### binary content of the image ### 
POST 
HTTP/1.1 201 Created 
201 Created 
Location: http://example.org/nandana/photos/monalisa 
Link: <http://www.w3.org/ns/ldp#NonRDFSource>; rel="type“, <http://www.w3.org/ns/ldp#Resource>; 
rel="type“ 
Link: <http://example.org/nandana/photos/monalisa/meta>; rel="describedby“ 
Content-Length: 0 
provides the URI of the newly created resource 
provides the URI of an associated LDP-RS that contains the data about the binary resource
Center for 
Open 
Middleware 
55 
Managing non-RDF resources 
Looking up the new binary resource 
GET /nandana/photos/monalisa HTTP/1.1 
Host: example.org 
Accept: image/png 
HTTP/1.1 200 OK 
Content-Type: image/png 
Link: <http://www.w3.org/ns/ldp#NonRDFSource>; rel="type“, <http://www.w3.org/ns/ldp#Resource>; 
rel="type“ 
Link: <http://example.org/nandana/photos/monalisa/meta>; rel="describedby“ 
ETag: “123456790” 
Allow: OPTIONS,HEAD,GET, DELETE 
Content-Length: 1020 
### binary content of the image ### 
GET 
200 OK 
provides the URI of an associated LDP-RS that contains 
the data about the binary resource
Center for 
Open 
Middleware 
56 
Managing non-RDF resources 
Looking up the associated LDP-RS 
GET /nandana/photos/monalisa/meta HTTP/1.1 
Host: example.org 
Accept: text/turtle 
HTTP/1.1 200 OK 
Content-Type: text/turtle 
Link: <http://www.w3.org/ns/ldp#Resource>; rel="type“ 
ETag: “123456793” 
Allow: OPTIONS,HEAD,GET, PUT, DELETE 
prefix wdrs: <http://www.w3.org/2007/05/powder-s#> . 
@prefix dcterms: <http://purl.org/dc/terms/> . 
<http://example.org/nandana/photos/monalisa> wdrs:describedby 
<http://example.org/nandana/photos/monalisa/meta> ; 
dcterms:creator <http://example.org/nandana#me>; 
dcterms:created "2013-05-05T10:00"^^xsd:dateTime . 
GET 
200 OK
Center for 
Open 
Middleware 
References 
57 
• Linked Data Platform 1.0 
• http://www.w3.org/TR/ldp/ 
• Linked Data Platform 1.0 Primer 
• http://www.w3.org/TR/ldp-primer/ 
• Linked Data Platform Best Practices and Guidelines 
• http://www.w3.org/TR/ldp-bp/ 
• Linked Data Platform Paging 1.0 
• http://www.w3.org/TR/ldp-paging/ 
• Linked Data Patch Format 
• http://www.w3.org/TR/ldpatch/
Center for 
Open 
Middleware 
Nandana Mihindukulasooriya, 
Center for Open Middleware / Ontology Engineering Group 
Universidad Politécnica de Madrid, 
Spain. 
Questions? 
@nandanamihindu 
nmihindu@fi.upm.es

Contenu connexe

Tendances

Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...Riccardo Zamana
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overviewABC Talks
 
An Introduction to SPARQL
An Introduction to SPARQLAn Introduction to SPARQL
An Introduction to SPARQLOlaf Hartig
 
Rdf data-model-and-storage
Rdf data-model-and-storageRdf data-model-and-storage
Rdf data-model-and-storage灿辉 葛
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneRahul Jain
 
RDF 개념 및 구문 소개
RDF 개념 및 구문 소개RDF 개념 및 구문 소개
RDF 개념 및 구문 소개Dongbum Kim
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiFlink Forward
 
Introduction To RDF and RDFS
Introduction To RDF and RDFSIntroduction To RDF and RDFS
Introduction To RDF and RDFSNilesh Wagmare
 
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...Spark Summit
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQLOpen Data Support
 
Deep Dive Into Elasticsearch
Deep Dive Into ElasticsearchDeep Dive Into Elasticsearch
Deep Dive Into ElasticsearchKnoldus Inc.
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1Maruf Hassan
 
DSpace 7 - The Power of Configurable Entities
DSpace 7 - The Power of Configurable EntitiesDSpace 7 - The Power of Configurable Entities
DSpace 7 - The Power of Configurable EntitiesAtmire
 

Tendances (20)

Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
Time series Analytics - a deep dive into ADX Azure Data Explorer @Data Saturd...
 
Elastic search overview
Elastic search overviewElastic search overview
Elastic search overview
 
An Introduction to SPARQL
An Introduction to SPARQLAn Introduction to SPARQL
An Introduction to SPARQL
 
Rdf data-model-and-storage
Rdf data-model-and-storageRdf data-model-and-storage
Rdf data-model-and-storage
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 
Introduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of LuceneIntroduction to Elasticsearch with basics of Lucene
Introduction to Elasticsearch with basics of Lucene
 
SHACL by example
SHACL by exampleSHACL by example
SHACL by example
 
RDF 개념 및 구문 소개
RDF 개념 및 구문 소개RDF 개념 및 구문 소개
RDF 개념 및 구문 소개
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
 
Spark streaming: Best Practices
Spark streaming: Best PracticesSpark streaming: Best Practices
Spark streaming: Best Practices
 
Introduction To RDF and RDFS
Introduction To RDF and RDFSIntroduction To RDF and RDFS
Introduction To RDF and RDFS
 
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...
Spark + Parquet In Depth: Spark Summit East Talk by Emily Curtin and Robbie S...
 
Introduction to RDF & SPARQL
Introduction to RDF & SPARQLIntroduction to RDF & SPARQL
Introduction to RDF & SPARQL
 
SPARQL Tutorial
SPARQL TutorialSPARQL Tutorial
SPARQL Tutorial
 
Deep Dive Into Elasticsearch
Deep Dive Into ElasticsearchDeep Dive Into Elasticsearch
Deep Dive Into Elasticsearch
 
Elasticsearch presentation 1
Elasticsearch presentation 1Elasticsearch presentation 1
Elasticsearch presentation 1
 
Linked Data (再)入門
Linked Data (再)入門Linked Data (再)入門
Linked Data (再)入門
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
DSpace 7 - The Power of Configurable Entities
DSpace 7 - The Power of Configurable EntitiesDSpace 7 - The Power of Configurable Entities
DSpace 7 - The Power of Configurable Entities
 
SHACL Overview
SHACL OverviewSHACL Overview
SHACL Overview
 

En vedette

Introduction to Linked Data Platform (LDP)
Introduction to Linked Data Platform (LDP)Introduction to Linked Data Platform (LDP)
Introduction to Linked Data Platform (LDP)Hector Correa
 
Why do they call it Linked Data when they want to say...?
Why do they call it Linked Data when they want to say...?Why do they call it Linked Data when they want to say...?
Why do they call it Linked Data when they want to say...?Oscar Corcho
 
NDI Public Opinion Poll in the Balkans on LGBTI Communities
NDI Public Opinion Poll in the Balkans on LGBTI Communities NDI Public Opinion Poll in the Balkans on LGBTI Communities
NDI Public Opinion Poll in the Balkans on LGBTI Communities NDIdemocracy
 
Alain Derycke - Lille1 - LIFL - Mobilites et Ubimedia
Alain Derycke - Lille1 - LIFL - Mobilites et UbimediaAlain Derycke - Lille1 - LIFL - Mobilites et Ubimedia
Alain Derycke - Lille1 - LIFL - Mobilites et UbimediaDavid CORDINA
 
(Enterprise) Linked Data Platform a new standard to manage LOD
(Enterprise) Linked Data Platform a new standard to manage LOD(Enterprise) Linked Data Platform a new standard to manage LOD
(Enterprise) Linked Data Platform a new standard to manage LODDiego Valerio Camarda
 
Linked Media and Data Using Apache Marmotta
Linked Media and Data Using Apache MarmottaLinked Media and Data Using Apache Marmotta
Linked Media and Data Using Apache MarmottaSebastian Schaffert
 
Linked Data Platform as a novel approach for Enterprise Application Integra...
Linked Data Platform as a novel approach for Enterprise Application Integra...Linked Data Platform as a novel approach for Enterprise Application Integra...
Linked Data Platform as a novel approach for Enterprise Application Integra...Nandana Mihindukulasooriya
 
Semantic Media Management with Apache Marmotta
Semantic Media Management with Apache MarmottaSemantic Media Management with Apache Marmotta
Semantic Media Management with Apache MarmottaThomas Kurz
 
Geospatial Querying in Apache Marmotta - Apache Big Data North America 2016
Geospatial Querying in Apache Marmotta -  Apache Big Data North America 2016Geospatial Querying in Apache Marmotta -  Apache Big Data North America 2016
Geospatial Querying in Apache Marmotta - Apache Big Data North America 2016Sergio Fernández
 
LDP Presentation
LDP PresentationLDP Presentation
LDP Presentationhayelikahn
 
Introduction to LDP in Apache Marmotta
Introduction to LDP in Apache MarmottaIntroduction to LDP in Apache Marmotta
Introduction to LDP in Apache MarmottaSergio Fernández
 
Linked Data Tutorial
Linked Data TutorialLinked Data Tutorial
Linked Data TutorialSören Auer
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful servicesMarkus Lanthaler
 
Big data landscape v 3.0 - Matt Turck (FirstMark)
Big data landscape v 3.0 - Matt Turck (FirstMark) Big data landscape v 3.0 - Matt Turck (FirstMark)
Big data landscape v 3.0 - Matt Turck (FirstMark) Matt Turck
 

En vedette (20)

Introduction to Linked Data Platform (LDP)
Introduction to Linked Data Platform (LDP)Introduction to Linked Data Platform (LDP)
Introduction to Linked Data Platform (LDP)
 
Why do they call it Linked Data when they want to say...?
Why do they call it Linked Data when they want to say...?Why do they call it Linked Data when they want to say...?
Why do they call it Linked Data when they want to say...?
 
NDI Public Opinion Poll in the Balkans on LGBTI Communities
NDI Public Opinion Poll in the Balkans on LGBTI Communities NDI Public Opinion Poll in the Balkans on LGBTI Communities
NDI Public Opinion Poll in the Balkans on LGBTI Communities
 
Alain Derycke - Lille1 - LIFL - Mobilites et Ubimedia
Alain Derycke - Lille1 - LIFL - Mobilites et UbimediaAlain Derycke - Lille1 - LIFL - Mobilites et Ubimedia
Alain Derycke - Lille1 - LIFL - Mobilites et Ubimedia
 
(Enterprise) Linked Data Platform a new standard to manage LOD
(Enterprise) Linked Data Platform a new standard to manage LOD(Enterprise) Linked Data Platform a new standard to manage LOD
(Enterprise) Linked Data Platform a new standard to manage LOD
 
Apache marmotta
Apache marmottaApache marmotta
Apache marmotta
 
Linked Media and Data Using Apache Marmotta
Linked Media and Data Using Apache MarmottaLinked Media and Data Using Apache Marmotta
Linked Media and Data Using Apache Marmotta
 
Linked Data Platform as a novel approach for Enterprise Application Integra...
Linked Data Platform as a novel approach for Enterprise Application Integra...Linked Data Platform as a novel approach for Enterprise Application Integra...
Linked Data Platform as a novel approach for Enterprise Application Integra...
 
Semantic Media Management with Apache Marmotta
Semantic Media Management with Apache MarmottaSemantic Media Management with Apache Marmotta
Semantic Media Management with Apache Marmotta
 
Geospatial Querying in Apache Marmotta - Apache Big Data North America 2016
Geospatial Querying in Apache Marmotta -  Apache Big Data North America 2016Geospatial Querying in Apache Marmotta -  Apache Big Data North America 2016
Geospatial Querying in Apache Marmotta - Apache Big Data North America 2016
 
LDP Presentation
LDP PresentationLDP Presentation
LDP Presentation
 
Introduction to LDP in Apache Marmotta
Introduction to LDP in Apache MarmottaIntroduction to LDP in Apache Marmotta
Introduction to LDP in Apache Marmotta
 
Linked Data Tutorial
Linked Data TutorialLinked Data Tutorial
Linked Data Tutorial
 
Apache Marmotta - Introduction
Apache Marmotta - IntroductionApache Marmotta - Introduction
Apache Marmotta - Introduction
 
Linked Data Tutorial
Linked Data TutorialLinked Data Tutorial
Linked Data Tutorial
 
Islamic Art
Islamic ArtIslamic Art
Islamic Art
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful services
 
JSON-LD and MongoDB
JSON-LD and MongoDBJSON-LD and MongoDB
JSON-LD and MongoDB
 
Big data landscape v 3.0 - Matt Turck (FirstMark)
Big data landscape v 3.0 - Matt Turck (FirstMark) Big data landscape v 3.0 - Matt Turck (FirstMark)
Big data landscape v 3.0 - Matt Turck (FirstMark)
 
CISCO SMART CITY
CISCO SMART CITYCISCO SMART CITY
CISCO SMART CITY
 

Similaire à Learning W3C Linked Data Platform with examples

Application integration with the W3C Linked Data standards
Application integration with the W3C Linked Data standardsApplication integration with the W3C Linked Data standards
Application integration with the W3C Linked Data standardsNandana Mihindukulasooriya
 
W3C Linked Data Platform Overview
W3C Linked Data Platform OverviewW3C Linked Data Platform Overview
W3C Linked Data Platform OverviewSteve Speicher
 
Usage of Linked Data: Introduction and Application Scenarios
Usage of Linked Data: Introduction and Application ScenariosUsage of Linked Data: Introduction and Application Scenarios
Usage of Linked Data: Introduction and Application ScenariosEUCLID project
 
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...datascienceiqss
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes WorkshopErik Hatcher
 
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...OpenAIRE
 
OpenAIRE and the Case of Irish Repositories
OpenAIRE and the Case of Irish RepositoriesOpenAIRE and the Case of Irish Repositories
OpenAIRE and the Case of Irish RepositoriesRIANIreland
 
Illuminating DSpace's Linked Data Support
Illuminating DSpace's Linked Data SupportIlluminating DSpace's Linked Data Support
Illuminating DSpace's Linked Data SupportPascal-Nicolas Becker
 
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021Crossref
 
RDFa: an introduction
RDFa: an introductionRDFa: an introduction
RDFa: an introductionKai Li
 
Open for Business - Open Archives, OpenURL, RSS and the Dublin Core
Open for Business - Open Archives, OpenURL, RSS and the Dublin CoreOpen for Business - Open Archives, OpenURL, RSS and the Dublin Core
Open for Business - Open Archives, OpenURL, RSS and the Dublin CoreAndy Powell
 
SWIB14 Weaving repository contents into the Semantic Web
SWIB14 Weaving repository contents into the Semantic WebSWIB14 Weaving repository contents into the Semantic Web
SWIB14 Weaving repository contents into the Semantic WebPascal-Nicolas Becker
 
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itRDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itJose Luis Lopez Pino
 
Open for Business Open Archives, OpenURL, RSS and the Dublin Core
Open for Business  Open Archives, OpenURL, RSS and the Dublin CoreOpen for Business  Open Archives, OpenURL, RSS and the Dublin Core
Open for Business Open Archives, OpenURL, RSS and the Dublin CoreAndy Powell
 
Drupal and Apache Stanbol
Drupal and Apache StanbolDrupal and Apache Stanbol
Drupal and Apache StanbolAlkuvoima
 
Linked Energy Data Generation
Linked Energy Data GenerationLinked Energy Data Generation
Linked Energy Data GenerationFilip Radulovic
 

Similaire à Learning W3C Linked Data Platform with examples (20)

Application integration with the W3C Linked Data standards
Application integration with the W3C Linked Data standardsApplication integration with the W3C Linked Data standards
Application integration with the W3C Linked Data standards
 
W3C Linked Data Platform Overview
W3C Linked Data Platform OverviewW3C Linked Data Platform Overview
W3C Linked Data Platform Overview
 
Usage of Linked Data: Introduction and Application Scenarios
Usage of Linked Data: Introduction and Application ScenariosUsage of Linked Data: Introduction and Application Scenarios
Usage of Linked Data: Introduction and Application Scenarios
 
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
Towards a common deposit api (the dataverse example) Elizabeth Quigley + Phil...
 
Solr Recipes Workshop
Solr Recipes WorkshopSolr Recipes Workshop
Solr Recipes Workshop
 
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...
OpenAIRE and the case of Irish Repositories, by Jochen Schirrwagen (RIAN Work...
 
OpenAIRE and the Case of Irish Repositories
OpenAIRE and the Case of Irish RepositoriesOpenAIRE and the Case of Irish Repositories
OpenAIRE and the Case of Irish Repositories
 
Illuminating DSpace's Linked Data Support
Illuminating DSpace's Linked Data SupportIlluminating DSpace's Linked Data Support
Illuminating DSpace's Linked Data Support
 
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021
Crossref LIVE Indonesia: An Introduction to Crossref, CRLIVE-ID 13 July 2021
 
RDFa: an introduction
RDFa: an introductionRDFa: an introduction
RDFa: an introduction
 
Open for Business - Open Archives, OpenURL, RSS and the Dublin Core
Open for Business - Open Archives, OpenURL, RSS and the Dublin CoreOpen for Business - Open Archives, OpenURL, RSS and the Dublin Core
Open for Business - Open Archives, OpenURL, RSS and the Dublin Core
 
SWIB14 Weaving repository contents into the Semantic Web
SWIB14 Weaving repository contents into the Semantic WebSWIB14 Weaving repository contents into the Semantic Web
SWIB14 Weaving repository contents into the Semantic Web
 
Ld4 l triannon
Ld4 l triannonLd4 l triannon
Ld4 l triannon
 
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itRDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use it
 
Open for Business Open Archives, OpenURL, RSS and the Dublin Core
Open for Business  Open Archives, OpenURL, RSS and the Dublin CoreOpen for Business  Open Archives, OpenURL, RSS and the Dublin Core
Open for Business Open Archives, OpenURL, RSS and the Dublin Core
 
Odata
OdataOdata
Odata
 
Odata
OdataOdata
Odata
 
Drupal and Apache Stanbol
Drupal and Apache StanbolDrupal and Apache Stanbol
Drupal and Apache Stanbol
 
Intro to Web Standards
Intro to Web StandardsIntro to Web Standards
Intro to Web Standards
 
Linked Energy Data Generation
Linked Energy Data GenerationLinked Energy Data Generation
Linked Energy Data Generation
 

Plus de Nandana Mihindukulasooriya

A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...
A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...
A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...Nandana Mihindukulasooriya
 
Leveraging Semantic Parsing for Relation Linking over Knowledge Bases
Leveraging Semantic Parsing for Relation Linking over Knowledge BasesLeveraging Semantic Parsing for Relation Linking over Knowledge Bases
Leveraging Semantic Parsing for Relation Linking over Knowledge BasesNandana Mihindukulasooriya
 
A Distributed Transaction Model for Read-Write Linked Data Applications
A Distributed Transaction Model for Read-Write Linked Data ApplicationsA Distributed Transaction Model for Read-Write Linked Data Applications
A Distributed Transaction Model for Read-Write Linked Data ApplicationsNandana Mihindukulasooriya
 
Loupe API - A Linked Data Profiling Service for Quality Assessment
Loupe API - A Linked Data Profiling Service for Quality AssessmentLoupe API - A Linked Data Profiling Service for Quality Assessment
Loupe API - A Linked Data Profiling Service for Quality AssessmentNandana Mihindukulasooriya
 
Collaborative Ontology Evolution and Data Quality - An Empirical Analysis
Collaborative Ontology Evolution and Data Quality - An Empirical AnalysisCollaborative Ontology Evolution and Data Quality - An Empirical Analysis
Collaborative Ontology Evolution and Data Quality - An Empirical AnalysisNandana Mihindukulasooriya
 
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...Nandana Mihindukulasooriya
 
An analysis of the quality issues of the properties available in the Spanish ...
An analysis of the quality issues of the properties available in the Spanish ...An analysis of the quality issues of the properties available in the Spanish ...
An analysis of the quality issues of the properties available in the Spanish ...Nandana Mihindukulasooriya
 
Describing LDP Applications with the Hydra Core Vocabulary
Describing LDP Applications with the Hydra Core VocabularyDescribing LDP Applications with the Hydra Core Vocabulary
Describing LDP Applications with the Hydra Core VocabularyNandana Mihindukulasooriya
 
Linked data platform adapter for bugzilla poster
Linked data platform adapter for bugzilla posterLinked data platform adapter for bugzilla poster
Linked data platform adapter for bugzilla posterNandana Mihindukulasooriya
 
LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...Nandana Mihindukulasooriya
 
morph-LDP: An R2RML-based Linked Data Platform implementation
morph-LDP: An R2RML-based Linked Data Platform implementationmorph-LDP: An R2RML-based Linked Data Platform implementation
morph-LDP: An R2RML-based Linked Data Platform implementationNandana Mihindukulasooriya
 
ALM iStack - Application Lifecycle Management using Linked Data
ALM iStack - Application Lifecycle Management using Linked Data ALM iStack - Application Lifecycle Management using Linked Data
ALM iStack - Application Lifecycle Management using Linked Data Nandana Mihindukulasooriya
 

Plus de Nandana Mihindukulasooriya (20)

A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...
A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...
A Framework for Linked Data Quality based on Data Profiling and RDF Shape Ind...
 
Leveraging Semantic Parsing for Relation Linking over Knowledge Bases
Leveraging Semantic Parsing for Relation Linking over Knowledge BasesLeveraging Semantic Parsing for Relation Linking over Knowledge Bases
Leveraging Semantic Parsing for Relation Linking over Knowledge Bases
 
ISWC 2020 - Semantic Answer Type Prediction
ISWC 2020 - Semantic Answer Type PredictionISWC 2020 - Semantic Answer Type Prediction
ISWC 2020 - Semantic Answer Type Prediction
 
Fitur - HackaTrips 2018!
Fitur - HackaTrips 2018!Fitur - HackaTrips 2018!
Fitur - HackaTrips 2018!
 
A Distributed Transaction Model for Read-Write Linked Data Applications
A Distributed Transaction Model for Read-Write Linked Data ApplicationsA Distributed Transaction Model for Read-Write Linked Data Applications
A Distributed Transaction Model for Read-Write Linked Data Applications
 
Repairing Hidden Links in Linked Data
Repairing Hidden Links in Linked DataRepairing Hidden Links in Linked Data
Repairing Hidden Links in Linked Data
 
Loupe API - A Linked Data Profiling Service for Quality Assessment
Loupe API - A Linked Data Profiling Service for Quality AssessmentLoupe API - A Linked Data Profiling Service for Quality Assessment
Loupe API - A Linked Data Profiling Service for Quality Assessment
 
Research Poster Design
Research Poster DesignResearch Poster Design
Research Poster Design
 
Hidden Gems
Hidden GemsHidden Gems
Hidden Gems
 
Collaborative Ontology Evolution and Data Quality - An Empirical Analysis
Collaborative Ontology Evolution and Data Quality - An Empirical AnalysisCollaborative Ontology Evolution and Data Quality - An Empirical Analysis
Collaborative Ontology Evolution and Data Quality - An Empirical Analysis
 
Erasmus+ promotional event - Kandy, Sri Lanka
Erasmus+ promotional event - Kandy, Sri LankaErasmus+ promotional event - Kandy, Sri Lanka
Erasmus+ promotional event - Kandy, Sri Lanka
 
Loupe model - Use Cases and Requirements
Loupe model - Use Cases and Requirements Loupe model - Use Cases and Requirements
Loupe model - Use Cases and Requirements
 
4V - WP3 Progress Report (TIN2013-46238)
4V - WP3 Progress Report (TIN2013-46238)4V - WP3 Progress Report (TIN2013-46238)
4V - WP3 Progress Report (TIN2013-46238)
 
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...
A Two-Fold Quality Assurance Approach for Dynamic Knowledge Bases : The 3cixt...
 
An analysis of the quality issues of the properties available in the Spanish ...
An analysis of the quality issues of the properties available in the Spanish ...An analysis of the quality issues of the properties available in the Spanish ...
An analysis of the quality issues of the properties available in the Spanish ...
 
Describing LDP Applications with the Hydra Core Vocabulary
Describing LDP Applications with the Hydra Core VocabularyDescribing LDP Applications with the Hydra Core Vocabulary
Describing LDP Applications with the Hydra Core Vocabulary
 
Linked data platform adapter for bugzilla poster
Linked data platform adapter for bugzilla posterLinked data platform adapter for bugzilla poster
Linked data platform adapter for bugzilla poster
 
LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...LDP4j: A framework for the development of interoperable read-write Linked Da...
LDP4j: A framework for the development of interoperable read-write Linked Da...
 
morph-LDP: An R2RML-based Linked Data Platform implementation
morph-LDP: An R2RML-based Linked Data Platform implementationmorph-LDP: An R2RML-based Linked Data Platform implementation
morph-LDP: An R2RML-based Linked Data Platform implementation
 
ALM iStack - Application Lifecycle Management using Linked Data
ALM iStack - Application Lifecycle Management using Linked Data ALM iStack - Application Lifecycle Management using Linked Data
ALM iStack - Application Lifecycle Management using Linked Data
 

Dernier

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Dernier (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Learning W3C Linked Data Platform with examples

  • 1. Center for Open Middleware Learning W3C Linked Data Platform 1.0 with examples Nandana Mihindukulasooriya, Center for Open Middleware / Ontology Engineering Group Universidad Politécnica de Madrid, Spain. @nandanamihindu / nmihindu@fi.upm.es
  • 2. Center for Open Middleware License 2 • This work is licensed under a Creative Commons Attribution- ShareAlike 4.0 International License. • You are free to: • Share — copy and redistribute the material in any medium or format • Adapt — remix, transform, and build upon the material for any purpose, even commercially. • Under the following terms: • Attribution — You must attribute by including a credits text stating • 'The slides are particially based on "Learning W3C Linked Data Platform 1.0 with examples" by Nandana Mihindulasooriya, Ontology Engineering Group' • ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
  • 3. Center for Open Middleware Agenda 3 • Introduction • Examples • Looking up a Linked Data resource • Modifying a Linked Data resource • Creating Linked Data resources • Deleting a Linked Data resource • Managing non-RDF resources
  • 4. Center for Open Middleware Learning W3C Linked Data Platform 1.0 with examples INTRODUCTION 4
  • 5. Center for Open Middleware Back to the basics … 5 “Linked Data principles • Use URIs as names for things • Use HTTP URIs so that people can look up those names • When someone looks up a URI, provide useful information, using the standards (RDF*, SPARQL) • Include links to other URIs, so that they can discover more things” Tim Berners-Lee. Linked data-design issues (2006) http://www. w3.org/DesignIssues/LinkedData.html Leo Sauermann and Richard Cyganiak. Cool URIs for the Semantic Web (2008) http://www.w3.org/TR/cooluris/ Tom Heath and Christian Bizer. Linked Data: Evolving the Web into a Global Data Space (2011) http://linkeddatabook.com/
  • 6. Center for Open Middleware Let´s see an example 6 Nandana Sampath Mihindukulasooriya http://id.nandana.org/card#me GET /card#me HTTP/1.1 Host: id.nandana.org HTTP/1.1 200 ok OK Content-Type: text/turtle; charset=UTF-8 Content-Length: 250 content-type: text/turtle; charset=utf-8 content-length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . (1) (2) <http://example.org/nandana> a foaf:PersonalProfileDocument; personalprofiledocument; foaf:primarytopic primaryTopic <<http://http://example.example.org/org/nandana#nandana#me> me> ; ; dc:title ‘nandana’s Nandana’s foaf FOAF personal personal profile’ profile’ . . <http://example.org/nandana#me> a foaf:Person; person; foaf:name ‘Nandana nandana mihindukulasooriya’ Mihindukulasooriya’ ; . foaf:workplacehomepage <http://www.oeg-upm.net/> ; foaf:workplacehomepage <http://www.centeropenmiddleware.com/> ; foaf:schoolhomepage <http://www.fi.upm.es/> ; foaf:topic_interest <http://dbpedia.org/resource/linked_data> ; foaf:based_near <http://dbpedia.org/resource/madrid> . (3) (4)
  • 7. Center for Open Middleware Linked Data in practice 7 • Linked Data resources (documents) • easier to traverse, live data, less computational cost to the provider • slow querying • Public SPARQL endpoints • live data • high cost to the provider, low availability • Data dumps + private SPARQL endpoints • set up and maintenance cost, stale data, silos • high availability and performance • Linked Data Fragments • less workload on server, high availability • more bandwidth, slow querying LDP makes these resources LD+RW
  • 8. Center for Open Middleware Linked Data Platform 1.0 http://www.w3.org/TR/ldp/ 8 • A standard protocol for Read / Write Linked Data • Extensions to HTTP protocol • Pagination, ordering, partial updates, introspection, creation factories, collections • Standardization focused of interoperability • Developed by W3C Linked Data Platform Working Group • 54 participants from 32 organizations • Industry: IBM, Oracle, EMC, Fujitsu, OpenLink Software, Base22, … • Academia: Universidad Politécnica de Madrid, University of Oxford, DERI, Université de Lyon, INRIA, … • Progress: • W3C LDP Working Group is launched, June 2014, • W3C Last Call Working Draft (3), 7 September 2014, • W3C Proposed Recommendation, October-November 2014
  • 9. Center for Open Middleware LDP Terminology 9 conforms to the lifecycle patterns and conventions defined in LDP state is fully represented in RDF state is NOT represented in RDF a special type of RDF Source that acts as • an enumeration of a collection of linked documents • a creation factory
  • 10. Center for Open Middleware Learning W3C Linked Data Platform 1.0 with examples EXAMPLES 10
  • 11. Center for Open Middleware Few simple scenarios 11 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Creating Linked Data Platform containers • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 12. Center for Open Middleware Looking up a Linked Data resource 12 Nandana´s FOAF file • a simple HTTP GET with • additional guarantees • LDP mandates some features that are optional in HTTP • e.g., e-tags, HEAD, OPTIONS • Some extensions • e.g., paging GET GET 200 OK
  • 13. Center for Open Middleware Looking up a Linked Data resource GET on LDPR 13 GET /nandana HTTP/1.1 Host: example.org Accept: text/turtle HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type” ETag: “123456789” Allow: OPTIONS,HEAD,GET,PUT,PATCH Accept-Patch: text/ldpatch Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://example.org/nandana> a foaf:PersonalProfileDocument; foaf:primaryTopic <http://example.org/nandana#me> ; dc:title ‘Nandana’s FOAF file’ . <http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’; foaf:currentProject <http://www.seals-project.eu/> . GET 200 OK
  • 14. Center for Open Middleware Looking up a Linked Data document GET on LDPR 14 GET /nandana HTTP/1.1 Host: example.org Accept: text/turtle HTTP/1.1 conformant has Turtle and JSON-LD representations advertises support for LDP HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type” ETag: “123456789” Allow: OPTIONS,HEAD,GET,PUT,PATCH Accept-Patch: text/ldpatch Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . advertises which operations are allowed provides an entity tag supports the OPTIONS,HEAD, and PATCH operations <http://example.org/nandana> a foaf:PersonalProfileDocument; foaf:primaryTopic <http://example.org/nandana#me> ; dc:title ‘Nandana’s FOAF file’ . <http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’; foaf:currentProject <http://www.seals-project.eu/> . advertises media types accepted by the PATCH method reuses existing vocabularies use standard vocabularies [ e.g., Dublin Core, RDF(S) ] has at least one rdf:type set explicitly
  • 15. Center for Open Middleware Looking up a Linked Data document GET on LDPR with paging 15 GET /nandana HTTP/1.1 Host: example.org Accept: text/turtle Prefer: return=representation; max-triple-count="500" HTTP/1.1 303 See Other Location: <http://example.org/nandana?page1> redirects to the first page GET 303 See Other communicates support for LDP Paging and maximum desired size
  • 16. Center for Open Middleware Looking up a Linked Data document GET on LDPR with paging communicates support for LDP Paging and maximum desired size GET 16 GET /nandana HTTP/1.1 Host: example.org Accept: text/turtle Prefer: return=representation; max-triple-count="500" HTTP/1.1 303 See Other Location: <http://example.org/nandana?page1> GET /nandana?page1 HTTP/1.1 Host: example.org Accept: text/turtle Prefer: return=representation; max-triple-count="500" HTTP/1.1 200 OK Content-Type: text/turtle ETag: "_87e52ce291112" Link: <http://www.w3.org/ns/ldp#Resource>; rel="type", <http://www.w3.org/ns/ldp#Page>; rel="type" Link: <http://example.org/customer-relations?p=2>; rel='next' Link: <http://example.org/nandana>; rel='canonical'; etag="_87e52ce291110" Allow: GET,OPTIONS,HEAD @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://example.org/nandana> a foaf:PersonalProfileDocument; foaf:primaryTopic <http://example.org/nandana#me> ; dc:title ‘Nandana’s FOAF file’ . <http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’; … redirects to the first page GET 303 See Other GET advertises the response representation is a pa2g0e0 OK provides a link to the next page provides a link to resource being paged and the entity tag of complete resource
  • 17. Center for Open Middleware Looking up a Linked Data document GET on LDPR with paging (optimized) 17 GET /nandana HTTP/1.1 Host: example.org Accept: text/turtle Prefer: return=representation; max-triple-count="500“ Prefer: contents-of-related HTTP/1.1 209 Contents of Related Content-Type: text/turtle ETag: "_87e52ce291112" Link: <http://www.w3.org/ns/ldp#Resource>; rel="type", <http://www.w3.org/ns/ldp#Page>; rel="type" Link: <http://example.org/customer-relations?p=2>; rel='next' Link: <http://example.org/nandana>; rel='canonical'; etag="_87e52ce291110" Allow: GET,OPTIONS,HEAD @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://example.org/nandana> a foaf:PersonalProfileDocument; foaf:primaryTopic <http://example.org/nandana#me> ; dc:title ‘Nandana’s FOAF file’ . <http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’; … communicates support for LDP Paging and maximum desired size communicates that the client understand “contents-of-related” status code advertises the response representation is a page provides a link to the next page provides a link to resource being paged and the entity tag of complete resource
  • 18. Center for Open Middleware Few simple scenarios 18 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 19. Center for Open Middleware Modifying a Linked Data resource 19 • uses HTTP PUT or PATCH operations • encourages conditional requests to avoid “lost update” problem GET 200 OK ETag: “123456789” If-Match: W/'123456789' PUT/PATCH Nandana´s FOAF file GET 204 No Content Modify
  • 20. Center for Open Middleware Modifying a Linked Data resource PUT on LDPR 20 PUT /nandana HTTP/1.1 Host: example.org If-Match: W/'123456789' Content-Type: text/turtle @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . uses conditional requests <http://example.org/nandana> a foaf:PersonalProfileDocument; foaf:primaryTopic <http://example.org/nandana#me> ; dc:title ‘Nandana’s FOAF file’ . <http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’; foaf:currentProject <http://www.ldp4j.org/> . HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ modifies one triple PUT 204 No Content
  • 21. Center for Open Middleware Modifying a Linked Data resource PATCH on LDPR 21 PATCH /nandana HTTP/1.1 Host: example.org If-Match: W/'123456789' Content-Type: text/ldpatch @prefix foaf: <http://xmlns.com/foaf/0.1/> . Delete <http://example.org/nandana#me> foaf:currentProject <http://www.seals-project.eu/>. Add <http://example.org/nandana#me> foaf:currentProject <http://www.ldp4j.org/>. HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ uses conditional requests uses LDP Patch format PATCH 204 No Content
  • 22. Center for Open Middleware Modifying a Linked Data resource Constraint validation errors 22 publishes any constraints on create/update HTTP/1.1 422 Unprocessable Entity Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ Link: <http://example.org/constraints/101>; rel=‘http://www.w3.org/ns/ldp#constrainedBy’ 422 Unprocessable Entity • constrainedBy link provides any constraints on the update GET /constraints/101 HTTP/1.1 Host: example.org Accept: */* HTTP/1.1 200 OK Content-Type: text/plain; charset=UTF-8 Content-Length: 150 constraints can be machine readable (better) or in natural language When modifying the current project of a person, the information about the past projects should be preserved using the foaf:pastProject property. Suggested Update: @prefix foaf: <http://xmlns.com/foaf/0.1/> . Delete <http://example.org/nandana#me> foaf:currentProject <http://www.seals-project.eu/>. Add <http://example.org/nandana#me> foaf:currentProject <http://www.ldp4j.org/>. Add <http://example.org/nandana#me> foaf:pastProject < http://www.seals-project.eu/>. GET 200 OK
  • 23. Center for Open Middleware Few simple scenarios 23 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 24. Center for Open Middleware LDP Basic Container 24 • Allows creation of new resources through POST • Maintains containment triples Subject Predicate Object Pattern LDPC-URI ldp:contains document-URI Example http://example.org/nandana/contacts/ ldp:contains http://example.org/nandana/contacts/raul Nandana’s Contact List <<Basic Container>> Raul’s Contact Miguel’s Contact ldp:contains ldp:contains http://example.org/nandana/contacts/ http://example.org/nandana/contacts/raul http://example.org/nandana/contacts/miguel
  • 25. Center for Open Middleware LDP Basic Container 25 GET /nandana/contacts/ HTTP/1.1 Host: example.org Accept: text/turtle advertises LDP Basic Container semantics GET HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag:W/'123456711' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. supports the POST method 200 OK advertises media types accepted by the POST method <http://example.org/nandana/contacts/> a ldp:Container, ldp:BasicContainer; has containment triples dc:title ‘Nandana’s contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> .
  • 26. Center for Open Middleware LDP Basic Container Creating an LDPR 26 Nandana’s Contact List <<Basic Container>> Raul’s Contact Miguel’s Contact ldp:contains ldp:contains Fernando’s Contact POST
  • 27. Center for Open Middleware LDP Basic Container Creating an LDPR 27 POST /nandana/contacts/ HTTP/1.1 Host: example.org Slug: fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' Content-Type: text/turtle @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . <> a vcard:Individual; vcard:hasURL <http://example.org/fernando#me> ; vcard:hasEmail <mailto:fernado@example.com>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] . HTTP/1.1 201 Created Location: http://example.org/nandana/contacts/fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ Content-Length: 0 POST 201 Created
  • 28. Center for Open Middleware LDP Basic Container Creating an LDPR 28 POST /nandana/contacts/ HTTP/1.1 Host: example.org Slug: fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' Content-Type: text/turtle @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . <> a vcard:Individual; vcard:hasURL <http://example.org/fernando#me> ; vcard:hasEmail <mailto:fernado@example.com>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] . provides a hint for the new URI to be minted HTTP/1.1 201 Created Location: http://example.org/nandana/contacts/fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ Content-Length: 0 POST requests the LDPR interaction model a null URI is used to refer to the resource to be created 201 Created provides the URI of the newly created resource
  • 29. Center for Open Middleware LDP Basic Container After the resource creation 29 Nandana’s Contact List <<Basic Container>> Raul’s Contact Miguel’s Contact ldp:contains ldp:contains Fernando’s Contact ldp:contains
  • 30. Center for Open Middleware LDP Basic Container After the resource creation 30 GET /nandana/contacts/ HTTP/1.1 Host: example.org Accept: text/turtle HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag: W/'123456712' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. a containment triple is added for the newly created resource <http://example.org/nandana/contacts/> a a ldp:Container, ldp:BasicContainer; dc:title ‘Nandana’s contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> , <http://example.org/nandana/friends/fernando> . GET 200 OK
  • 31. Center for Open Middleware Few simple scenarios 31 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 32. Center for Open Middleware Isn’t LDP Basic Containers enough? 32 • For most use cases, may be. • There are some limitations • can’t use domain-specific relationships • containment triples have a fixed pattern for <s, p, o> of the triple • containment triples can say relationships among two web resources (the LDPC and resources created using it) • some use cases require relationships between resources other than the LDP Container itself • some use cases require relationship among real world resource (in contrast to information resources / documents) • LDP Direct/Indirect containers introduce membership triples to address aforementioned limitations
  • 33. Center for Open Middleware LDP Direct Container 33 • Maintains the containment triple similar to the basic containers • Maintains membership triples defined in the container Subject Predicate Object Pattern membership-constant-URI membership-predicate member-derived-URI Example http://example.org/nandana#me foaf:knows http://example.org/nandana/contacts/raul • Domain vocabularies can be used in membership predicate http://example.org/nandana/contacts/ Nandana’s Contact List <<Direct Container>> http://example.org/nandana/contacts/raul Raul’s Contact http://example.org/nandana/contacts/miguel Miguel’s Contact ldp:contains ldp:contains Nandana foaf:knows http://example.org/nandana#me foaf:knows
  • 34. Center for Open Middleware Direct Containers 34 HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag: W/'123456711' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. advertises LDP Basic Container interaction model defines the membership-constant-URI <http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; ldp:membershipResource <http://example.org/nandana#me>; ldp:hasMemberRelation foaf:knows; dc:title ‘Nandana’s contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> . defines the membership predicate contains membership triples <http://example.org/nandana#me> foaf:knows <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> . 200 OK
  • 35. Center for Open Middleware LDP Basic Container Creating an LDPR 35 Fernando’s Contact http://example.org/nandana/contacts/ POST Nandana’s Contact List <<Direct Container>> http://example.org/nandana/contacts/raul Raul’s Contact Miguel’s Contact ldp:contains ldp:contains Nandana foaf:knows foaf:knows http://example.org/nandana#me http://example.org/nandana/contacts/miguel
  • 36. Center for Open Middleware LDP Direct Container Creating an LDPR 36 POST /nandana/contacts/ HTTP/1.1 Host: example.org Slug: fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel='type' Content-Type: text/turtle @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . <> a vcard:Individual; vcard:hasURL <http://example.org/fernando#me> ; vcard:hasEmail <mailto:fernado@example.com>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] . HTTP/1.1 201 Created Location: http://example.org/nandana/contacts/fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ Content-Length: 0 POST 201 Created
  • 37. Center for Open Middleware Direct Containers After the resource creation 37 http://example.org/nandana/contacts/ Nandana’s Contact List <<Direct Container>> http://example.org/nandana/contacts/raul Raul’s Contact Miguel’s Contact ldp:contains ldp:contains Nandana foaf:knows foaf:knows http://example.org/nandana#me http://example.org/nandana/contacts/miguel Fernando’s Contact foaf:knows ldp:contains http://example.org/nandana/contacts/fernando
  • 38. Center for Open Middleware Direct Containers After the resource creation 38 HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag: W/'123456711' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. a containment triple is added for the newly created resource <http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; ldp:membershipResource <http://example.org/nandana#me>; ldp:hasMemberRelation foaf:knows; dc:title ‘Nandana’s contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel>, <http://example.org/nandana/friends/fernando> . <http://example.org/nandana#me> foaf:knows <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> , <http://example.org/nandana/friends/fernando> . a membership triple is added for the newly created resource 200 OK
  • 39. Center for Open Middleware Few simple scenarios 39 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 40. Center for Open Middleware LDP Indirect Container 40 Subject Predicate Object Pattern membership-constant-URI membership-predicate member-derived-URI Example http://example.org/nandana#me foaf:knows http://example.org/nandana/contacts/raul Nandana’s Contact List <<Indirect Container>> Raul’s Contact ldp:contains http://www.garcia-castro.com/foaf#me foaf:knows http://example.org/nandana#me http://example.org/miguel#me Nandana foaf:knows Raul Miguel • Maintains the containment triple similar to the basic containers • Maintains membership triples • Full flexibility with the membership triples defined in the container Miguel’s Contact ldp:contains
  • 41. Center for Open Middleware Indirect Containers 41 HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#DirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag:W/'123456711' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . ldp:insertedContentRelation defines how to select the object of the membership triple <http://example.org/nandana/friends/> a a ldp:Container, ldp:IndirectContainer; 200 OK ldp:membershipResource <http://example.org/nandana#me>; ldp:hasMemberRelation foaf:knows; ldp:insertedContentRelation vcard:hasURL; dc:title ‘Nandana’s contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> . <http://example.org/nandana#me> foaf:knows <http://www.garcia-castro.com/foaf#me>, <http://example.org/miguel#me> .
  • 42. Center for Open Middleware LDP Indirect Container Creating an LDPR 42 Nandana’s Contact List <<Indirect Container>> ldp:contains ldp:contains Nandana foaf:knows foaf:knows Raul’s Contact Miguel’s Contact http://www.garcia-castro.com/foaf#me http://example.org/nandana#me Raul POST Fernando <> v:hasURL <#me>. Raul http://example.org/miguel#me
  • 43. Center for Open Middleware LDP Indirect Container Creating an LDPR 43 POST /nandana/contacts/ HTTP/1.1 Host: example.org Slug: fernando Content-Type: text/turtle @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . <> a vcard:Individual; vcard:hasURL <#me> ; vcard:hasEmail <mailto:fernado@example.com>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] . POSTed resource contains a triple with the predicate defined in the ldp:insertedContentRelation HTTP/1.1 201 Created Location: http://example.org/nandana/friends/fernando Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ Content-Length: 0 POST 201 Created
  • 44. Center for Open Middleware Indirect Containers After the resource creation 44 Nandana’s Contact List <<Indirect Container>> ldp:contains ldp:contains Nandana foaf:knows foaf:knows foaf:knows http://www.garcia-castro.com/foaf#me http://example.org/nandana#me Raul http://example.org/miguel#me http://example.org/fernando#me ldp:contains Raul Miguel Fernando Miguel Fernando
  • 45. Center for Open Middleware Indirect Containers After the resource creation 45 HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8 Link: <http://www.w3.org/ns/ldp#IndirectContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type‘ ETag: W/'123456711' Allow: OPTIONS,HEAD,GET,POST Accept-Post: text/turtle Content-Length: 250 @prefix dc: <http://purl.org/dc/terms/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. <http://example.org/nandana/friends/> a a ldp:Container, ldp:DirectContainer; ldp:membershipResource <http://example.org/nandana#me>; ldp:hasMemberRelation foaf:knows; dc:title ‘Nandana’s friends’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel>, <http://example.org/nandana/friends/fernando> . <http://example.org/nandana#me> foaf:knows <http://www.garcia-castro.com/foaf#me>, <http://example.org/miguel#me> <http://example.org/fernando#me> . . 200 OK a containment triple is added for the newly created resource a membership triple is added for the newly created resource the object of the membership triple is selected based on ldp:insertedContentRelation
  • 46. Center for Open Middleware Few simple scenarios 46 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create (PUT) • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 47. Center for Open Middleware Creating a Linked Data resource PUT on a non-existing URI 47 • Clients can decide the URI to be used PUT /nandana/contacts/fernando HTTP/1.1 Host: example.org Content-Type: text/turtle the URI for the resource to be created @prefix vcard: <http://www.w3.org/2006/vcard/ns#> . < http://example.org/nandana/contacts/fernando> a vcard:Individual; vcard:hasURL <http://example.org/fernando#me> ; vcard:hasEmail <mailto:fernado@example.com>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] . HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ PUT 204 No Content
  • 48. Center for Open Middleware Few simple scenarios 48 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 49. Center for Open Middleware Deleting a Linked Data document 49 DELETE /nandana/contacts/fernando HTTP/1.1 Host: example.org HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’ DELETE 204 No Content • Corresponding containment triples and membership triples will be removed from the containers upon deletion • E.g., in the Indirect Container example following triples will be removed @prefix foaf: <http://xmlns.com/foaf/0.1/> . @prefix ldp: <http://www.w3.org/ns/ldp#>. <http://example.org/nandana/contacts/> ldp:contains <http://example.org/nandana/contacts/fernando> . <http://example.org/nandana#me> foaf:knows <http://example.org/fernando#me> .
  • 50. Center for Open Middleware Few simple scenarios 50 • Looking up a Linked Data resource (GET on LDPR) • Modifying a Linked Data resource (PUT/PATCH on LDPR) • Creating Linked Data resources • Basic Container (POST on LDP-BC) • Direct Container (POST on LDP-DC) • Indirect Container (POST on LDP-IC) • PUT to create • Deleting a Linked Data resource (DELETE on LDPR) • Managing non-RDF resources
  • 51. Center for Open Middleware Managing non-RDF resources A container for managing photos 51 • LDPRs can be non-RDF sources (LDP-NR) • An LDP-NR source typically has an associated LDP-RS to contain data about the LDP-NR Nandana’s Photo Gallery <<Basic Container>> ldp:contains ldp:contains describedby describedby http://example.org/nandana/photos/ http://example.org/nandana/photos/sigiriya http://example.org/nandana/photos/sigiriya/meta http://example.org/nandana/photos/eiffel http://example.org/nandana/photos/eiffel/meta
  • 52. Center for Open Middleware 52 Managing non-RDF resources A container for managing photos OPTIONS /nandana/photos/ HTTP/1.1 Host: example.org OPTIONS HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#BasicContainer>; rel='type', <http://www.w3.org/ns/ldp#Resource>; rel='type' Allow: OPTIONS,HEAD,GET,POST Accept-Post: image/png, image/jpeg 204 No Content advertises support for non-RDF (binary) resource creation
  • 53. Center for Open Middleware 53 Managing non-RDF resources Creating a new binary resource http://example.org/nandana/photos/Nandana’s Photo Gallery <<Basic Container>> ldp:contains ldp:contains http://example.org/nandana/photos/ http://example.org/nandana/photos/sigiriya POST
  • 54. Center for Open Middleware 54 Managing non-RDF resources Creating a new binary resource POST /nandana/photos/ HTTP/1.1 Host: example.org Slug: monalisa Content-Type: image/png Content- Length: 1020 ### binary content of the image ### POST HTTP/1.1 201 Created 201 Created Location: http://example.org/nandana/photos/monalisa Link: <http://www.w3.org/ns/ldp#NonRDFSource>; rel="type“, <http://www.w3.org/ns/ldp#Resource>; rel="type“ Link: <http://example.org/nandana/photos/monalisa/meta>; rel="describedby“ Content-Length: 0 provides the URI of the newly created resource provides the URI of an associated LDP-RS that contains the data about the binary resource
  • 55. Center for Open Middleware 55 Managing non-RDF resources Looking up the new binary resource GET /nandana/photos/monalisa HTTP/1.1 Host: example.org Accept: image/png HTTP/1.1 200 OK Content-Type: image/png Link: <http://www.w3.org/ns/ldp#NonRDFSource>; rel="type“, <http://www.w3.org/ns/ldp#Resource>; rel="type“ Link: <http://example.org/nandana/photos/monalisa/meta>; rel="describedby“ ETag: “123456790” Allow: OPTIONS,HEAD,GET, DELETE Content-Length: 1020 ### binary content of the image ### GET 200 OK provides the URI of an associated LDP-RS that contains the data about the binary resource
  • 56. Center for Open Middleware 56 Managing non-RDF resources Looking up the associated LDP-RS GET /nandana/photos/monalisa/meta HTTP/1.1 Host: example.org Accept: text/turtle HTTP/1.1 200 OK Content-Type: text/turtle Link: <http://www.w3.org/ns/ldp#Resource>; rel="type“ ETag: “123456793” Allow: OPTIONS,HEAD,GET, PUT, DELETE prefix wdrs: <http://www.w3.org/2007/05/powder-s#> . @prefix dcterms: <http://purl.org/dc/terms/> . <http://example.org/nandana/photos/monalisa> wdrs:describedby <http://example.org/nandana/photos/monalisa/meta> ; dcterms:creator <http://example.org/nandana#me>; dcterms:created "2013-05-05T10:00"^^xsd:dateTime . GET 200 OK
  • 57. Center for Open Middleware References 57 • Linked Data Platform 1.0 • http://www.w3.org/TR/ldp/ • Linked Data Platform 1.0 Primer • http://www.w3.org/TR/ldp-primer/ • Linked Data Platform Best Practices and Guidelines • http://www.w3.org/TR/ldp-bp/ • Linked Data Platform Paging 1.0 • http://www.w3.org/TR/ldp-paging/ • Linked Data Patch Format • http://www.w3.org/TR/ldpatch/
  • 58. Center for Open Middleware Nandana Mihindukulasooriya, Center for Open Middleware / Ontology Engineering Group Universidad Politécnica de Madrid, Spain. Questions? @nandanamihindu nmihindu@fi.upm.es

Notes de l'éditeur

  1. Alexandre Bertails, Pierre-Antoine Champin, Andrei Sambra., Linked Data Patch Format http://www.w3.org/TR/ldpatch/ Andy Seaborne, Rob Vesse RDF Patch – Describing Changes to an RDF Dataset http://afs.github.io/rdf-patch/ Sandro Hawke. Turtle Patch http://www.w3.org/2001/sw/wiki/TurtlePatch Eric Prud'hommeaux SparqlPatch http://www.w3.org/2001/sw/wiki/SparqlPatch