SlideShare une entreprise Scribd logo
1  sur  60
Télécharger pour lire hors ligne
Semantic TYPO3
Develop Extensions with Semantic Web in Mind
Jochen Rau @ T3CON11SF
June 11, 2011
(c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
Concepts



           (c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
Implementations



   (c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
http://commons.wikimedia.org/wiki/File:Z%C3%BCrich_-_Seefeld_-_Heureka_IMG_1757.JPG
No Rocket
 Science
Let's make some assertions about me




Jochen's is a Person.
Jochen's age is 40.
Jochen's name is Jochen Rau.
Jochen likes TYPO3 and Wine.
Jochen lives in Massachusetts.
Let's make some assertions about me




Jochen's is a Person.
Jochen's age is 40.
Jochen's name is Jochen Rau.
Jochen likes TYPO3 and Wine.
Jochen lives in Massachusetts.




  Subject Predicate Object
Let's make some assertions about me




Jochen's is a Person.
Jochen's age is 40.
Jochen's name is Jochen Rau.
Jochen likes TYPO3 and Wine.
Jochen lives in Massachusetts.




  Subject Predicate Object
            Triple
Let's make some assertions about me

                                  Jochen                   40
                                              age
                                                    name
                                                                Jochen Rau
                              is a                likes         TYPO3
                                             likes
                                  lives in
Jochen's is a Person.    Person
Jochen's age is 40.                               Wine
                                  Massachusetts
Jochen's name is Jochen Rau.
Jochen likes TYPO3 and Wine.
Jochen lives in Massachusetts.
Let's make some assertions about me

                                  Jochen                   40
                                              age
                                                    name
                                                                  Jochen Rau
                              is a                likes           TYPO3
                                             likes
                                  lives in
Jochen's is a Person.    Person
Jochen's age is 40.                               Wine
                                  Massachusetts
Jochen's name is Jochen Rau.
Jochen likes TYPO3 and Wine.
                                                               TYPO3
Jochen lives in Massachusetts.
                                                                       license    GNU General
                                                                                  Public License
                                                                description

                                                    platform            TYPO3 is a free and
                                                                        open source content
                                                                        management system as
                                                                        well as a Model–view–
                                                                        controller (MVC) Web
                                                         PHP            Application Development
                                                                        framework written in
                                                                        PHP.
Let's make some assertions about me

                                  Jochen                   40
                                              age
                                                    name
                                                                  Jochen Rau
                              is a                likes           TYPO3
                                             likes                                   GNU General
                                                                          license
                                  lives in                                           Public License
Jochen's is a Person.    Person                                    description
Jochen's age is 40.                               Wine
                                  Massachusetts
Jochen's name is Jochen Rau.                             platform          TYPO3 is a free and
                                                                           open source content
Jochen likes TYPO3 and Wine.                                               management system as
Jochen lives in Massachusetts.                                             well as a Model–view–
                                                                           controller (MVC) Web
                                                            PHP            Application Development
                                                                           framework written in
                                                                           PHP.
Unique Names for Resources

                Jochen




                  knows

                          Sebastian




                           likes




                                   Paris
Unique Names for Resources

                            <http://typoplanet.de/resource/Jochen>




                          <http://xmlns.com/foaf/0.1/knows>


                                               <http://sebastian.kurfuerst.eu/>




                                    <http://xmlns.com/foaf/0.1/likes>




                                                  <http://en.wikipedia.org/wiki/Paris_(2008_film)>
<http://typoplanet.de/resource/Jochen>

<http://typoplanet.de/resource/hg132k4jhjh1234t>
<urn:uuid:67ecc3bd-07e2-44f4-a788-597bf9949f0c>

<tel:+1-617-555-7332>
<mailto:jochen.rau@typoplanet.de>
Unique Names for Resources

              <http://typoplanet.de/resource/Jochen>




            <http://xmlns.com/foaf/0.1/knows>


                              <http://sebastian.kurfuerst.eu/>




                           <http://sebastian.kurfuerst.eu/>




                <http://xmlns.com/foaf/0.1/likes>




                              <http://en.wikipedia.org/wiki/Paris_(2008_film)>
Turtle Serialization of an RDF Graph

<http://example.com/JR>
	   <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> .

<http://example.com/JR>
	   <http://xmlns.com/foaf/0.1/age> "40" .

<http://example.com/JR>
	   <http://xmlns.com/foaf/0.1/name> "Jochen Rau" .

<http://example.com/JR>
	   <http://xmlns.com/foaf/0.1/interest> <http://dbpedia.org/resource/TYPO3> .

<http://example.com/JR>
	   <http://xmlns.com/foaf/0.1/interest> <http://dbpedia.org/resource/Wine> .

<http://example.com/JR>
	   <http://example.com/livesIn> <http://data.nytimes.com/Massachusetts> .
Turtle Serialization of an RDF Graph
@prefix   ex: <http://example.org/> .
@prefix   dbp: <http://dbpedia.org/resource/> .
@prefix   nyt: <http://data.nytimes.com/> .
@prefix   foaf: <http://xmlns.com/foaf/0.1/> .

ex:JR		   a	 	 	 	 	 foaf:Person .
ex:JR		   foaf:age		 	 "40" .
ex:JR		   foaf:name	 	 "Jochen Rau" .
ex:JR		   foaf:interest	 dbp:TYPO3 .
ex:JR		   foaf:interest	 dbp:Wine .
ex:JR		   ex:livesIn	 	 nyt:Massachusetts .
Turtle Syntactic sugar
@prefix   ex: <http://example.org/> .
@prefix   dbp: <http://dbpedia.org/resource/> .
@prefix   nyt: <http://data.nytimes.com/> .
@prefix   foaf: <http://xmlns.com/foaf/0.1/> .

ex:JR		   a	 	 	 	      	   foaf:Person ;
	 	 	     ex:age	 	     	   "40" ;
	 	 	     ex:name	 	    	   "Jochen Rau" ;
	 	 	     ex:likes		    	   dbp:TYPO3 ;
	 	 	     ex:likes		    	   dbp:Wine ;
	 	 	     ex:livesIn	   	   nyt:Massachusetts .
Turtle And even more syntactic sugar
@prefix   ex: <http://example.org/> .
@prefix   dbp: <http://dbpedia.org/resource/> .
@prefix   nyt: <http://data.nytimes.com/> .
@prefix   foaf: <http://xmlns.com/foaf/0.1/> .

ex:JR		   a	 	 	 	      	   foaf:Person ;
	 	 	     ex:age	 	     	   "40" ;
	 	 	     ex:name	 	    	   "Jochen Rau" ;
	 	 	     ex:likes		    	   dbp:TYPO3 ,
	 	 	     	 	 	 	       	   dbp:Wine ;
	 	 	     ex:livesIn	   	   nyt:Massachusetts .
RDF at a Glance

 Simple, ubiquitous way of modeling data
 Main concepts
    Triples of subject, predicate, and object
    Unique names for resources
    Objects can also be literal values (with data type or language)
 Performant data stores (e.g. Virtuoso, AllegroGraph, BigOWLIM)
 Existing frameworks with rich APIs (e.g. JENA, Sesame, Erfurt)
 Billions of triples as Open Data available (e.g. Wikipedia,
 MusicBrainz)
 Many di erent serialization formats (e.g. RDF/XML, Turtle, N3)
 Makes data migration much easier
Description Logic and Rules OWL and RIF

 What? Why?
   Knowledge is spread all over the system:
   Domain model, database scheme, TS con gurartion, FlexForm,
   TCA, documentation, Templates ...
   In di erent Formats:
   SQL, TypoScript, XML, PHP, HTML ...
   Using inconsistent terminology:
   "Template" in TYPO3?
 So, what to do?
   data and metadata in the same data structure (RDF)
   use well de ned languages to describe (meta)data (OWL RIF)
Description Logic and Rules OWL and RIF




                     Knublauch, Holger. KBeans Specification: Semantic Transparency for
                     Components and Domain Models. Technical Report FAW-TR-01001,
                     FAW Ulm, 2001.
RDF in HTML

Three di erent standards to markup your HTML code
   Microformats
   Microdata (part of HTML5 spec)
   RDFa ("RDF for attributes", W3C Recommendation)
A subset of RDF
Makes web pages machine readable by your favorite search engine
RDF in HTML RDFa
<div>

   <p>
     Alice Birpemswick
   </p>

   <p>
     Email: <a href="mailto:alice@example.com">alice@example.com</a>
   </p>

   <p>
     Phone: <a href="tel:+1-617-555-7332">+1 617.555.7332</a>
   </p>
</div>
RDF in HTML RDFa
<div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/resource/alice"
typeof="Person">
   <p property="foaf:name">
     Alice Birpemswick
   </p>

   <p>
     Email: <a rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com</a>
   </p>

   <p>
     Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332</a>
   </p>
</div>
RDF in HTML RDFa
<div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/resource/alice"
typeof="Person">
   <p property="foaf:name">
     Alice Birpemswick
   </p>

   <p>
     Email: <a rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com</a>
   </p>

   <p>
     Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332</a>
   </p>
</div>
                                http://example.com/resource/alice
RDF in HTML RDFa
<div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/alice#me" rel="knows">
   <ul>
       <li typeof="Person">
         <a rel="foaf:homepage" href="http://example.com/bob" property="foaf:name">Bob</a>
       </li>
       <li typeof="Person" >
         <a rel="foaf:homepage" href="http://example.com/eve" property="foaf:name">Eve</a>
       </li>
       <li typeof="Person" >
         <a rel="foaf:homepage" href="http://example.com/manu" property="foaf:name">Manu</a>
       </li>
   </ul>
</div>
RDF in HTML RDFa
<div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/alice#me" rel="knows">
   <ul>
       <li typeof="Person">
         <a rel="foaf:homepage" href="http://example.com/bob" property="foaf:name">Bob</a>
       </li>
       <li typeof="Person" >
         <a rel="foaf:homepage" href="http://example.com/eve" property="foaf:name">Eve</a>
       </li>
       <li typeof="Person" >
         <a rel="foaf:homepage" href="http://example.com/manu" property="foaf:name">Manu</a>
       </li>
   </ul>
</div>
RDF in HTML GoodRelations Vocabulary
RDF in HTML Enable RDFa in TYPO3
# Set the doctype and add common namespaces
config.doctype = xhtml+rdfa_10
config.namespaces {
   xml = http://www.w3.org/XML/1998/namespace
   xmlns = http://www.w3.org/2000/xmlns/
   xsd = http://www.w3.org/2001/XMLSchema#
   xhv = http://www.w3.org/1999/xhtml/vocab#
   rdfa = http://www.w3.org/ns/rdfa#
   rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns#
   rdfs = http://www.w3.org/2000/01/rdf-schema#
   owl = http://www.w3.org/2002/07/owl#
   rif = http://www.w3.org/2007/rif#

[...]

    dbo = http://dbpedia.org/ontology/
    foaf = http://xmlns.com/foaf/0.1/
    geo = http://www.w3.org/2003/01/geo/wgs84_pos#
    gr = http://purl.org/goodrelations/v1#
    cal = http://www.w3.org/2002/12/cal/ical#
    og = http://ogp.me/ns#
    v = http://rdf.data-vocabulary.org/#
    bibo = http://purl.org/ontology/bibo/
}
Demo
EXT:semantic SPARQL Client
Linked Data Cloud
Linked Data Cloud
Querying a Graph SPARQL

W3C Recommendation
Graph pattern matching
Similar to SQL and Turtle
Querying a Graph Filter, Functions, Ordering ...
Querying a Graph Custom Functions
Querying a Graph Property Paths
Querying a Graph Property Paths and Inference
Querying a Graph Subqueries
EXT:semantic SPARQL Query Administration

 Default namespaces
 (RDFa default pro le)
 Syntax highlighting
 Code indentation




   Content Manager
EXT:semantic SPARQL Query Administration

 Default namespaces
 (RDFa default pro le)
 Syntax highlighting
 Code indentation
 Frontend and backend




   Content Manager
EXT:semantic Custom Content Elements

 Default layouts and custom HTML template code
 Support for pagination (dynamic query re-writing)
EXT:semantic Custom Content Elements

     Frontend                 Backend
EXT:semantic Custom Content Elements

 Query results variables are bound to the template variables
 and are used as labels in a human readable form
Demo
Developer


    Query Object Model

class Tx_BlogExample_Domain_Repository_PostRepository extends Tx_Extbase_Persistence_Repository {

     public function findByTagAndBlog($tag, Tx_BlogExample_Domain_Model_Blog $blog, $limit = 20) {
         $query = $this->createQuery();
         return $query->matching(
                 $query->logicalAnd(
                     $query->equals('blog', $blog),
                     $query->equals('tags.name', $tag)
                 )
             )
             ->setOrderings(array('date' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING))
             ->setLimit((integer)$limit)
             ->execute();
     }

     public function findNext(Tx_BlogExample_Domain_Model_Post $post) {
         $query = $this->createQuery();
         $posts = $query->matching($query->greaterThan('date', $post->getDate()))
             ->setOrderings(array('date' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING))
             ->execute();
         return $posts->getFirst();
     }

}
Semantic TYPO3 Current Projects

 SPARQL Client (EXT:semantic, Jochen Rau)
 RDF/RDFa support (Sebastian Kurfürst, masters thesis)
 CMS ontology (Andreas Wolf, GSoC)
 Taxonomy and Categories (EXT:taxonomy, Fabien Udriot)
 Semantic persistence backend (EXT:semantic, Thomas Maroschik)
 Globally unique identi ers in v4 (EXT:identity, Thomas Maroschik)
 Tagging support for Editors (v4: RTE plugin, v5: Aloha)
Semantic TYPO3 Roadmap

Improve usability of SPARQL Client
Transform Domain Models into RDF(a)
Transform OWL Ontologies into PHP Code and Metadata
Extbase Query Object Model -> SPARQL Query
Semantic TYPO3 Vision
Semantic TYPO3 Vision
Semantic TYPO3 Vision
Demo
Thanks!

 Twitter @jocrau
 Email jochen.rau@typoplanet.de
 Blog http://blog.typoplanet.de
 Talk Lunch

Contenu connexe

En vedette

Presentación donator 61113
Presentación donator 61113Presentación donator 61113
Presentación donator 61113La Gente De Tom
 
Fed exsocialmediastudy findingsreport_final
Fed exsocialmediastudy findingsreport_finalFed exsocialmediastudy findingsreport_final
Fed exsocialmediastudy findingsreport_finalDr. William J. Ward
 
CiviCRM User Group-Intro to CiviCRM
CiviCRM User Group-Intro to CiviCRMCiviCRM User Group-Intro to CiviCRM
CiviCRM User Group-Intro to CiviCRMdggreenberg
 
Lean it and lean software factory
Lean it and lean software factoryLean it and lean software factory
Lean it and lean software factoryDominique LAPERE
 
M Odelo Eoa
M Odelo EoaM Odelo Eoa
M Odelo EoaDhaliaP
 
ESD Company Profile - 17-2-2016 Rev2
ESD Company Profile - 17-2-2016 Rev2ESD Company Profile - 17-2-2016 Rev2
ESD Company Profile - 17-2-2016 Rev2T. MADIBA
 
Carmen grimaldi herrera. concepto; competencia
Carmen grimaldi herrera. concepto; competenciaCarmen grimaldi herrera. concepto; competencia
Carmen grimaldi herrera. concepto; competenciak4rol1n4
 
Fotos dias de campo
Fotos dias de campoFotos dias de campo
Fotos dias de campoMariguLopez
 
Ashish sahare Mtech ExTC CV
Ashish sahare Mtech ExTC CVAshish sahare Mtech ExTC CV
Ashish sahare Mtech ExTC CVashish sahare
 
EBAE Assessors online briefing - 2016
EBAE Assessors online briefing -  2016 EBAE Assessors online briefing -  2016
EBAE Assessors online briefing - 2016 Kim Barton
 
Science Update - No 260 - June 2015
Science Update - No 260 - June 2015Science Update - No 260 - June 2015
Science Update - No 260 - June 2015DOILibrary1151
 
Gaba Presentation 2010
Gaba Presentation 2010Gaba Presentation 2010
Gaba Presentation 2010Cornelia Weiss
 
10 formas de mimar las imágenes de tus diapositivas
10 formas de mimar las imágenes de tus diapositivas10 formas de mimar las imágenes de tus diapositivas
10 formas de mimar las imágenes de tus diapositivasCarles Caño Valls
 
Unidad 8. estado actual de la investigacion educativa en colombia
Unidad 8. estado actual de la investigacion educativa en colombiaUnidad 8. estado actual de la investigacion educativa en colombia
Unidad 8. estado actual de la investigacion educativa en colombiaKarol Zea
 
Img Gestion Documental
Img Gestion DocumentalImg Gestion Documental
Img Gestion DocumentalSerikat
 
Healtho5 supported Medical Tele Consultation Centers in Bangladesh
Healtho5 supported Medical Tele Consultation Centers in BangladeshHealtho5 supported Medical Tele Consultation Centers in Bangladesh
Healtho5 supported Medical Tele Consultation Centers in BangladeshHealtho5 Solutions
 

En vedette (20)

Presentación donator 61113
Presentación donator 61113Presentación donator 61113
Presentación donator 61113
 
Beddit Presentation
Beddit PresentationBeddit Presentation
Beddit Presentation
 
Fed exsocialmediastudy findingsreport_final
Fed exsocialmediastudy findingsreport_finalFed exsocialmediastudy findingsreport_final
Fed exsocialmediastudy findingsreport_final
 
CiviCRM User Group-Intro to CiviCRM
CiviCRM User Group-Intro to CiviCRMCiviCRM User Group-Intro to CiviCRM
CiviCRM User Group-Intro to CiviCRM
 
Lean it and lean software factory
Lean it and lean software factoryLean it and lean software factory
Lean it and lean software factory
 
M Odelo Eoa
M Odelo EoaM Odelo Eoa
M Odelo Eoa
 
M2 programacion grafica_2ed
M2 programacion grafica_2edM2 programacion grafica_2ed
M2 programacion grafica_2ed
 
ESD Company Profile - 17-2-2016 Rev2
ESD Company Profile - 17-2-2016 Rev2ESD Company Profile - 17-2-2016 Rev2
ESD Company Profile - 17-2-2016 Rev2
 
Carmen grimaldi herrera. concepto; competencia
Carmen grimaldi herrera. concepto; competenciaCarmen grimaldi herrera. concepto; competencia
Carmen grimaldi herrera. concepto; competencia
 
Fotos dias de campo
Fotos dias de campoFotos dias de campo
Fotos dias de campo
 
Ashish sahare Mtech ExTC CV
Ashish sahare Mtech ExTC CVAshish sahare Mtech ExTC CV
Ashish sahare Mtech ExTC CV
 
EBAE Assessors online briefing - 2016
EBAE Assessors online briefing -  2016 EBAE Assessors online briefing -  2016
EBAE Assessors online briefing - 2016
 
Science Update - No 260 - June 2015
Science Update - No 260 - June 2015Science Update - No 260 - June 2015
Science Update - No 260 - June 2015
 
Balonmano
BalonmanoBalonmano
Balonmano
 
Gaba Presentation 2010
Gaba Presentation 2010Gaba Presentation 2010
Gaba Presentation 2010
 
10 formas de mimar las imágenes de tus diapositivas
10 formas de mimar las imágenes de tus diapositivas10 formas de mimar las imágenes de tus diapositivas
10 formas de mimar las imágenes de tus diapositivas
 
KonoGes
KonoGesKonoGes
KonoGes
 
Unidad 8. estado actual de la investigacion educativa en colombia
Unidad 8. estado actual de la investigacion educativa en colombiaUnidad 8. estado actual de la investigacion educativa en colombia
Unidad 8. estado actual de la investigacion educativa en colombia
 
Img Gestion Documental
Img Gestion DocumentalImg Gestion Documental
Img Gestion Documental
 
Healtho5 supported Medical Tele Consultation Centers in Bangladesh
Healtho5 supported Medical Tele Consultation Centers in BangladeshHealtho5 supported Medical Tele Consultation Centers in Bangladesh
Healtho5 supported Medical Tele Consultation Centers in Bangladesh
 

Dernier

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
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
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 

Dernier (20)

Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
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
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
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
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
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
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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!
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"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
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 

Semantic TYPO3

  • 1. Semantic TYPO3 Develop Extensions with Semantic Web in Mind Jochen Rau @ T3CON11SF June 11, 2011
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. (c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
  • 9. Concepts (c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
  • 10. Implementations (c) by Benjamin Nowack, Attribution 3.0 Unported (CC BY 3.0)
  • 13. Let's make some assertions about me Jochen's is a Person. Jochen's age is 40. Jochen's name is Jochen Rau. Jochen likes TYPO3 and Wine. Jochen lives in Massachusetts.
  • 14. Let's make some assertions about me Jochen's is a Person. Jochen's age is 40. Jochen's name is Jochen Rau. Jochen likes TYPO3 and Wine. Jochen lives in Massachusetts. Subject Predicate Object
  • 15. Let's make some assertions about me Jochen's is a Person. Jochen's age is 40. Jochen's name is Jochen Rau. Jochen likes TYPO3 and Wine. Jochen lives in Massachusetts. Subject Predicate Object Triple
  • 16. Let's make some assertions about me Jochen 40 age name Jochen Rau is a likes TYPO3 likes lives in Jochen's is a Person. Person Jochen's age is 40. Wine Massachusetts Jochen's name is Jochen Rau. Jochen likes TYPO3 and Wine. Jochen lives in Massachusetts.
  • 17. Let's make some assertions about me Jochen 40 age name Jochen Rau is a likes TYPO3 likes lives in Jochen's is a Person. Person Jochen's age is 40. Wine Massachusetts Jochen's name is Jochen Rau. Jochen likes TYPO3 and Wine. TYPO3 Jochen lives in Massachusetts. license GNU General Public License description platform TYPO3 is a free and open source content management system as well as a Model–view– controller (MVC) Web PHP Application Development framework written in PHP.
  • 18. Let's make some assertions about me Jochen 40 age name Jochen Rau is a likes TYPO3 likes GNU General license lives in Public License Jochen's is a Person. Person description Jochen's age is 40. Wine Massachusetts Jochen's name is Jochen Rau. platform TYPO3 is a free and open source content Jochen likes TYPO3 and Wine. management system as Jochen lives in Massachusetts. well as a Model–view– controller (MVC) Web PHP Application Development framework written in PHP.
  • 19. Unique Names for Resources Jochen knows Sebastian likes Paris
  • 20. Unique Names for Resources <http://typoplanet.de/resource/Jochen> <http://xmlns.com/foaf/0.1/knows> <http://sebastian.kurfuerst.eu/> <http://xmlns.com/foaf/0.1/likes> <http://en.wikipedia.org/wiki/Paris_(2008_film)> <http://typoplanet.de/resource/Jochen> <http://typoplanet.de/resource/hg132k4jhjh1234t> <urn:uuid:67ecc3bd-07e2-44f4-a788-597bf9949f0c> <tel:+1-617-555-7332> <mailto:jochen.rau@typoplanet.de>
  • 21. Unique Names for Resources <http://typoplanet.de/resource/Jochen> <http://xmlns.com/foaf/0.1/knows> <http://sebastian.kurfuerst.eu/> <http://sebastian.kurfuerst.eu/> <http://xmlns.com/foaf/0.1/likes> <http://en.wikipedia.org/wiki/Paris_(2008_film)>
  • 22. Turtle Serialization of an RDF Graph <http://example.com/JR> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://xmlns.com/foaf/0.1/Person> . <http://example.com/JR> <http://xmlns.com/foaf/0.1/age> "40" . <http://example.com/JR> <http://xmlns.com/foaf/0.1/name> "Jochen Rau" . <http://example.com/JR> <http://xmlns.com/foaf/0.1/interest> <http://dbpedia.org/resource/TYPO3> . <http://example.com/JR> <http://xmlns.com/foaf/0.1/interest> <http://dbpedia.org/resource/Wine> . <http://example.com/JR> <http://example.com/livesIn> <http://data.nytimes.com/Massachusetts> .
  • 23. Turtle Serialization of an RDF Graph @prefix ex: <http://example.org/> . @prefix dbp: <http://dbpedia.org/resource/> . @prefix nyt: <http://data.nytimes.com/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . ex:JR a foaf:Person . ex:JR foaf:age "40" . ex:JR foaf:name "Jochen Rau" . ex:JR foaf:interest dbp:TYPO3 . ex:JR foaf:interest dbp:Wine . ex:JR ex:livesIn nyt:Massachusetts .
  • 24. Turtle Syntactic sugar @prefix ex: <http://example.org/> . @prefix dbp: <http://dbpedia.org/resource/> . @prefix nyt: <http://data.nytimes.com/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . ex:JR a foaf:Person ; ex:age "40" ; ex:name "Jochen Rau" ; ex:likes dbp:TYPO3 ; ex:likes dbp:Wine ; ex:livesIn nyt:Massachusetts .
  • 25. Turtle And even more syntactic sugar @prefix ex: <http://example.org/> . @prefix dbp: <http://dbpedia.org/resource/> . @prefix nyt: <http://data.nytimes.com/> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . ex:JR a foaf:Person ; ex:age "40" ; ex:name "Jochen Rau" ; ex:likes dbp:TYPO3 , dbp:Wine ; ex:livesIn nyt:Massachusetts .
  • 26. RDF at a Glance Simple, ubiquitous way of modeling data Main concepts Triples of subject, predicate, and object Unique names for resources Objects can also be literal values (with data type or language) Performant data stores (e.g. Virtuoso, AllegroGraph, BigOWLIM) Existing frameworks with rich APIs (e.g. JENA, Sesame, Erfurt) Billions of triples as Open Data available (e.g. Wikipedia, MusicBrainz) Many di erent serialization formats (e.g. RDF/XML, Turtle, N3) Makes data migration much easier
  • 27. Description Logic and Rules OWL and RIF What? Why? Knowledge is spread all over the system: Domain model, database scheme, TS con gurartion, FlexForm, TCA, documentation, Templates ... In di erent Formats: SQL, TypoScript, XML, PHP, HTML ... Using inconsistent terminology: "Template" in TYPO3? So, what to do? data and metadata in the same data structure (RDF) use well de ned languages to describe (meta)data (OWL RIF)
  • 28. Description Logic and Rules OWL and RIF Knublauch, Holger. KBeans Specification: Semantic Transparency for Components and Domain Models. Technical Report FAW-TR-01001, FAW Ulm, 2001.
  • 29. RDF in HTML Three di erent standards to markup your HTML code Microformats Microdata (part of HTML5 spec) RDFa ("RDF for attributes", W3C Recommendation) A subset of RDF Makes web pages machine readable by your favorite search engine
  • 30. RDF in HTML RDFa <div> <p> Alice Birpemswick </p> <p> Email: <a href="mailto:alice@example.com">alice@example.com</a> </p> <p> Phone: <a href="tel:+1-617-555-7332">+1 617.555.7332</a> </p> </div>
  • 31. RDF in HTML RDFa <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/resource/alice" typeof="Person"> <p property="foaf:name"> Alice Birpemswick </p> <p> Email: <a rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com</a> </p> <p> Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332</a> </p> </div>
  • 32. RDF in HTML RDFa <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/resource/alice" typeof="Person"> <p property="foaf:name"> Alice Birpemswick </p> <p> Email: <a rel="foaf:mbox" href="mailto:alice@example.com">alice@example.com</a> </p> <p> Phone: <a rel="foaf:phone" href="tel:+1-617-555-7332">+1 617.555.7332</a> </p> </div> http://example.com/resource/alice
  • 33. RDF in HTML RDFa <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/alice#me" rel="knows"> <ul> <li typeof="Person"> <a rel="foaf:homepage" href="http://example.com/bob" property="foaf:name">Bob</a> </li> <li typeof="Person" > <a rel="foaf:homepage" href="http://example.com/eve" property="foaf:name">Eve</a> </li> <li typeof="Person" > <a rel="foaf:homepage" href="http://example.com/manu" property="foaf:name">Manu</a> </li> </ul> </div>
  • 34. RDF in HTML RDFa <div prefix="foaf: http://xmlns.com/foaf/0.1/" about="http://example.com/alice#me" rel="knows"> <ul> <li typeof="Person"> <a rel="foaf:homepage" href="http://example.com/bob" property="foaf:name">Bob</a> </li> <li typeof="Person" > <a rel="foaf:homepage" href="http://example.com/eve" property="foaf:name">Eve</a> </li> <li typeof="Person" > <a rel="foaf:homepage" href="http://example.com/manu" property="foaf:name">Manu</a> </li> </ul> </div>
  • 35. RDF in HTML GoodRelations Vocabulary
  • 36. RDF in HTML Enable RDFa in TYPO3 # Set the doctype and add common namespaces config.doctype = xhtml+rdfa_10 config.namespaces { xml = http://www.w3.org/XML/1998/namespace xmlns = http://www.w3.org/2000/xmlns/ xsd = http://www.w3.org/2001/XMLSchema# xhv = http://www.w3.org/1999/xhtml/vocab# rdfa = http://www.w3.org/ns/rdfa# rdf = http://www.w3.org/1999/02/22-rdf-syntax-ns# rdfs = http://www.w3.org/2000/01/rdf-schema# owl = http://www.w3.org/2002/07/owl# rif = http://www.w3.org/2007/rif# [...] dbo = http://dbpedia.org/ontology/ foaf = http://xmlns.com/foaf/0.1/ geo = http://www.w3.org/2003/01/geo/wgs84_pos# gr = http://purl.org/goodrelations/v1# cal = http://www.w3.org/2002/12/cal/ical# og = http://ogp.me/ns# v = http://rdf.data-vocabulary.org/# bibo = http://purl.org/ontology/bibo/ }
  • 37. Demo
  • 41. Querying a Graph SPARQL W3C Recommendation Graph pattern matching Similar to SQL and Turtle
  • 42. Querying a Graph Filter, Functions, Ordering ...
  • 43. Querying a Graph Custom Functions
  • 44. Querying a Graph Property Paths
  • 45. Querying a Graph Property Paths and Inference
  • 46. Querying a Graph Subqueries
  • 47. EXT:semantic SPARQL Query Administration Default namespaces (RDFa default pro le) Syntax highlighting Code indentation Content Manager
  • 48. EXT:semantic SPARQL Query Administration Default namespaces (RDFa default pro le) Syntax highlighting Code indentation Frontend and backend Content Manager
  • 49. EXT:semantic Custom Content Elements Default layouts and custom HTML template code Support for pagination (dynamic query re-writing)
  • 50. EXT:semantic Custom Content Elements Frontend Backend
  • 51. EXT:semantic Custom Content Elements Query results variables are bound to the template variables and are used as labels in a human readable form
  • 52. Demo
  • 53. Developer Query Object Model class Tx_BlogExample_Domain_Repository_PostRepository extends Tx_Extbase_Persistence_Repository { public function findByTagAndBlog($tag, Tx_BlogExample_Domain_Model_Blog $blog, $limit = 20) { $query = $this->createQuery(); return $query->matching( $query->logicalAnd( $query->equals('blog', $blog), $query->equals('tags.name', $tag) ) ) ->setOrderings(array('date' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING)) ->setLimit((integer)$limit) ->execute(); } public function findNext(Tx_BlogExample_Domain_Model_Post $post) { $query = $this->createQuery(); $posts = $query->matching($query->greaterThan('date', $post->getDate())) ->setOrderings(array('date' => Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING)) ->execute(); return $posts->getFirst(); } }
  • 54. Semantic TYPO3 Current Projects SPARQL Client (EXT:semantic, Jochen Rau) RDF/RDFa support (Sebastian Kurfürst, masters thesis) CMS ontology (Andreas Wolf, GSoC) Taxonomy and Categories (EXT:taxonomy, Fabien Udriot) Semantic persistence backend (EXT:semantic, Thomas Maroschik) Globally unique identi ers in v4 (EXT:identity, Thomas Maroschik) Tagging support for Editors (v4: RTE plugin, v5: Aloha)
  • 55. Semantic TYPO3 Roadmap Improve usability of SPARQL Client Transform Domain Models into RDF(a) Transform OWL Ontologies into PHP Code and Metadata Extbase Query Object Model -> SPARQL Query
  • 59. Demo
  • 60. Thanks! Twitter @jocrau Email jochen.rau@typoplanet.de Blog http://blog.typoplanet.de Talk Lunch