Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Apache Marmotta 
for 
Multimedia Management 
Jakob Frank, Thomas Kurz 
http://marmotta.apache.org/
Who are we? 
Jakob Frank 
• Researcher at Salzburg Research 
• Solution Architect at Redlink GmbH 
• ASF Committer of Marm...
Apache 
Marmotta
Outline 
Part I : Apache Marmotta 
● Basics of the Semantic Web 
● Apache Marmotta Linked Data Server 
● Marmotta Modules ...
Why we need a Semantic Web ? 
2014-11-19 Apache Marmotta 
Slide from James Hendler (Univ. Maryland)
What is RDF? 
• RDF = Resource Description Framework 
• formal language for describing web resources and 
relationships in...
What is SPARQL? 
• SPARQL is an RDF Query Language specified by W3C 
(v1.1. March 2013) 
• SQL-like syntax 
PREFIX uni : <...
What is Linked Data? 
1. Use URIs to denote things. 
2. Use HTTP URIs so that these things can be referred to 
and looked ...
What is Apache Marmotta? 
● Linked Data Server 
full Linked Data stack 
incl. Content Negotiation and LDP 
● SPARQL Server...
Linked Data Server 
• easily setup to provide your (RDF-)data as Linked Data 
on the Web 
• human- and machine-readable re...
SPARQL Server 
● full support of SPARQL 1.1 through HTTP web 
services 
● SPARQL 1.1 query and update endpoints 
● impleme...
Linked Data Development 
● modular server architecture 
○ combine exactly those features you need 
● collection of indepen...
Marmotta Community 
● discuss with people interested in getting-things-done in 
the Linked Data world 
● build application...
Apache Marmotta Platform 
• JavaEE web application 
• service oriented architecture using CDI 
(J2EE) 
• REST web services...
Platform Architecture 
2014-11-19 Apache Marmotta
Marmotta Core 
• Core functionalities: 
• Linked Data access 
• RDF import/export 
• Admin/Configuration UI 
• Platform gl...
Marmotta Backends 
Choose the one that fits your needs best: 
• KiWi (Marmotta) 
• based on relational database (PostgreSQ...
Marmotta SPARQL 
• SPARQL 1.1 HTTP endpoint 
• SPARQL 1.1 protocol 
• endpoints for query & update 
• SPARQL explorer UI (...
Marmotta LDPath 
• Query language designed for the Linked Data Cloud 
• path based navigation starting at a resource, foll...
Marmotta LDCache 
• transparently access Linked Data resources from other 
servers as if they were local 
• support for wr...
Marmotta Reasoner 
with KiWi Triplestore: 
• rule-based sKWRL reasoner 
• datalog-style rules over RDF triples, 
evaluated...
Marmotta Versioning 
with KiWi Triplestore: 
• transaction-based versioning of all changes to the triple 
store 
• impleme...
Linked Media 
is a “Web scale layer of structured, 
interlinked media annotations (...) inspired 
by the Linked Data movem...
Linked Media - An example 
“Give me the spatio-temporal snippet that shows Lewis 
Jones right beside Connor Macfarlane” 
2...
Media Fragment URIs 
"... a media-format independent, standard 
means of addressing media fragments on the 
Web using Unif...
Open Annotation Model 
“The Open Annotation Core Data Model 
specifies an interoperable framework for 
creating associatio...
SPARQL-MM 
“... is a multimedia-extension for SPARQL 1.1 
implemented for Sesame. By now it supports 
relation and aggrega...
SPARQL-MM 
Relation Function Aggregation Function 
Spatial mm:rightBeside mm:spatialIntersection 
mm:spatialOverlaps mm:sp...
Extending LDP to Media Fragments 
public class ImageWebservice extends LdpWebService { 
@GET @Produces("image/*") 
public ...
You can find and download the demo example code at https://github.com/wikier/apache-marmotta-tutorial-iswc2014.
thanks! 
available under 
CreativeCommons Attribution 4.0 
International License 
http://marmotta.apache.org/ 
MICO FP7 pr...
Linked Media Management with Apache Marmotta
Linked Media Management with Apache Marmotta
Upcoming SlideShare
Loading in …5
×

Linked Media Management with Apache Marmotta

1,103 views

Published on

The integration of multimedia assets on the web with structured (linked) data promises further opportunities for digital market places regarding findability and recommendations. The new W3C standards for Media Annotation, Media Fragment UIRs and Linked Data Platforms build a stable base for this purpose. Thomas Kurz shows how to use the Linked Data Platform Apache Marmotta as a backend for the storage and retrieval of Linked Media. In his talk he is going to show extensions for a seamless integration of media streaming for Non-RDF resources and spatio-regional media fragment retrieval with SPARQL.

Published in: Internet
  • Be the first to comment

Linked Media Management with Apache Marmotta

  1. 1. Apache Marmotta for Multimedia Management Jakob Frank, Thomas Kurz http://marmotta.apache.org/
  2. 2. Who are we? Jakob Frank • Researcher at Salzburg Research • Solution Architect at Redlink GmbH • ASF Committer of Marmotta Thomas Kurz • Researcher at Salzburg Research • Solution Architect at Redlink GmbH • ASF Committer of Marmotta 2014-11-19 Apache Marmotta
  3. 3. Apache Marmotta
  4. 4. Outline Part I : Apache Marmotta ● Basics of the Semantic Web ● Apache Marmotta Linked Data Server ● Marmotta Modules and Libraries Part II: Linked Media ● What is Linked Media ● Semantic Media Annotation ● Extending backend to Media Storage and Retrieval 2014-11-19 Apache Marmotta
  5. 5. Why we need a Semantic Web ? 2014-11-19 Apache Marmotta Slide from James Hendler (Univ. Maryland)
  6. 6. What is RDF? • RDF = Resource Description Framework • formal language for describing web resources and relationships in between • based on a directed labeled graph, represented as triple model (Subject - Predicate - Object) • several syntaxes (RDF/XML, Turtle, ...) • RDFS = RDF Schema • formal language for describing possible instances of the graph (classes and predicates) • both specified by W3C (~ 1998) 2014-11-19 Apache Marmotta
  7. 7. What is SPARQL? • SPARQL is an RDF Query Language specified by W3C (v1.1. March 2013) • SQL-like syntax PREFIX uni : <http://example.org/uni/> SELECT ?name FROM <http://example.org/personal> WHERE { ?s uni:name ?name. ?s a uni:Lecturer. } 2014-11-19 Apache Marmotta
  8. 8. What is Linked Data? 1. Use URIs to denote things. 2. Use HTTP URIs so that these things can be referred to and looked up ("dereferenced") by people and user agents. 3. Provide useful information about the thing when its URI is dereferenced, leveraging standards such as RDF, SPARQL. 4. Include links to other related things (using their URIs) when publishing data on the Web. 2014-11-19 Apache Marmotta
  9. 9. What is Apache Marmotta? ● Linked Data Server full Linked Data stack incl. Content Negotiation and LDP ● SPARQL Server SPARQL 1.1 query, update, protocol ● Linked Data Development Environment collection of modules and libraries for building Linked Data applications ● Community of Open Source Linked Data Developers 2014-11-19 Apache Marmotta
  10. 10. Linked Data Server • easily setup to provide your (RDF-)data as Linked Data on the Web • human- and machine-readable read-write data access based on HTTP content negotiation • Query and interlink you data using SPARQL and LDPath • reference implementation of the Linked Data Platform 2014-11-19 Apache Marmotta
  11. 11. SPARQL Server ● full support of SPARQL 1.1 through HTTP web services ● SPARQL 1.1 query and update endpoints ● implements the SPARQL 1.1 protocol (supports any standard SPARQL client) ● fast native translation of SPARQL to SQL in the KiWi triple store ● lightweight Squebi SPARQL explorer UI 2014-11-19 Apache Marmotta
  12. 12. Linked Data Development ● modular server architecture ○ combine exactly those features you need ● collection of independent libraries for common Linked Data problems: ○ access Linked Data resources (and even some that are not Linked Data): LDClient ○ simple and intuitive query language for Linked Data: LDPath ○ Sesame Triplestore based on a SQL database: KiWi Triplestore optional: Versioning & Reasoning 2014-11-19 Apache Marmotta
  13. 13. Marmotta Community ● discuss with people interested in getting-things-done in the Linked Data world ● build applications that are useful without re-implementing the whole stack ● thorough software engineering process under the roof of the Apache Software Foundation ● Join us! ○ users@marmotta.apache.org ○ dev@marmotta.apache.org 2014-11-19 Apache Marmotta
  14. 14. Apache Marmotta Platform • JavaEE web application • service oriented architecture using CDI (J2EE) • REST web services using JAX-RS (RestEasy) • CDI services found in the classpath are automatically loaded 2014-11-19 Apache Marmotta
  15. 15. Platform Architecture 2014-11-19 Apache Marmotta
  16. 16. Marmotta Core • Core functionalities: • Linked Data access • RDF import/export • Admin/Configuration UI • Platform glue code • Service and Dependency injection • Triple Store • System configuration • Logging 2014-11-19 Apache Marmotta
  17. 17. Marmotta Backends Choose the one that fits your needs best: • KiWi (Marmotta) • based on relational database (PostgreSQL, MySQL, H2) • highly scaleable • Sesame Native • BigData • based on BigData clustered triple store • Titan Graph DB • backed by HBase, Cassandra or BerkeleyDB 2014-11-19 Apache Marmotta
  18. 18. Marmotta SPARQL • SPARQL 1.1 HTTP endpoint • SPARQL 1.1 protocol • endpoints for query & update • SPARQL explorer UI (Squebi) with KiWi Triplestore: • Translation of most SPARQL constructs into native SQL for improved performance 2014-11-19 Apache Marmotta
  19. 19. Marmotta LDPath • Query language designed for the Linked Data Cloud • path based navigation starting at a resource, following links across the Cloud • limited expressivity (c.f. SPARQL) but full Linked Data support @prefix foaf: < http://xmlns.com/foaf/0.1/ >; @prefix gn: < http://www.geonames.org/ontology# >; name = foaf:firstName :: xsd:string; friends = foaf:knows / fn:concat(foaf:firstName, “ “, foaf:surname) :: xsd:string; country = foaf:based_near / gn:parentCountry / gn:name :: xsd:string; 2014-11-19 Apache Marmotta
  20. 20. Marmotta LDCache • transparently access Linked Data resources from other servers as if they were local • support for wrapping some legacy data sources (e.g. Facebook Graph) • local triple cache, honors HTTP expiry and cache headers SPARQL does not work well with LDCache, use LDPath instead! 2014-11-19 Apache Marmotta
  21. 21. Marmotta Reasoner with KiWi Triplestore: • rule-based sKWRL reasoner • datalog-style rules over RDF triples, evaluated in forward-chaining procedure • truth maintenance @prefix skos: <http://www.w3.org/2004/02/skos/core#> ($1 skos:broaderTransitive $2) -> ($1 skos:broader $2) ($1 skos:narrowerTransitive $2) -> ($1 skos:narrower $2) ($1 skos:broaderTransitive $2), ($2 skos:broaderTransitive $3) -> ($1 skos:broaderTransitive $3) ($1 skos:narrowerTransitive $2), ($2 skos:narrowerTransitive $3) -> ($1 skos:narrowerTransitive $3) ($1 skos:broader $2) -> ($2 skos:narrower $1) ($1 skos:narrower $2) -> ($2 skos:broader $1) 2014-11-19 Apache Marmotta
  22. 22. Marmotta Versioning with KiWi Triplestore: • transaction-based versioning of all changes to the triple store • implementation of Memento protocol for exploring changes over time • snapshot/wayback functionality (i.e. possibility to query the state of the triple store at a given time in history) 2014-11-19 Apache Marmotta
  23. 23. Linked Media is a “Web scale layer of structured, interlinked media annotations (...) inspired by the Linked Data movement for making structured, interlinked descriptions of resources better available online.” Lyndon J. B. Nixon. The importance of linked media to the future web: lime 2013 keynote talk - a proposal for the linked media research agenda. WWW Companion Volume, page 455-456. International World Wide Web Conferences Steering Committee / ACM, (2013). 2014-11-19 Apache Marmotta
  24. 24. Linked Media - An example “Give me the spatio-temporal snippet that shows Lewis Jones right beside Connor Macfarlane” 2014-11-19 Apache Marmotta
  25. 25. Media Fragment URIs "... a media-format independent, standard means of addressing media fragments on the Web using Uniform Resource Identifiers." [W3C Recommendation: Media Fragments URI 1.0 (basic)] http://test.org/video.mpg?t=10,20&xywh=10,20,30,40 the spatial range having a dimension from 30 to 40 pixels with upper-left point (10px, 20px) from video.mpg on domain test.org from second 10 to 20. 2014-11-19 Apache Marmotta
  26. 26. Open Annotation Model “The Open Annotation Core Data Model specifies an interoperable framework for creating associations between related resources … .“ http://www.openannotation.org/spec/core/ 2014-11-19 Apache Marmotta
  27. 27. SPARQL-MM “... is a multimedia-extension for SPARQL 1.1 implemented for Sesame. By now it supports relation and aggregation functions for Media Fragments URI 1.0 … .” 2014-11-19 Apache Marmotta https://github.com/tkurz/sparql-mm PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX mm: <http://linkedmultimedia.org/sparql-mm/ns/1.0.0/function#> SELECT ?f1 ?f2 (mm:boundingBox(?f1,?f2) AS ?box) WHERE { ?f1 rdfs:label "a". ?f2 rdfs:label "b". FILTER mm:rightBeside(?f1,?f2) }
  28. 28. SPARQL-MM Relation Function Aggregation Function Spatial mm:rightBeside mm:spatialIntersection mm:spatialOverlaps mm:spatialBoundingBox … … Temporal mm:after mm:temporalIntersection mm:temporalOverlaps mm:temporalIntermediate … … Combined mm:overlaps mm:boundingBox mm:contains mm:intersection 2014-11-19 Apache Marmotta
  29. 29. Extending LDP to Media Fragments public class ImageWebservice extends LdpWebService { @GET @Produces("image/*") public Response GET(..., @QueryParam("xywh") Rectangle rectangle) { if(rectangle != null) { // get mimetype for uri with LdpService // get binary data with LdpBinaryStoreService // read and crop image with ImageIO return Response.ok().header( "Content-Type",mimetype).entity(image).build(); } return super.GET(uriInfo, type, preferHeader); } } 2014-11-19 Apache Marmotta
  30. 30. You can find and download the demo example code at https://github.com/wikier/apache-marmotta-tutorial-iswc2014.
  31. 31. thanks! available under CreativeCommons Attribution 4.0 International License http://marmotta.apache.org/ MICO FP7 project (grant no. 610480) Fusepool P3 project (grant no. 609696) acknowledgments to:

×