Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/atomgraph/linked-data-templates
LDT specification draft
https://github.com/atomgraph/linked-data-templates
crud hypermedia knowledge-graph linked-data protocol rest semantic-web sparql specification
Last synced: about 3 hours ago
JSON representation
LDT specification draft
- Host: GitHub
- URL: https://github.com/atomgraph/linked-data-templates
- Owner: AtomGraph
- Created: 2016-03-22T15:33:19.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-08-29T16:48:04.000Z (about 3 years ago)
- Last Synced: 2024-10-31T17:39:04.290Z (18 days ago)
- Topics: crud, hypermedia, knowledge-graph, linked-data, protocol, rest, semantic-web, sparql, specification
- Homepage: https://atomgraph.github.io/Linked-Data-Templates/
- Size: 284 KB
- Stars: 16
- Watchers: 11
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Linked Data Templates
Linked Data Templates (LDT) is a uniform protocol for read-write Linked Data. This document defines an abstract syntax (a data model) of Linked Data applications with SPARQL backends, and semantics of CRUD interactions against their resources.
LDT can be used to design ontology-driven Web application programming interfaces (APIs). It provides facilities to define interactions with application resources declaratively using SPARQL commands. It also provides a standard method to evaluate requests into responses over application ontology and dataset.
**LDT specification draft is published by the [Declarative Linked Data Apps Community Group](https://www.w3.org/community/declarative-apps/) and hosted on https://atomgraph.github.io/Linked-Data-Templates/**
## Architecture
![LDT architecture](https://atomgraph.github.io/Linked-Data-Templates/images/components.svg "LDT architecture")
## Example
This is an example of an LDT ontology with templates and queries:
```turtle
@prefix : .
@prefix ldt: .
@prefix owl: .
@prefix rdfs: .
@prefix sp: .
@prefix spl: .: a ldt:Ontology ;
owl:imports ldt:, sp: ;
rdfs:label "Example ontology" .:PersonItem a ldt:Template ;
rdfs:label "Person item" ;
ldt:match "/people/{familyName}" ;
ldt:param :GraphParam ;
ldt:query :DescribeWithTopic ;
ldt:update :DeleteWithTopic ;
rdfs:isDefinedBy : .:GraphParam a ldt:Parameter ;
rdfs:label "Graph parameter" ;
spl:predicate :g ;
spl:valueType rdfs:Resource ;
spl:optional true ;
rdfs:isDefinedBy : .:DescribeWithTopic a ldt:Query, sp:Describe ;
rdfs:label "Describe with topic" ;
sp:text """PREFIX foaf:DESCRIBE ?this ?primaryTopic
WHERE
{ GRAPH ?g
{ ?this ?p ?o
OPTIONAL
{ ?this foaf:primaryTopic ?primaryTopic .
?primaryTopic
?primaryTopicP ?primaryTopicO
}
}
}""" ;
rdfs:isDefinedBy : .:DeleteWithTopic a ldt:Update, sp:Modify ;
rdfs:label "Delete with topic" ;
sp:text """PREFIX foaf:DELETE {
GRAPH ?g {
?this ?p ?o .
?primaryTopic ?primaryTopicP ?primaryTopicO .
}
}
WHERE
{ GRAPH ?g
{ ?this ?p ?o
OPTIONAL
{ ?this foaf:primaryTopic ?primaryTopic .
?primaryTopic ?primaryTopicP ?primaryTopicO
}
}
}""" ;
rdfs:isDefinedBy : .
```## Implementations
[AtomGraph Processor](https://github.com/AtomGraph/Processor) is an LDT processor and server. It includes an LDT test suite.
## Contributions
The specification draft is published from the [index.html](https://github.com/AtomGraph/Linked-Data-Templates/blob/gh-pages/index.html) document in the `gh-pages` branch.
Please raise issues or create pull requests.