L’ontologie schema, une brève description

Elément central du web sémantique, les ontologies informatiques sont conçues dans le but d’exposer la structure des pages d’un site web. Les applications incluent le parcours logique des contenus d’un site à l’aide d’index ou bien le référencement naturel c’est à dire le signalement des métadonnées d’une page ou d’un élément de page à l’adresse des moteurs de recherche. Les ontologies possèdent à la fois un caractère structurant et un intérêt marketing lorsqu’elles sont largement employées. Les moteurs de recherche, les réseaux sociaux, les créateurs de plateformes et les éditeurs de sites à la recherche d’audience se sont donc emparés du sujet.

Google, Bing (Microsoft), Yahoo et Yandex (un moteur russe) proposent une première version de schema en 2011. Dan Brickley gère le projet de manière ouverte depuis le lancement et plusieurs communautés du World Wide Web Consortium (W3C) soutiennent l’initiative. Ainsi, les groupes “Bibframe2Schema.org“, “Bioschemas for lifesciences“, “Credible Web“, “Digital Asset Management Industry Business Ontology“, “Educational and Occupational Credentials in schema.org“, “Financial Industry Business Ontology“, “Healthcare Schema Vocabulary“, “Locations and Addresses”, “Meat Products”, “Schema Architypes”, “Schema Bib Extend“, “Schema Course extension”, “Schema Extensions for IoT”, “Schema Generator”, “Schema.org“, “Schema.org for datasets”, “Smart Manufacturing”, “Sport Schema”, “The Tourism Structured Web Data Community Group”, “Video Game Schema”, “WebAPI Discovery” prennent part aux débats et proposent des extensions.

Disponible sur github et documenté sur schema.org, schema définit 1024 classes et plus de 900 propriétés sur la version 7.0 en date du 10 mars 2020. Des hiérarchies de classes sont proposées. Des exemples d’exposition des métadonnées aux formats Microdata, RDFa et JSON-LD apportent une aide aux créateurs et éditeurs. Plus compact et aisé à programmer, JSON-LD est de nos jours le format d’exposition recommandé. Pour résumer, tout objet du web peut être caractérisé par au moins une classe à laquelle plusieurs propriétés spécifiques et non spécifiques sont associées. Les Classes (encore appelées Types) se distinguent des propriétés par le fait que la première lettre de leur nom est en majuscule.

Nous survolerons dans la première partie de cet article la hiérarchie des classes de schema parcourue par une logique d’hyponymie – du plus général au plus spécifique – et par des règles d’application. Nous évoquerons les extensions. Quelques exemples d’usages généraux de l’ontologie en JSON-LD (JavaScript Object Notation for Linked Data) seront mentionnés. Voyons cela plus en détail si vous le voulez bien.

On a le plan :

  1. Hiérarchie des Classes
    • 1.0 Thing, classe racine
    • 1.1 Action
    • 1.2 CreativeWorks
    • 1.3 Event
    • 1.4 Intangible
    • 1.5 MedicalEntity
    • 1.6 Organization
    • 1.7 Person
    • 1.8 Place
    • 1.9 Product
    • 1.10 Hiérarchies simples et multiples
  2. DataType
  3. Extensions de schema
  4. Do you speak schema ? Exemples généraux
  5. Conclusion

1. Arborescence des Classes

Schema définit la classe racine Thing ainsi que neuf classes de premier niveau. Quelques conventions particulières sont ici employés. Les valeurs attendues en renseignement d’une propriétés sont renseignées à l’aide d’une flèche (->). Le caractère (|) signifie “ou”. Quelques équivalences avec les propriétés de l’ontologie Dublin Core (=dct) sont mentionnées. Les propriétés en relation avec la description des personnes sont notées en gras.

1.0 Thing, classe racine

Les propriétés “nom”, “image”, “URL”, “identique à”, “sujet de” sont définies au niveau le plus fondamental de schema. Cela signifie que tous les objets disposent de ces propriétés.

12 Propriétés de Thing : additionalType (->URL), alternateName (->Text), description (->Text; =dct:description), disambiguatingDescription (->Text), identifier (->Text | URL | PropertyValue; =dct:identifier), image (->ImageObject | URL), mainEntityOfPage (->CreativeWork | URL), name (->Text; =dct:title), potentialAction (->Action), sameAs (->URL), subjectOf (->CreativeWork | Event; =dct:subject), url (->URL)

9 Classes filles de premier niveau viennent définir des spécialisations de Thing : Action, CreativeWork, Event, Intangible, MedicalEntity, Organization, Person, Place, Product

Au-delà d’identifer, de name et d’URL, la propriété sameAs est considérée comme importante. Elle peut contenir des liens vers les objets d’autres bases du web de données telles que Wikipedia, Wikidata, Crunchbase, le fichier d’autorité international virtuel Viaf, Idref du Sudoc, etc.

La propriété additionalType rend possible l’introduction d’une classe non spécifiée dans schema mais dans une autre ontologie comme par exemple Product Types Ontology (pto), http://www.productontology.org/. Cette propriété peut venir étendre la précision de toute classe de schema.

1.1 Action, 11 propriétés et 109 sous-classes

Action est décrit par onze propriétés spécifiques et hérite des douze de Thing. 109 types d’Action sont au total définis.

11 propriétés spécifiques d’Action: actionStatus, agent, endTime, error, instrument, location, object, participant, result, startTime, target

14 sous-classes filles de premier niveau (109 sous-classes d’Action au total) : AchieveAction, AssessAction, ConsumeAction, ControlAction, CreateAction, FindAction, InteractAction, MoveAction, OrganizeAction, PlayAction, SearchAction, TradeAction, TransferAction, UpdateAction

TradeAction fait référence aux actions en bourse. Si l’on s’intéresse par exemple à l’action de communiquer, schema propose la hiérarchie : Thing > Action > InteractAction > CommunicateAction, munie des propriétés possibles : about, inLanguage, recipient, actionStatus, agent, endTime, error, instrument, location, object, participant, result, startTime, target, etc. Des types plus spécifiques d’actions de communication sont : AskAction, CheckInAction, CheckOutAction, CommentAction, InformAction, InviteAction, ReplyAction, ShareAction.

1.2 CreativeWorks, 96 propriétés, 160 sous-classes

Les objets de la classe des artefacts peuvent être décrits à l’aide de 96 propriétés : about, abstract, accessMode, accessModeSufficient, accessibilityAPI, accessibilityControl, accessibilityFeature, accessibilityHazard, accessibilitySummary, accountablePerson, aggregateRating, alternativeHeadline, associatedMedia, audience, audio, author, award, character, citation, comment, commentCount, conditionsOfAccess, contentLocation, contentRating, contentReferenceTime, contributor, copyrightHolder, copyrightYear, correction, creativeWorkStatus, creator, dateCreated, dateModified, datePublished, discussionUrl, editor, educationalAlignment, educationalUse, encoding, encodingFormat, exampleOfWork, expires, funder, genre, hasPart, headline, inLanguage, interactionStatistic, interactivityType, isAccessibleForFree, isBasedOn, isFamilyFriendly, isPartOf, keywords, learningResourceType, license, locationCreated, mainEntity, maintainer, material, materialExtent, mentions, offers, position, producer, provider, publication, publisher, publisherImprint, publishingPrinciples, recordedAt, releasedEvent, review, schemaVersion, sdDatePublished, sdLicense, sdPublisher, sourceOrganization, spatial, spatialCoverage, sponsor, temporal, temporalCoverage, text, thumbnailUrl, timeRequired, translationOfWork, translator, typicalAgeRange, version, video, workTranslation

65 sous-classes de deuxième niveau (160 au total) viennent préciser la nature des artéfacts : 3DModel, ArchiveComponent, Article, Atlas, Blog, Book, Chapter, Claim, Clip, Collection, ComicStory, Comment, Conversation, Course, CreativeWorkSeason, CreativeWorkSeries, DataCatalog, Dataset, DefinedTermSet, Diet, DigitalDocument, Drawing, EducationalOccupationalCredential, Episode, ExercisePlan, Game, Guide, HowTo, HowToDirection, HowToSection, HowToStep, HowToTip, Legislation, Manuscript, Map, MediaObject, Menu, MenuSection, Message, Movie, MusicComposition, MusicPlaylist, MusicRecording, Painting, Photograph, Play, Poster, PublicationIssue, PublicationVolume, Question, Quotation, Review, Sculpture, SheetMusic, ShortStory, SoftwareApplication, SoftwareSourceCode, TVSeason, TVSeries, Thesis, VisualArtwork, WebContent, WebPage, WebPageElement, WebSite

1.3 Event, 32 propriétés, 22 sous-classes

32 propriétés spécifiques d’Event : about, actor, aggregateRating, attendee, audience, composer, contributor, director, doorTime, duration, endDate, eventSchedule, eventStatus, funder, inLanguage, isAccessibleForFree, location, maximumAttendeeCapacity, offers, organizer, performer, previousStartDate, recordedIn, remainingAttendeeCapacity, review, sponsor, startDate, subEvent, superEvent, translator, typicalAgeRange, workFeatured, workPerformed. On remarque au passage qu’un événement est caractérisé par sa durée avec startDate et endDate, sa répétition avec previousStartDate et son lieu avec location.

20 sous-classes de deuxième niveau (22 au total) : BusinessEvent, ChildrensEvent, ComedyEvent, CourseInstance, DanceEvent, DeliveryEvent, EducationEvent, EventSeries, ExhibitionEvent, Festival, FoodEvent, LiteraryEvent, MusicEvent, PublicationEvent, SaleEvent, ScreeningEvent, SocialEvent, SportsEvent, TheaterEvent, VisualArtsEvent

1.4 Intangible, 385 sous-classes

Une classe “parapluie” indique des quantités, des valeurs posées ou observées, des listes de choses, de rôles et de services, des valeurs de dictionnaires. Le terme intangible indique que les classes de cette catégorie présentent un aspect principalement informationnel. Intangible ne propose aucune propriété spécifique. Celles-ci sont définies au niveau des sous-classes.

56 sous-classes de deuxième niveau (385 classes en tout) : ActionAccessSpecification, AlignmentObject, Audience, BedDetails, Brand, BroadcastChannel, BroadcastFrequencySpecification, Class, ComputerLanguage, DataFeedItem, DefinedTerm, Demand, DigitalDocumentPermission, EducationalOccupationalProgram, EntryPoint, Enumeration, FloorPlan, GameServer, GeospatialGeometry, Grant, HealthInsurancePlan, HealthPlanCostSharingSpecification, HealthPlanFormulary, HealthPlanNetwork, Invoice, ItemList, JobPosting, Language, ListItem, MediaSubscription, MenuItem, MerchantReturnPolicy, Observation, Occupation, Offer, Order, OrderItem, ParcelDelivery, Permit, ProgramMembership, Property, PropertyValueSpecification, Quantity, Rating, Reservation, Role, Schedule, Seat, Series, Service, ServiceChannel, SpeakableSpecification, StatisticalPopulation, StructuredValue, Ticket, Trip

A noter l’importance de StructuredValue qui rassemble des informations telles que des adresses postales, les coordonnées géographiques, des valeurs monétaires, des heures d’ouverture, des valeurs qualitatives et quantitatives multiples. Quantity a pour classes Distance, Duration, Energy, Mass.

1.5 MedicalEntity, 7 propriétés et 71 sous-classes

7 propriétés spécifiques de MedicalEntity : code, guideline, legalStatus, medicineSystem, recognizingAuthority, relevantSpecialty, study

17 sous-classes de deuxième niveau (71 au total) : AnatomicalStructure, AnatomicalSystem, LifestyleModification, MedicalCause, MedicalCondition, MedicalContraindication, MedicalDevice, MedicalGuideline, MedicalIndication, MedicalIntangible, MedicalProcedure, MedicalRiskEstimator, MedicalRiskFactor, MedicalStudy, MedicalTest, Substance, SuperficialAnatomy

1.6 Organization, 53 propriétés, 182 sous-classes

53 propriétés spécifiques d’Organization : actionableFeedbackPolicy, address, aggregateRating, alumni, areaServed, award, brand, contactPoint, correctionsPolicy, department, dissolutionDate, diversityPolicy, diversityStaffingReport, duns, email, employee, ethicsPolicy, event, faxNumber, founder, foundingDate, foundingLocation, funder, globalLocationNumber, hasCredential, hasMerchantReturnPolicy, hasOfferCatalog, hasPOS, interactionStatistic, isicV4, knowsAbout, knowsLanguage, legalName, leiCode, location, logo, makesOffer, member, memberOf, naics, numberOfEmployees, ownershipFundingInfo, owns OwnershipInfo, parentOrganization, publishingPrinciples, review, seeks, slogan, sponsor, subOrganization, taxID, telephone, unnamedSourcesPolicy, vatID

15 sous-classes de deuxième niveau (182 au total) : Airline, Consortium, Corporation, EducationalOrganization, FundingScheme, GovernmentOrganization, LibrarySystem, LocalBusiness, MedicalOrganization, NGO, NewsMediaOrganization, PerformingGroup, Project, SportsOrganization, WorkersUnion

1.7 Person, 55 propriétés et 1 sous-classes

55 propriétés spécifiques de Person : additionalName, address, affiliation, alumniOf, award, birthDate, birthPlace, brand, callSign, children, colleague, contactPoint, deathDate, deathPlace, description, disambiguatingDescription, duns, email, familyName, faxNumber, follows, funder, gender, givenName, globalLocationNumber, hasCredential, hasOccupation, hasOfferCatalog, hasPOS, height, homeLocation, honorificPrefix, honorificSuffix, identifier, image, interactionStatistic, isicV4, jobTitle, knows, knowsAbout, knowsLanguage, mainEntityOfPage, makesOffer, memberOf, naics, name, nationality, netWorth, owns, parent, performerIn, potentialAction, publishingPrinciples, relatedTo, sameAs, seeks, sibling, sponsor, spouse, subjectOf, taxID, telephone, url, vatID, weight, workLocation, worksFor

Une seule sous-classe : Patient

1.8 Place, 36 propriétés, 74 sous-classes

36 propriétés spécifiques de Place : additionalProperty, address, aggregateRating, amenityFeature, branchCode, containedInPlace, containsPlace, event, faxNumber, geo, geoContains, geoCoveredBy, geoCovers, geoCrosses, geoDisjoint, geoEquals, geoIntersects, geoOverlaps, geoTouches, geoWithin, globalLocationNumber, hasMap, isAccessibleForFree, isicV4, latitude, logo, longitude, maximumAttendeeCapacuty, openingHoursSpecification, photo, publicAccess, review, slogan, smokingAllowed, specialOpeningHoursSpecification, telephone

9 sous-classes de deuxième niveau (74 au total) : Accommodation, AdministrativeArea, CivicStructure, Landform, LandmarksOrHistoricalBuildings, LocalBusiness, Residence, TouristAttraction, TouristDestination

Des objets du type Event appellent classiquement en propriété location renseigné à l’aide des propriétés d’un objet de la classe Place.

1.9 Product, 36 propriétés,

36 propriétés spécifiques de Product : additionalProperty, aggregateRating, audience, award, brand, category, color, depth, gtin, gtin12, gtin13, gtin14, gtin8, hasMerchantReturnPolicy, height, isAccessoryOrSparePartFor, isConsumableFor, isRelatedTo, isSimilarTo, itemCondition, logo, manufacturer, material, model, mpn, nsn, offers, productID, productionDate, purchaseDate, releaseDate, review, sku, slogan, weight, width

4 sous-classes de deuxième niveau (8 au total) : IndividualProduct, ProductModel, SomeProducts, Vehicle

1.10 Hiérarchies simples et multiples

Les écoles sont décrites de manière simple. On a Organization > EducationalOrganization > School. De même pour un projet de recherche : Organization > Project > ResearchProject, ou un musée : Place > CivicStructure > Museum.

Un certain nombre de classes se trouvent localisées en plusieurs lieux de la hiérarchie et héritent des propriétés des classes de rang supérieur. Plusieurs fils d’ariane les caractérisent. Parmi celles-ci, LocalBusiness hérite à la fois de Place et d’Organization. LocalBusiness inclue ArchiveOrganization et Library.

2. DataType

Les types de données attendus en renseignement des propriétés appartiennent eux-mêmes à des classes définies dans DataType.

Boolean > (False | True), Date, DateTime, Number > (Float | Integer), Text > URL , Time

Il est attendu par exemple de la valeur d’addressLocality de la classe Place que celle-ci soit du type Text. Globalement, 705 propriétés appellent en contenu une valeur du type Text. Un URL est également défini comme un type de texte.

3. Extensions de schema

3.1 Extensions officielles

Les extensions sont documentée dans les sous-domaines de schema.org. Pending indique les termes en cours de discussion. Bib concerne la bibliographie.

auto.schema.org, bib.schema.org, health-lifesci.schema.org, pending.schema.org

3.2 The Product Types Ontology (pto)

Pto référence environ 300 000 types de produits ou services qui étendent la classe Produit de schema en s’appuyant elle-même sur l’ontologie GoodRelations.

4. Do you speak schema ? Exemples généraux

Inclus dans des balises HTML <script>, JSON-LD s’avère relativement aisé à lire avec quelques conventions de retour à la ligne. Plusieurs exemples de notation sont ici recopiés essentiellement de schema.org. Soit le fragment HTML telles que celui-ci :

Lecture 12: Graphs, networks, incidence matrices

These video lectures of Professor Gilbert Strang teaching 18.06 were recorded in Fall 1999 and do not correspond precisely to the current edition of the textbook.

About MIT OpenCourseWare
Creative Commons logo with terms BY-NC-SA.

Schema est déclaré en valeur d’@context, l’objet context de JSON-LD. La classe WebPage est retenue et déclarée dans @type. Les propriétés name, description, publisher, license de WebPage sont ici renseignées. L’ouverture de parenthèses crée un second niveau marqué ici par un retrait de la ligne. On voit que publisher est lui-même décrit par sa propre classe CollegeOrUniversity et nommé “MIT OpenCourseWare”. Un graphe de métadonnées est en quelque sorte dessiné avec des renseignements de premier, deuxième niveau : Lien

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "WebPage",
    "name": "Lecture 12: Graphs, networks, incidence matrices",
    "description": "These video lectures of Professor Gilbert Strang teaching 18.06 were recorded in Fall 1999 and do not correspond precisely to the current  edition of the textbook.",
    "publisher": {
        "@type": "CollegeOrUniversity",
        "name": "MIT OpenCourseWare"
    },
    "license": "http://creativecommons.org/licenses/by-nc-sa/3.0/us/deed.en_US"
}
</script>

Exemple de signalement d’un double évènement musical. B.B. King joue le 12 au “Lupo’s Heartbreak Hotel” et le 13 avril 2014 au “Lynn Auditorium”. Event et Place sont liés via la propriété location. La déclaration de deux objets ou de deux relations de même niveau se fait par ouverture d’un crochet : Lien

<script type="application/ld+json">
[{
  "@context" : "http://schema.org",
  "@type" : "MusicEvent",
  "name" : "B.B. King",
  "startDate" : "2014-04-12T19:30",
  "location" : {
     "@type" : "Place",
     "name" : "Lupo's Heartbreak Hotel",
     "address" : "79 Washington St., Providence, RI"
  },
  "offers" : {
     "@type" : "Offer",
     "url" : "https://www.etix.com/ticket/1771656"
  }
},
{
  "@context" : "http://schema.org",
  "@type" : "MusicEvent",
  "name" : "B.B. King",
  "startDate" : "2014-04-13T20:00",
  "location" : {
     "@type" : "Place",
     "name" : "Lynn Auditorium",
     "address" : "Lynn, MA, 01901"
  },
  "offers" : {
     "@type" : "Offer",
     "url" : "http://frontgatetickets.com/venue.php?id=11766"
  }
}]
</script>

Description détaillée de l’adresse d’un organisme éducatif. Le nom de deux anciens est mentionné : Lien

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "EducationalOrganization",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Palo Alto",
    "addressRegion": "CA",
    "postalCode": "94301",
    "streetAddress": "50 Embarcadero Rd"
  },
  "alumni": [
    {
      "@type": "Person",
      "name": "John Doe"
    },
    {
      "@type": "Person",
      "name": "Sarah Glames"
    }
  ],
  "name": "Palo Alto High School"
}
</script>

Description d’une personne, Delia Derbyshire identifiée dans Wikipedia par son URL avec sameAs, une ancienne élève de Cambridge : Lien

<script type="application/ld+json">
{
    "@context": "http://schema.org",
    "@type": "Person",
    "name": "Delia Derbyshire",
    "sameAs": "http://en.wikipedia.org/wiki/Delia_Derbyshire",
    "alumniOf": {
        "@type": "OrganizationRole",
        "alumniOf": {
            "@type": "CollegeOrUniversity",
            "name": "University of Cambridge",
            "sameAs": "http://en.wikipedia.org/wiki/University_of_Cambridge"
        },
        "startDate": "1959"
    }
}
</script>

Des listes d’items sont signalées avec la propriété itemListElement de ItemList et énoncées avec ListItem.

<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "ItemList",
  "url": "http://en.wikipedia.org/wiki/Billboard_200",
  "name": "Top music artists",
  "description": "The artists with the most cumulative weeks at number one according to Billboard 200",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "MusicGroup",
        "name": "Beatles"
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "MusicGroup",
        "name": "Elvis Presley"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "MusicGroup",
        "name": "Michael Jackson"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "MusicGroup",
        "name": "Garth Brooks"
      }
    }
  ]
}
</script> 

Reprises de Dublin Core, les relations hasPart / isPartof indiquent une relation de méronymie c’est à dire de tout à partie. Elles s’avèrent nécessaire dans de multiples domaines dont celui des bibliothèques et archives.

Conclusion

L’ontologie schema s’avère donc bien structurée et cohérente, relativement souple d’usage. Plusieurs communautés du W3C soutiennent le projet et oeuvrent à son évolution. Cette ontologie est dite de haut niveau car elle ambitionne comme par exemple Wikidata de couvrir de vastes domaines d’applications. Des acteurs de la gestion des connaissances peuvent s’en inspirer voire se servir de schema pour structurer leurs propres modèles. Schema peut également intéresser l’administrateur de base de donnée relationnelle ou bien le développeur en programmation orientée objet (POO) alors que les graphes en JSON-LD s’avèrent plus lisibles et légers que ceux introduits par XML. Des ontologies de bas niveau telles que Dublin Core, Foaf ou bibo gardent cependant leurs adeptes pour décrire de manière plus simple les domaines de la bibliographie. À noter finalement que des gestionnaires de contenus comme WordPress ou Drupal disposent d’extensions dédiées au référencement naturel des contenus via schema.

Un triplet RDF
  • Schema.org
  • Version 7.0, 10 mars 2020 : Lien
  • Hiérarchie des classes de Schema : Lien
  • Blog officiel de Schema.org : Lien
  • Schema.org sur le répertoire LOV : Lien
  • Outil de test des donnée structurées, par Google : Lien
  • JSON Schema, 2019 : Lien
  • Données sémantiques, structurées et associées, le choix JSON-LD, Jojaba, AlsaCréations, 2019 : Lien
  • Comment mettre en place un balisage Schema parfait pour votre entreprise, Jason Barnard, 2017 : Lien
  • Comprendre le fonctionnement des données structurées, Google, 2010 : Lien
  • Schema.org hierarchy Sunburst, une visualisation, 2019 : Lien
  • Extensions JSON-LD et schema pour WordPress : Lien
  • Drupal, le module “Schema.org Metatag” étend “Metatag” pour certaines des classes de schema : Lien
  • Omeka S : schema peut être utilisé avec ce gestionnaire de contenu et exposé en JSON-LD.
1 Star2 Stars3 Stars4 Stars5 Stars (Pas encore noté)
Loading...

Une réponse sur “L’ontologie schema, une brève description”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *