json-ld
Le JSON-LD, est une méthode, basé sur le format JSON, qui permet de rendre les données structurées sémantiquement. Il est bien sûr inspiré du Resource Description Framework (RDF).
Exprimer un curriculum vitae avec json-ld
Sur http://schema.org/ il n'y a pas d'exemple explicite de CV. Pour y arriver il faut faire pas mal de recherches par-ci par-là sur schema.org, et sur le Web en général. Mais je pense avoir un résultat qui est logique et expressif.
Les infos de bases
Cela correspond généralement à l'en-tête et c'est là qu'on retrouve le nom et les coordonnées, c'est un peu la carte de visite. Cette partie est plutôt facile à faire en JSON-LD.
{
"@context": [
"http://schema.org/"
],
"@type": "Person",
"name": "Hugo Soucy",
"@id": "#moi",
"jobTitle": "Développeur web",
"telephone": "+1 581-996-6481",
"email": "hugo@soucy.cc",
"url": "https://hugo.soucy.cc/",
"address": {
"@type": "PostalAddress",
"addressCountry": "CA",
"addressLocality": "Lévis",
"addressRegion": "Québec"
},
"image": "//hugo.soucy.cc/assets/images/hs-duochrome-319x424-wimm.png",
"description": "Développeur web spécialisé en accessibilité, possédant plus de deux décennies d'expérience. J'excelle à programmer des interfaces robustes, réactives, performantes et esthétiques.",
"hasOccupation": [ ... ]
}
Ici, j'utilise http://schema.org/ comme valeur à @context. Un
contexte est la source des termes (ontologie) qui seront utilisés pour
structurer sémantiquement les données. Il peut y avoir des termes
globaux, mais en général, ils sont spéciphiques à un @type. Ici,
c'est moi que je décris, alors j'utilise le type Person
(https://schema.org/Person). Notez qu'une propriété d'un type, peut
avoir comme valeur un autre type de données. Comme ci-dessus où la
propriété adresse utilise le type PostalAddress et ses propriétés
pour me permettre d'inscrire ma ville, ma région et mon pays.
J'aurais pu prendre un autre modèle de données, comme par exemple Friend of a Friend (FOAF).
{
"@context": [
"http://xmlns.com/foaf/0.1/"
],
"@type": "Person",
"firstName": "Hugo",
"lastName": "Soucy",
"nick": "hs0ucy"
"@id": "https://hugo.soucy.cc#i",
"mbox": "hugo@soucy.cc",
"jabberID": "hs0ucy@soucy.cc",
"homepage": "https://hugo.soucy.cc/",
"depiction": "//hugo.soucy.cc/assets/images/hs-duochrome-319x424-wimm.png"
}
La liste des emplois
Le type Person contient la propriété hasOccupation, qui ici, a
pour valeur un array contenant des objets de type EmployeeRole pour
chacun des emplois occupés.
Remarquez également le deuxième hasOccupation qui me permet
d'utiliser les propriétés skills et responsibilities dans un objet
de type Occupation. Et pour terminer, il y a une propriété owner
qui me sert à décrire l'employeur.
"hasOccupation": [
{
"@type": "EmployeeRole",
"@id": "kronos",
"roleName": "Développeur web front-end sénior",
"startDate": "2018",
"endDate": "2019",
"hasOccupation": {
"@type": "Occupation",
"responsibilities": [
"participer à la refonte des interfaces du CRM Equisoft/Connect",
"implémenter le design system"
],
"skills": [
"collaborer avec différentes parties prenantes",
"planifier et documenter les livrables"
]
},
"owner": {
"@type": "Organization",
"name": "Equisoft (Kronos Technologies)",
"sameAs": "https://www.equisoft.com/",
"address": {
"@type": "PostalAddress",
"addressLocality": "Québec",
"addressRegion": "QC"
}
}
},
{
"@type": "EmployeeRole",
"@id": "savoirfairelinux",
"roleName": "Consultant en logiciel libre / leader front-end",
"startDate": "2014",
"endDate": "2018",
"hasOccupation": {
"@type": "Occupation",
"responsibilities": [
"concevoir des sites web responsives sous différentes plateformes",
"faire l'analyse front-end de mandats et de futurs mandats (temps, ressources, coûts)",
"élaborer et animer la pratique front-end de l'équipe",
"répartir les assignations selon les besoins du calendrier de production",
"participer à la planification et à la rédaction d’appels d’offres",
"collaborer aux processus d'embauche et aux évaluation des membres de l'équipe",
"rédiger de la documentation technique"
],
"skills": [
"élaborer et mettre place des bonnes pratiques",
"gérer le temps et les priorités des projets",
"répartir des tâches",
"créer, monter et donner des formations"
]
},
"owner": {
"@type": "Organization",
"name": "Savoir-faire Linux",
"sameAs": "https://savoirfairelinux.com/fr",
"address": {
"@type": "PostalAddress",
"addressLocality": "Québec",
"addressRegion": "QC"
}
}
}
]
…