Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Le Challenge Semantique

Le Challenge Semantique

Présentation faites à l'Apéro PHP dans sa version courte.

Alexandre Balmes

July 22, 2014
Tweet

More Decks by Alexandre Balmes

Other Decks in Technology

Transcript

  1. La Blackroom
    Le Challenge
    Sémantique

    View Slide

  2. La Blackroom
    2
    Alexandre BALMES
    twitter.com/pockystar
    github.com/pocky
    !
    Chef de projet
    Développeur
    <3 Symfony
    Mon parcours
    2001 - Au revoir le lycée
    2003 - CAP d’électricien dans le BTP
    2005 - Technicien Supérieur Informatique (BTS)
    2005 - Bonjour Web
    2006 - Bonjour Intégration (et la sémantique)
    2008 - Bonjour PHP
    2012 - Bonjour Symfony

    View Slide

  3. La Blackroom
    La
    sémantique?

    View Slide

  4. La Blackroom
    4
    • Vous connaissez certainement quelques moyens de
    donner du sens à vos contenus via :
    • Le RDFa
    • Les microformats
    • Les microdatas
    • Et…
    Piqure de rappel

    View Slide

  5. La Blackroom
    5
    • Ressource Description Framework for attributes
    • Basé sur RDF
    • Utilisable aussi bien dans des pages HTML que des documents XML
    • Recommandation 1.0 du W3C le 14 Octobre 2008 (HTML 4 - XHTML)
    • Recommandation 1.1 du W3C le 22 Aout 2013 

    (HTML 5)
    • Généralement dur à appréhender 

    (tryptique, verbeux…)
    • http://fr.wikipedia.org/wiki/RDFa
    Piqure de rappel - RDFa

    View Slide

  6. La Blackroom
    6
    • N’est pas un standard !
    • L’objectif premier est d’appliquer des RFCs tierces
    (vCard, vCalendar, ATOM…) au (X)HTML
    • Très simple
    • http://fr.wikipedia.org/wiki/Microformats
    Piqure de rappel - Microformats

    View Slide

  7. La Blackroom
    7
    • N’est pas un standard !
    • Schema.org
    • Né d’un rapprochement équivalent à celui de sitemap.org de la
    part de Bing/Google/Yahoo! le 2 juin 2011 puis Yandex le 1er
    novembre 2011
    • Adaptation et transposition en HTML (RDFa + Microdata) et
    JSON-LD d’un grand nombres de langage sémantique à travers
    un socle commun
    • http://fr.wikipedia.org/wiki/Micro-donn%C3%A9es
    Piqure de rappel - Microdatas

    View Slide

  8. La Blackroom
    8
    • GoodRelations
    • XFN
    • FOAF
    • OpenCyc
    • Tout ce que vous pouvez mettre dans vos flux XML pour
    ajouter des namespaces
    • …
    Piqure de rappel - Et…

    View Slide

  9. La Blackroom
    BUT WAIT…
    9

    View Slide

  10. La Blackroom
    10
    Tu nous parle que de
    trucs en HTML mec !

    View Slide

  11. La Blackroom
    11
    • Toutes les compétences “front” sont bien meilleurs que
    les développeurs à ce niveau (même les mecs qui font
    du Wordpress)
    • Très peu de développeurs s’intéressent à la sémantique
    Le constat qui fait mal

    View Slide

  12. La Blackroom
    Le Challenge
    Sémantique

    View Slide

  13. La Blackroom
    13
    • Le challenge sémantique c’est :
    • Trouver des design récurrents
    • Segmenter les designs en éléments fonctionnels et
    indépendants
    • Faciliter la communication entre tous les acteurs du
    projet
    • Complémentaire au DDD (Domain Driven Design)
    !
    Qu’est-ce que c’est ?

    View Slide

  14. La Blackroom
    14
    • Définir les propriétés récurrentes d’une “chose”
    • Améliorer la communication via un référentiel de
    langage universel (en complément du Domaine issu de
    l’approche DDD)
    Avantages

    View Slide

  15. La Blackroom
    15
    • Peut rapidement devenir très compliqué
    • Doit toujours jongler avec un juste milieu
    • On fait du PHP… (c’est la que tu te dis que l’héritage
    multiple et les Traits ça n’a vraiment rien à voir)
    • Il faut accepter les règles des outils qu’on utilise
    Inconvénients

    View Slide

  16. La Blackroom
    Généralités

    View Slide

  17. La Blackroom
    17
    • Accepter les règles de langage
    • Si une règle ne vous parait pas correcte, fixer en une
    nouvelle (Documentation, PR…)
    !
    • Exemple :
    • La hierarchisation des bundles de Symfony : Bridge/
    Bundle/Component
    • Les prefix/suffix de classes : Abstract/Interface
    Généralités

    View Slide

  18. La Blackroom
    18
    http://symfony.com/doc/current/contributing/code/
    standards.html

    View Slide

  19. La Blackroom
    19
    • Attention à la surenchère
    • Il faut trouver un juste milieu entre la sémantique et le
    domaine du client
    • Doit correspondre à une approche globale et une vraie
    réflexion entre les différents acteurs
    • Correspond mieux aux environnements NoSQL
    • Simplicité !== Complexité
    Généralités

    View Slide

  20. La Blackroom
    20
    • Utilisez schema.org comme référentiel structurel
    Généralités

    View Slide

  21. La Blackroom
    Le nommage

    View Slide

  22. La Blackroom
    22
    • Dans une approche DDD, le domaine est une adaptation
    du langage du client
    • Ne vous contentez pas de suivre le langage du client
    • Utilisez également le référentiel sémantique
    • Echangez avec lui
    • Fixez des “constantes” :
    • “Name” !== “Title”
    Le nommage

    View Slide

  23. La Blackroom
    Question
    23

    View Slide

  24. La Blackroom
    Comment savoir 

    si cette requête lève
    une exception ?
    24

    View Slide

  25. La Blackroom
    Utilisez find* et
    get* !
    25

    View Slide

  26. La Blackroom
    26

    View Slide

  27. La Blackroom
    La
    modélisation

    View Slide

  28. La Blackroom
    28
    • L’approche sémantique va vous permettre :
    • Une “simplification” de la conception de votre
    modèle
    • D’être extensible
    !
    • L’approche sémantique à pour inconvénient :
    • D’être plus adapté au NoSQL (Document et Graph)
    • Dans un environnement *SQL, vous aurez beaucoup
    de colonnes
    La modélisation

    View Slide

  29. La Blackroom
    29
    • Pour trouver un équilibre :
    • Utilisez les DTO (Data Transfer Object) afin de compléter votre
    modèle métier en un modèle sémantique
    • “Encapsulez”
    • Lib : Model
    • Bundle : Document/Entity/…
    • Application : Jointures / Références / Embed
    La modélisation

    View Slide

  30. La Blackroom
    30
    La modélisation
    Semantic
    Application
    Client
    PreprendExtensionInterface
    Héritage avec getParent()
    TDD / Spec BDD
    Spec BDD / BDD
    BDD
    lib-php / Bundle

    View Slide

  31. La Blackroom
    31
    La modélisation
    WebPage
    Application
    Client
    Person

    View Slide

  32. La Blackroom
    32
    La modélisation
    WebPage
    Application
    Client
    Person
    User

    View Slide

  33. La Blackroom
    33
    La modélisation
    WebPage
    Application
    Client
    Person
    User
    Article

    View Slide

  34. La Blackroom
    34
    La modélisation
    WebPage
    Application
    Client
    Person User
    Event Organization
    PostalAddress Date
    GeoCoordinates
    Place
    OppeningHours
    Seat Service Comment

    View Slide

  35. La Blackroom
    MERCI !
    lablackroom.com
    github.com/black-project
    35

    View Slide