W3C Library Linked Data Incubator Group: Review of the Final Report
Learning W3C Linked Data Platform with examples
-
Upload
nandana-mihindukulasooriya -
Category
Technology
-
view
1.395 -
download
1
description
Transcript of Learning W3C Linked Data Platform with examples
![Page 1: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/1.jpg)
Center for Open Middleware
Center for Open Middleware
Nandana Mihindukulasooriya, Center for Open Middleware / Ontology Engineering Group
Universidad Politécnica de Madrid,
Spain.
@nandanamihindu / [email protected]
LearningW3C Linked Data Platform 1.0
with examples
![Page 2: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/2.jpg)
Center for Open Middleware
2
License
• 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.
![Page 3: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/3.jpg)
Center for Open Middleware
3
Agenda
• 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
![Page 4: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/4.jpg)
Center for Open Middleware
4
INTRODUCTION
Learning W3C Linked Data Platform 1.0 with examples
![Page 5: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/5.jpg)
Center for Open Middleware
5
Back to the basics …
“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.htmlLeo 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/
![Page 6: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/6.jpg)
Center for Open Middleware
6
Let´s see an example
Nandana Sampath
Mihindukulasooriya
http://id.nandana.org/card#me
GET /card#me HTTP/1.1Host: id.nandana.org
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Content-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 personal profile’ .
<http://example.org/nandana#me> a foaf:Person; foaf:name ‘Nandana Mihindukulasooriya’ .
HTTP/1.1 200 ok content-type: text/turtle; charset=utf-8content-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 personal profile’ .
<http://example.org/nandana#me> a foaf:person; foaf:name ‘nandana 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> .
(1) (2)
(3)
(4)
![Page 7: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/7.jpg)
Center for Open Middleware
7
Linked Data in practice
• 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
![Page 8: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/8.jpg)
Center for Open Middleware
8
Linked Data Platform 1.0http://www.w3.org/TR/ldp/
• 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
![Page 9: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/9.jpg)
Center for Open Middleware
9
LDP Terminologyconforms 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
![Page 10: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/10.jpg)
Center for Open Middleware
10
EXAMPLES
Learning W3C Linked Data Platform 1.0 with examples
![Page 11: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/11.jpg)
Center for Open Middleware
11
Few simple scenarios
• 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
![Page 12: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/12.jpg)
Center for Open Middleware
12
Looking up a Linked Data resource
Nandana´sFOAF 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
200 OK
GET
![Page 13: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/13.jpg)
Center for Open Middleware
13
Looking up a Linked Data resourceGET on LDPR
GET /nandana HTTP/1.1Host: example.orgAccept: text/turtle
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type”ETag: “123456789”Allow: OPTIONS,HEAD,GET,PUT,PATCHAccept-Patch: text/ldpatchContent-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
![Page 14: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/14.jpg)
Center for Open Middleware
14
Looking up a Linked Data documentGET on LDPR
GET /nandana HTTP/1.1Host: example.orgAccept: text/turtle
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <http://www.w3.org/ns/ldp#Resource>; rel=“type”ETag: “123456789”Allow: OPTIONS,HEAD,GET,PUT,PATCHAccept-Patch: text/ldpatchContent-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/> .
HTTP/1.1 conformant has Turtle and JSON-LD representations advertises support for LDP
provides an entity tagadvertises which operations are allowed
advertises media types accepted by the PATCH method
has at least one rdf:type set explicitly
supports the OPTIONS,HEAD, and PATCH operations
reuses existing vocabularies
use standard vocabularies [ e.g., Dublin Core, RDF(S) ]
![Page 15: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/15.jpg)
Center for Open Middleware
15
Looking up a Linked Data documentGET on LDPR with paging
GET /nandana HTTP/1.1Host: example.orgAccept: text/turtlePrefer: return=representation; max-triple-count="500"
HTTP/1.1 303 See OtherLocation: <http://example.org/nandana?page1> redirects to the first page
GET
303 See Other
communicates support for LDP Paging and maximum desired size
![Page 16: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/16.jpg)
Center for Open Middleware
16
GET
Looking up a Linked Data documentGET on LDPR with paging
GET /nandana?page1 HTTP/1.1Host: example.orgAccept: text/turtlePrefer: return=representation; max-triple-count="500"
HTTP/1.1 200 OKContent-Type: text/turtleETag: "_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’;…
GET /nandana HTTP/1.1Host: example.orgAccept: text/turtlePrefer: return=representation; max-triple-count="500"
HTTP/1.1 303 See OtherLocation: <http://example.org/nandana?page1>
redirects to the first page
provides a link to the next page
provides a link to resource being paged and the entity tag of complete resource
303 See Other
GET
200 OKadvertises the response representation is a page
GETcommunicates support for LDP Paging and maximum desired size
![Page 17: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/17.jpg)
Center for Open Middleware
17
Looking up a Linked Data documentGET on LDPR with paging (optimized)
GET /nandana HTTP/1.1Host: example.orgAccept: text/turtlePrefer: return=representation; max-triple-count="500“Prefer: contents-of-related
HTTP/1.1 209 Contents of RelatedContent-Type: text/turtleETag: "_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
![Page 18: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/18.jpg)
Center for Open Middleware
18
Few simple scenarios
• 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
![Page 19: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/19.jpg)
Center for Open Middleware
19
Modifying a Linked Data resource
200 OK
PUT/PATCH
ETag: “123456789”
If-Match: W/'123456789'Nandana´sFOAF file
GET
204 No Content
GET
Modify
• uses HTTP PUT or PATCH operations• encourages conditional requests to avoid “lost update”
problem
![Page 20: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/20.jpg)
Center for Open Middleware
20
Modifying a Linked Data resourcePUT on LDPR
PUT /nandana HTTP/1.1Host: example.orgIf-Match: W/'123456789'Content-Type: text/turtle
@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.ldp4j.org/> .
HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’
uses conditional requests
modifies one triple
PUT
204 No Content
![Page 21: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/21.jpg)
Center for Open Middleware
21
Modifying a Linked Data resourcePATCH on LDPR
PATCH /nandana HTTP/1.1Host: example.orgIf-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
![Page 22: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/22.jpg)
Center for Open Middleware
22
Modifying a Linked Data resource Constraint validation errors
HTTP/1.1 422 Unprocessable EntityLink: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’Link: <http://example.org/constraints/101>; rel=‘http://www.w3.org/ns/ldp#constrainedBy’
GET /constraints/101 HTTP/1.1Host: example.orgAccept: */*
HTTP/1.1 200 OK Content-Type: text/plain; charset=UTF-8Content-Length: 150
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/>.
• constrainedBy link provides any constraints on the update
publishes any constraints on create/update
constraints can be machine readable (better) or in natural language
422 Unprocessable Entity
GET
200 OK
![Page 23: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/23.jpg)
Center for Open Middleware
23
Few simple scenarios
• 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
![Page 24: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/24.jpg)
Center for Open Middleware
24
LDP Basic Container
Nandana’s Contact List<<Basic Container>>
• Allows creation of new resources through POST• Maintains containment triples
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
http://example.org/nandana/contacts/http://example.org/nandana/contacts/raul
http://example.org/nandana/contacts/miguel
Subject Predicate Object
Pattern LDPC-URI ldp:contains document-URI
Example http://example.org/nandana/contacts/ ldp:contains http://example.org/nandana/contacts/raul
![Page 25: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/25.jpg)
Center for Open Middleware
25
LDP Basic Container
GET /nandana/contacts/ HTTP/1.1Host: example.orgAccept: text/turtle
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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/contacts/> 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> .
advertises LDP Basic Container semantics
supports the POST method
advertises media types accepted by the POST method
has containment triples
GET
200 OK
![Page 26: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/26.jpg)
Center for Open Middleware
26
LDP Basic ContainerCreating an LDPR
Nandana’s Contact List<<Basic Container>>
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
Fernando’sContact
POST
![Page 27: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/27.jpg)
Center for Open Middleware
27
LDP Basic ContainerCreating an LDPR
POST /nandana/contacts/ HTTP/1.1Host: example.orgSlug: fernandoLink: <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:[email protected]>; 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
![Page 28: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/28.jpg)
Center for Open Middleware
28
LDP Basic ContainerCreating an LDPR
POST /nandana/contacts/ HTTP/1.1Host: example.orgSlug: fernandoLink: <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:[email protected]>; 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
provides a hint for the new URI to be minted
requests the LDPR interaction model
a null URI is used to refer to the resource to be created
provides the URI of the newly created resource
POST
201 Created
![Page 29: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/29.jpg)
Center for Open Middleware
29
LDP Basic ContainerAfter the resource creation
Nandana’s Contact List<<Basic Container>>
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
Fernando’sContact
ldp:contains
![Page 30: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/30.jpg)
Center for Open Middleware
30
LDP Basic ContainerAfter the resource creation
GET /nandana/contacts/ HTTP/1.1Host: example.orgAccept: text/turtle
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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/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> .
a containment triple is added for the newly created resource
GET
200 OK
![Page 31: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/31.jpg)
Center for Open Middleware
31
Few simple scenarios
• 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
![Page 32: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/32.jpg)
Center for Open Middleware
32
Isn’t LDP Basic Containers enough?
• 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
![Page 33: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/33.jpg)
Center for Open Middleware
33
LDP Direct Container
Nandana’s Contact List<<Direct Container>>
• Maintains the containment triple similar to the basic containers• Maintains membership triples
• Domain vocabularies can be used in membership predicate
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
Nandana
foaf:knows
foaf:knowshttp://example.org/nandana#me
http://example.org/nandana/contacts/miguel
http://example.org/nandana/contacts/raul
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
http://example.org/nandana/contacts/
defined in the container
![Page 34: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/34.jpg)
Center for Open Middleware
34
Direct Containers HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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 contact list’; ldp:contains <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> .
<http://example.org/nandana#me> foaf:knows <http://example.org/nandana/friends/raul>, <http://example.org/nandana/friends/miguel> .
advertises LDP Basic Container interaction model
defines the membership-constant-URI
defines the membership predicate
contains membership triples
200 OK
![Page 35: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/35.jpg)
Center for Open Middleware
35
LDP Basic ContainerCreating an LDPR
Fernando’sContact
POST Nandana’s Contact List<<Direct Container>>
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
Nandana
foaf:knows
foaf:knowshttp://example.org/nandana#me
http://example.org/nandana/contacts/
http://example.org/nandana/contacts/miguel
http://example.org/nandana/contacts/raul
![Page 36: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/36.jpg)
Center for Open Middleware
36
LDP Direct ContainerCreating an LDPR
POST /nandana/contacts/ HTTP/1.1Host: example.orgSlug: fernandoLink: <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:[email protected]>; 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
![Page 37: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/37.jpg)
Center for Open Middleware
37
Direct ContainersAfter the resource creation
Nandana’sContact List<<Direct Container>>
Raul’sContact
Miguel’sContact
ldp:contains
ldp:contains
Nandana
foaf:knows
http://example.org/nandana#me
http://example.org/nandana/contacts/
http://example.org/nandana/contacts/miguel
http://example.org/nandana/contacts/raul
Fernando’sContact
foaf:knows
foaf:knows
ldp:contains
http://example.org/nandana/contacts/fernando
![Page 38: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/38.jpg)
Center for Open Middleware
38
Direct ContainersAfter the resource creation
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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 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 containment triple is added for the newly created resource
a membership triple is added for the newly created resource
200 OK
![Page 39: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/39.jpg)
Center for Open Middleware
39
Few simple scenarios
• 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
![Page 40: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/40.jpg)
Center for Open Middleware
40
LDP Indirect Container
Nandana’s Contact List<<Indirect Container>>
Raul’sContact
ldp:contains
Nandana foaf:knows
foaf:knows
http://www.garcia-castro.com/foaf#me
http://example.org/nandana#me
http://example.org/miguel#me
Raul
Miguel
• Maintains the containment triple similar to the basic containers• Maintains membership triples
• Full flexibility with the membership triples
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
defined in the container
Miguel’sContact
ldp:contains
![Page 41: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/41.jpg)
Center for Open Middleware
41
Indirect Containers HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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#> .
<http://example.org/nandana/friends/> a a ldp:Container, ldp:IndirectContainer; 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> .
200 OK
ldp:insertedContentRelation defines how to select the object of the membership triple
![Page 42: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/42.jpg)
Center for Open Middleware
42
LDP Indirect ContainerCreating an LDPR
Nandana’s Contact List<<Indirect Container>>
ldp:contains
ldp:contains
Nandana
foaf:knows
foaf:knows
http://www.garcia-castro.com/foaf#me
http://example.org/nandana#me
Raul
POSTFernando<> v:hasURL <#me>.
http://example.org/miguel#me
Raul’sContact
Miguel’sContact
Raul
![Page 43: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/43.jpg)
Center for Open Middleware
43
LDP Indirect ContainerCreating an LDPR
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 /nandana/contacts/ HTTP/1.1Host: example.orgSlug: fernandoContent-Type: text/turtle
@prefix vcard: <http://www.w3.org/2006/vcard/ns#> .
<> a vcard:Individual; vcard:hasURL <#me> ; vcard:hasEmail <mailto:[email protected]>; vcard:fn "Fernando Serena"; vcard:hasTelephone [ a vcard:Home, vcard:Voice; vcard:hasValue <tel:+34655555555> ] .
POST
201 Created
POSTed resource contains a triple with the predicate defined in the ldp:insertedContentRelation
![Page 44: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/44.jpg)
Center for Open Middleware
44
Indirect ContainersAfter the resource creation
Nandana’s Contact List<<Indirect Container>>
ldp:contains
ldp:contains
Nandana
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
foaf:knows
ldp:contains
Raul
Miguel
Fernando
Miguel
Fernando
![Page 45: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/45.jpg)
Center for Open Middleware
45
Indirect ContainersAfter the resource creation
HTTP/1.1 200 OK Content-Type: text/turtle; charset=UTF-8Link: <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,POSTAccept-Post: text/turtleContent-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
![Page 46: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/46.jpg)
Center for Open Middleware
46
Few simple scenarios
• 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
![Page 47: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/47.jpg)
Center for Open Middleware
47
Creating a Linked Data resourcePUT on a non-existing URI
PUT /nandana/contacts/fernando HTTP/1.1Host: example.orgContent-Type: text/turtle
@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:[email protected]>; 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’
the URI for the resource to be created
• Clients can decide the URI to be used
PUT
204 No Content
![Page 48: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/48.jpg)
Center for Open Middleware
48
Few simple scenarios
• 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
![Page 49: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/49.jpg)
Center for Open Middleware
49
Deleting a Linked Data document
DELETE /nandana/contacts/fernando HTTP/1.1Host: example.org
HTTP/1.1 204 No Content Link: <http://www.w3.org/ns/ldp#Resource>; rel=‘type’
• 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> .
DELETE
204 No Content
![Page 50: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/50.jpg)
Center for Open Middleware
50
Few simple scenarios
• 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
![Page 51: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/51.jpg)
Center for Open Middleware
51
Managing non-RDF resources A container for managing photos • 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
![Page 52: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/52.jpg)
Center for Open Middleware
52
OPTIONS /nandana/photos/ HTTP/1.1Host: example.org
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,POSTAccept-Post: image/png, image/jpeg
Managing non-RDF resources A container for managing photos
OPTIONS
204 No Content
advertises support for non-RDF (binary) resource creation
![Page 53: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/53.jpg)
Center for Open Middleware
53
Nandana’s Photo Gallery <<Basic Container>>
ldp:contains
ldp:contains
http://example.org/nandana/photos/
http://example.org/nandana/photos/sigiriya
http://example.org/nandana/photos/eiffel
Managing non-RDF resources Creating a new binary resource
POST
![Page 54: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/54.jpg)
Center for Open Middleware
54
POST /nandana/photos/ HTTP/1.1Host: example.orgSlug: monalisaContent-Type: image/pngContent- Length: 1020
### binary content of the image ###
HTTP/1.1 201 CreatedLocation: http://example.org/nandana/photos/monalisaLink: <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
Managing non-RDF resources Creating a new binary resource
POST
201 Created
provides the URI of the newly created resource
provides the URI of an associated LDP-RS that contains the data about the binary resource
![Page 55: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/55.jpg)
Center for Open Middleware
55
Managing non-RDF resources Looking up the new binary resource
GET /nandana/photos/monalisa HTTP/1.1Host: example.orgAccept: image/png
HTTP/1.1 200 OK Content-Type: image/pngLink: <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, DELETEContent-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
![Page 56: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/56.jpg)
Center for Open Middleware
56
Managing non-RDF resources Looking up the associated LDP-RS
GET /nandana/photos/monalisa/meta HTTP/1.1Host: example.orgAccept: text/turtle
HTTP/1.1 200 OK Content-Type: text/turtleLink: <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
![Page 57: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/57.jpg)
Center for Open Middleware
57
References
• 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/
![Page 58: Learning W3C Linked Data Platform with examples](https://reader033.fdocuments.net/reader033/viewer/2022052904/557d6091d8b42aba3d8b4fff/html5/thumbnails/58.jpg)
Center for Open Middleware
Center for Open Middleware
Nandana Mihindukulasooriya, Center for Open Middleware / Ontology Engineering Group
Universidad Politécnica de Madrid,
Spain.
Questions?@nandanamihindu