Dans le cadre du deuxième travail, nous avons transformé nos données XML en triplets RDF, dans le but de donner une certaine structure à nos données (en les transformant en triplets qui lient les informations ensembles) et ainsi de commencer à donner une sémantique explicite à ces données. Par contre, malgré que les triplets RDF offrent une certaine sémantique aux données à travers les liaisons qu'ils font entre elles, il reste qu'un fichier de triplets RDF (sans RDF Schema) n'est pas organisé et ne regroupe pas ses triplets en groupes hiérarchiques, ce qui nous donne un paquet de triplets pêles-mêles, sans organisation. Afin de donner encore plus de sémantique à nos données et d'offrir une meilleure catégorisation de celles-ci, il faut se créer une ontologie qui va bien définir et catégoriser les concepts du domaine qu'on veut modéliser. Cette meilleure structuration va non seulement aider à mieux comprendre la sémantique explicite des données, mais elle va aussi permettre de découvrir, à l'aide de règles d'inférences, la sémantique implicite contenue dans ces données.
Le but de ce travail est de créer une ontologie pour modéliser le mieux possible le domaine auquel appartiennent nos données afin de bien classer celles-ci dans cette ontologie. Par contre, la création d'une ontologie complète étant un travail très long et complexe, il faut se limiter à créer une hiérarchie de concepts qui va permettre principalement de classer les données que l'on possède déjà sur ce domaine. Ensuite, il faut transformer automatiquement (autant que possible) les données que l'on avait recueillies, lors du premier travail, en instance de cette ontologie. Pour ce travail, j'ai encore une fois gardé comme sujet le domaine des films.
Pour créer l'ontologie, j'ai utilisé l'éditeur Protégé v3.4, qui nous aide à créer une ontologie manuellement. Pour transformer mes données, j'ai utilisé une feuille de style XSLT qui transforme mes données XML originales en instances de l'ontologie (sous forme de triplets RDF). Cette feuille de style s'occupe aussi de créer les instances des propriétés qui relient les concepts entre eux ou avec des données litérales.
Voici la liste des fichiers utilisés pour ce travail :
Espaces de noms à noter:
Voici maintenant une description des classes et des propriétés de l'ontologie que j'ai créée. Pour commencer, je vais donner une définition générale du concept ou du groupe de concepts que je veux modéliser. Ensuite, j'énumérerai les classes représentant ce ou ces concepts avec, pour chacune, une description des propriétés qui ont pour domaine cette classe.
Note: les cardinalités des propriétés sont soulignées.
Concept de film:
Le concept de film contient uniquement la classe Movie. Cette classe est la classe centrale de l'ontologie et fait donc référence à beaucoup d'autres concepts. Les instances de cette classe représentent chacune un film en particulier. Dans mon ontologie, je ne considère que les films déjà sortis, car si l'ontologie gérait les films en productions, il faudrait constamment la mettre à jour.
Classes représentant le concept de film :
| Classe | Description | Commentaires |
|---|---|---|
| Movie | Classe représentant les films de l'ontologie. |
Propriétés de la classe Movie :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| dc:title | xsd:String | Représente le nom officiel du film. Chaque film est lié à exactement un titre officiel (chaque film doit absolument avoir au moins un titre). Un film pourrait avoir des titres alternatifs ("working titles") mais ceux-ci ne sont pas pris en considération dans l'ontologie. | |
| officialReleaseYear | xsd:Integer | Représente l'année officielle de sortie du film, c'est-à-dire l'année à partir de laquelle le film était disponible pour visionnement (en salle ou en DVD), peu importe le pays dans lequel le film a été disponible en premier. Chaque film est donc lié à exactement une année de sortie officielle.. | |
| dc:description | xsd:String | Représente le résumé officiel du film. Chaque film peut avoir au plus un résumé officiel (ou aucun, s'il n'y a pas de résumé officiel). | |
| color | xsd:String | Indique si le film est en couleur (color) ou non (black and white). Chaque film à exactement un type de couleur. | |
| originalLanguage | xsd:String | Langue originale dans laquelle le film a été tourné (peut en avoir plusieurs). Chaque film a au moins une langue originale dans laquelle il a été tourné. | Au départ, n'ayant pas trouvé d'ontologie des langues naturelles sur le Web, j'ai voulu créer une mini-ontologie pour classer les langues par familles (ex.: français dans la famille des langues latines) mais, voyant la complexité de l'organisation des familles de langues, j'ai décidé d'abandonner cette idée et d'utiliser seulement une valeur littérale. Par contre, il serait intéressant de lier l'instance d'un film avec une instance d'une ontologie des langues naturelles, si une telle ontologie existe. Pour un exemple de classification des langues naturelles, voir les figures à l'annexe A. |
| filmedIn | geopolitical:territory | Pays où a été tourné le film. Chaque film doit avoir été tourné dans au moins un pays. | Les données que j'avais sur les lieux de tournages incluaient aussi la région, la ville, etc. du lieu de tournage mais, pour être conforme à l'ontologie que j'ai trouvée (qui ne traite que des pays) et pour simplifier le problème, j'ai décidé de limiter cette information aux pays seulement. |
| hasRating (avec ses sous-propriétés) | Rating | Cote de classement du film, selon le pays ou une région du pays (ex.: par province), selon le cas. Un film peut avoir plusieurs cotes de classement dans des pays / régions différents, mais au maximum une seule par pays / région. Les sous-propriétés de cette propriété servent à lier un film à un classement précis (ex.: hasUSARating pour le classement des États-Unis, hasQcRating pour le classement au Québec, etc.). Un film peut ne pas avoir de cote de classement, car certains films se voient refuser l'obtention d'une cote. | Idéalement, il serait mieux de définir une seule propriété hasRating sans sous-propriété et de définir une restriction sur cette propriété stipulant qu'un film ne peut pas être relié à deux instances de la même catégorie de classement, mais qu'il peut être relié à deux instances de catégories différentes. Malheureusement, je n'ai pas trouvé de moyen de formuler cette restriction sur une propriété générale reliant la classe Movie à la classe Rating, sans considérer les sous-classes de celle-ci. J'ai donc obté pour avoir une propriété pour chaque groupe de classement de film, ce qui aurait évidemment l'inconvénient de créer beaucoup de sous-propriétés si la hiérarchie de classements devenait plus grande. |
| hasBeenReleasedAt | ReleaseDate | Lie un film à une instance servant d'intermédiaire (instance de la classe ReleaseDate) afin de représenter les dates de sorties du film dans différents pays. Chaque film doit avoir au moins une date de sortie. | |
| hasCharacter | MovieCharacter | Lie chaque film à leurs personnages. Chaque film peut être lié à plusieurs ou aucun personnage (si le film est un documentaire par exemple). | Pour ce travail, il n'y a pas d'instance de cette propriété étant donné que je n'avais pas recueillie d'information sur les personnages lors des travaux précédents. |
| hasDistribution | MovieDistribution | Lie un film à une instance servant d'intermédiaire (instance de la classe MovieDistribution) afin de représenter les différents distributeurs du film pour différents pays, différentes années et différents types de médium. Chaque film doit avoir au moins un distributeur. | |
| hasGenre | Genre | Lie chaque film aux genres auxquels il appartient. Chaque film doit avoir au moins un genre et peut en avoir plusieurs. | Chaque film peut avoir plusieurs genres car il suffit qu'un film possède des éléments propre à un genre donné pour que le film en fasse partie. |
| hasProducer | company:MovieDistributionCompany | Lie chaque film aux compagnies qui le produisent. Chaque film doit avoir au moins un producteur. | |
| hasRuntime | Runtime | Lie chaque film à une instance servant d'intermédiaire (instance de la classe Runtime) afin de représenter les différentes durées (en minutes) que peut avoir le film. Chaque film doit avoir au moins une durée (et peut en avoir plusieurs, selon l'édition du film). | |
| hasSpecialEffectTeam | company:MovieSpecialEffectCompany | Lie chaque film aux compagnies qui ont travaillées sur les effets spéciaux du film. Chaque film peut être lié à plusieurs compagnies d'effets spéciaux (pas obligatoire car certains films, comme les films à très petit budget, peuvent ne pas avoir d'effets spéciaux). | |
| isFrom | geopolitical:territory | Pays d'origine du film (peut avoir plus qu'un pays). Chaque film doit avoir au moins un pays d'origine. |
Concept d'équipe de travail:
Le concept d'équipe de travail représente les personnes qui travaillent sur des films (acteurs, réalisateurs, etc.). La classe principale est CastAndCrewMember. Chaque instance des sous-classes de cette classe représente une personne qui travaille sur des films dans le métier indiqué par la sous-classe. Chaque instance est aussi liée à une instance de la classe persons:Person afin d'associer une identité à ces travailleurs. On peut donc considérer les instances de ces classes comme représentant la personne "en tant que (Nom de la classe)", et donc des instances dans des classes différentes peuvent donc faire référence à la même personne. Par exemple, il pourrait y avoir une instance dans la classe Acteur qui est associée à l'identité "Clint Eastwood" (représente Clint Eastwood l'acteur) et une autre instance dans la classe Director qui est aussi associée à l'identité "Clint Eastwood" (représente Clint Eastwood le réalisateur). Donc, pour dire que Clint Eastwood a joué dans un certain film (a travaillé sur ce film en tant qu'acteur), alors il suffit de lier cette instance de Clint Eastwood avec ce film. On peut faire de même avec les instances de Clint Eastwood dans les classes des autres métiers.
Classes représentant le concept d'équipe de travail :
| Classe | Description |
|---|---|
| CastAndCrewMember | Classe représentant les personnes qui travaillent sur un film |
| Actor | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant qu'acteurs. |
| Director | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant que réalisateurs. |
| MakeupDepartmentMember | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant que membres de l'équipe de maquillage. |
| HairStylist | Spécialisation de MakeupDepartmentMember. Représente les personnes qui travaillent sur un film en tant que coiffeurs stylistes. |
| MakeupArtist | Spécialisation de MakeupDepartmentMember. Représente les personnes qui travaillent sur un film en tant que maquilleurs. |
| MusicComposer | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant que compositeurs de musique originale. |
| Producer | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant que producteurs. |
| Writer | Spécialisation de CastAndCrewMember. Représente les personnes qui travaillent sur un film en tant que scénaristes. |
Propriétés de la classe CastAndCrewMember (et de toutes ses sous-classes par héritage) :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| isPerson | persons:Person | Lie chaque membre de l'équipe de travail à son identité, située dans la classe persons:Person. Chaque membre a exactement une identité. | |
| worksOn | Movie | Lie chaque membre de l'équipe aux films sur lesquels il a travaillé. Chaque membre doit avoir travaillé sur au moins un film (car sinon il n'a jamais fait partie d'une équipe de tournage!). |
Concept de personnage :
Le concept de personnage représente les personnages qui apparaissent dans les films, classés selon l'importance qu'ils ont dans l'histoire. La classe principal du concept est MovieCharacter, et les sous-classes représentent la catégorisation du personnage selon son importance. Par contre, puisqu'un personnage pourrait avoir une grande importance dans un film et une importance mineure dans un autre film (par exemple, un caméo dans la suite du film), il peut y avoir des instances dans différentes catégorisations qui représentent le même personnage. Aussi, comme je n'ai aucune information sur les personnages dans mes données, il n'y a aucune instance de personnage dans mon ontologie.
Classes représentant le concept de personnage :
| Classe | Description | Commentaires |
|---|---|---|
| MovieCharacter | Classes représentant les personnages présents dans les films. | |
| MajorCharacter | Spécialisation de MovieCharacter. Représente les personnages qui ont une grande importance à l'histoire | |
| MainCharacter | Spécialisation de MajorCharacter. Représente LE personnage le plus important de l'histoire (le héros principal du film) s'il y en a un. | |
| SupportingCharacter | Spécialisation de MovieCharacter. Représente les personnages qui ont une importance secondaire à l'histoire. | |
| MinorCharacter | Spécialisation de MovieCharacter. Représente les personnages qui ont une importance mineure à l'histoire. |
Propriétés de la classe MovieCharacter (et de toutes ses sous-classes par héritage) :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| characterName | xsd:String | Nom du personnage. Chaque personnage doit avoir exactement un nom. | |
| isPlayedBy | Acteur | Lie le personnage à la personne qui l'incarne (physiquement) dans le film. Il est possible qu'un personnage soit incarné par plusieurs acteurs différents (dans le même film ou dans des films différents) et un personnage peut être virtuel, auquel cas il n'est incarné par aucun acteur. Il n'y a donc aucune restriction de cardinalité sur cette propriété. | La seul restriction est qu'un personnage doit soit être incarné par un acteur (physiquement) ou personnifié par la voix d'un acteur. Il n'y a pas de restriction interdisant à un personnage d'être incarné par un acteur (physiquement) et d'être personnifié (la voix) par un acteur différent (ex.: Darth Vader dans Star Wars). Donc la seule restriction est qu'il y ait au moins un acteur pour représenter le personnage d'une façon ou d'une autre. |
| isVoicedBy | Acteur | Lie le personnage à la personne qui le personnifie avec sa voix uniquement. Les même principes sur les restrictions que celles pour la propriété isPlayedBy s'appliquent ici aussi. |
Concept de personne :
Le concept de personne représente de manière générale les personnes qui oeuvrent dans le milieu du cinéma (acteurs, réalisateurs, etc.).
Classes représentant le concept de personne :
| Classe | Description | Commentaires |
|---|---|---|
| persons:Person | Classe représentant les personnes en général dans l'ontologie (personnes qui oeuvrent dans le milieu du cinéma). |
Propriétés de la classe persons:Person :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| persons:name | xsd:String | Nom de la personne. Chaque personne a exactement un nom. | |
| persons:birthCountry | geopolitical:territory | Pays où est née la personne. Chaque personne doit être née dans exactement un pays. | Mes données originales comprenaient des informations plus précises sur le lieu de naissance d'une personne, mais comme l'ontologie que j'ai trouvée n'a que les pays, j'ai donc simplifié mes données. |
| persons:dateOfBirth | xsd:Date | Date de naissance de la personne. Chaque personne doit avoir exactement une date de naissance. | |
| persons:wikipediaPage | xsd:String | Page wikipedia de la personne (si elle en a une). Chaque personne peut avoir au maximum une page wikipedia. | Pour l'instant, je ne possède pas cette information dans mes données. |
Concept de compagnie :
Le concept de compagnie représente les différents types de compagnies classées par secteur d'activité. Ce qui nous intéresse surtout dans ce concept sont les compagnies de l'industrie du cinéma. Je n'ai pas trouvé d'ontology des compagnies (qui classes les compagnies par secteur d'activité) sur le Web, donc j'ai fait une ébauche d'une (très) petite ontologie afin de catégoriser plus précisement les compagnies de l'industrie du cinéma, mais ce sujet mériterait amplement une ontologie d'assez grande envergure pour le représenter, donc mes classes pour représenter ce concept ne font que suggérer une façon possible de classer diverses compagnies. Aussi, je n'ai pas mis de propriété (excepté le nom de la compagnie), car de toute façon le concept des compagnies ne concerne pas directement le domaine des films. Les classes au niveau des secteurs économiques sont disjointes car en général une compagnie qui oeuvre dans un secteur d'économie n'oeuvrera pas dans un autre secteur. Par contre, aux niveaux plus bas, les classes ne sont plus disjointes car il est possible qu'une compagnie a des activités qui s'étalent sur plusieurs secteurs de ce niveau (par exemple, une compagnie qui oeuvre dans l'industrie cinématographique et dans l'industrie du jeu vidéo).
Classes représentant le concept de compagnie :
| Classe | Description | Commentaires |
|---|---|---|
| Company | Classe représentant l'ensemble des compagnies. | |
| company:PrimarySectorCompany | Spécialisation de la classe Company. Représente les compagnies dont les activités concernent le secteur primaire de l'économie. | |
| company:SecondarySectorCompany | Spécialisation de la classe Company. Représente les compagnies dont les activités concernent le secteur secondaire de l'économie. | |
| company:TertiarySectorCompany | Spécialisation de la classe Company. Représente les compagnies dont les activités concernent le secteur tertiaire de l'économie. | |
| company:ForestIndustryCompany | Spcécialisation de la classe company:PrimarySectorCompany. Représente les compagnies du secteur forestier. | |
| company:MiningIndustryCompany | Spécialisation de la classe company:PrimarySectorCompany. Représente les compagnies du secteur minier. | |
| company:FilmIndustryCompany | Spécialisation de la classe company:TertiarySectorCompany. Représente les compagnies oeuvrant dans l'industrie cinématographique. | |
| company:VideoGameIndustryCompany | Spécialisation de la classe company:TertiarySectorCompany. Représente les compagnies oeuvrant dans l'industrie du jeu vidéo. |
Propriétés de la classe Company (et de toutes ses sous-classes par héritage) :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| company:companyName | xsd:String | Nom de la compagnie. Chaque compangie doit avoir exactement un nom. |
Concept de classement de films :
Le concept de classement représente l'ensemble des classements que peut avoir un film, selon les différents systèmes de classement qui existent dans le monde. Ce concept mériterait amplement une ontologie à part entière pour le représenter, car chaque pays a son propre système de classement et certains pays (pas tous) ont un système de classement différent selon la région du pays (par exemple, les provinces au Canada ont des systèmes de classement différents). Il y aurait donc énormément de données à représenter seulement pour les systèmes de classement donc, pour simplifier, j'ai seulement créé des classes pour représenter les systèmes de classement des États-Unis (classement à l'échelle nationale, donnée par la MPAA) et pour les systèmes de classement de quelques provinces au Canada. Les classes sont toutes disjointes, car même si un classement peut avoir la même cote dans plusieurs pays différents (par exemple, la cote G qu'on retrouve au Canada et aux États-Unis), les critères pour attribuer cette cote peuvent varier d'un pays à l'autre. Donc, le fait de "dupliquer" les cotes permet de bien représenter la cote G des États-Unis, la cote G du Québec, la cote G de l'Ontario, etc. Finalement, chaque super-classe dans cette hiérarchie est une union de ses sous-classes (les sous-classes forment une partition des valeurs).
Classes représentant le concept de classement :
| Classe | Description | Commentaires |
|---|---|---|
| Rating | Classes représentant les classements de tous les pays du monde. | |
| CanadaRating | Spécialisation de Rating. Représente l'ensemble des classements qu'il y a au Canada. | |
| BCRating | Spécialisation de CanadaRating. Représente l'ensemble des classements de la Colombie-Britannique. | |
| PEIRating | Spécialisation de CanadaRating. Représente l'ensemble des classements de l'Île du Prince-édouard. | |
| QcRating | Spécialisation de CanadaRating. Représente l'ensemble des classements du Québec | |
| USARating | Spécialisation de Rating. Représente l'ensemble des classements qu'il y a aux États-Unis. |
Propriétés de la classe Rating (et de toutes ses sous-classes par héritage) :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| ratingIn | geopolitical:territory | Chaque classement appartient à exactement un pays ou à exactement une région. | Comme mentionné dans la description du concept, même si une cote peut se retrouver dans plusieurs pays ou régions, j'ai préféré la "dupliquer" afin de représenter le fait que la même cote dans deux pays ou régions différents peut avoir une signification différente, tout dépendamment des critères d'attribution des cotes. |
Concept de distribution de films :
Le concept de distribution de films représente l'ensemble des distributions d'un film à travers le monde. Plus précisement, ce concept représente, pour un film, un distributeur et une année précise, l'ensemble des pays dans lesquels ce film a été distribué par cette compagnie à l'année donnée, et aussi dans quel format le film a été distribué. La classe servant à représenter ce concept est MovieDistribution. L'inconvénient de cette structure est qu'il faut créer une instance de MovieDistribution à chaque fois qu'on veut représenter la distribution d'un film par une autre compagnie, à une autre année ou dans un autre format. Il faut créer de nouvelles instances à chaque fois car sinon on ne serait plus capable de faire les mêmes liens entre les données. Par exemple, si une instance de MovieDistribution pouvait avoir plusieurs années (pour représenter plusieurs moments où la compagnie a distribué le film), alors on ne serait plus capable de déterminer pour quels pays la distribution a eu lieu à l'an X et pour quels pays elle a eu lieu à l'an Y.
Classes représentant le concept de distribution de film :
| Classe | Description | Commentaires |
|---|---|---|
| MovieDistribution | Classe représentant l'ensemble des distributions d'un film à travers le monde, selon le distributeur, l'année et le format de distribution. |
Propriétés de la classe MovieDistribution :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| dc:publisher | company:MovieDistributionCompany | Compagnie qui distribue le film. Chaque instance de cette classe doit être liée à exactement un distributeur. | |
| hasDistributionType | DistributionType | Format de la distribution. Chaque instance de cette classe doit être liée à exactement un format de distribution. | |
| isDistributedIn | geopolitical:territory | Pays où le film est distribué. Chaque film doit être distribué dans au moins un pays. | |
| yearDistribution | xsd:Integer | Année durant laquelle le film a été distribué. Chaque instance de cette classe doit être liée à exactement une année de distribution. |
Concept de date de sortie d'un film :
Le concept de date de sortie représente l'ensemble des dates de sorties de film, selon le pays dans lequel il est sortie et aussi le type de sortie (standard, première à Londre, festival de Cannes, etc.).
Classes représentant le concept de date de sortie :
| Classe | Description | Commentaires |
|---|---|---|
| ReleaseDate | Classe représentant l'ensemble des dates de sorties d'un film à travers le monde (date de sortie par pays) et le type de sortie du film à ce moment là. |
Propriétés de la classe ReleaseDate :
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| dateOfRelease | xsd:Date | Date à laquelle la sortie a eu lieu. Chaque instance de cette classe doit avoir exactement une date de sortie. | |
| releasedIn | geopolitical:territory | Pays dans lequel la sortie a eu lieu. Chaque instance de cette classe doit être liée à exactement un pays dans lequel le film est sortie. | |
| typeOfRelease | xsd:String | Type de sortie du film à cette date et dans ce pays. Chaque instance de cette classe doit être liée à exactement un type de sortie (par défaut, on considère la sortie comme étant de type "Standard"). | J'ai décidé de choisir un type String simple pour représenter cette propriété, car il ne semble pas y avoir de standardisation pour les types de sorties possibles. |
Concept de durée d'un film :
Le concept de durée d'un film représente tout simplement la durée (en minutes) d'un film, et le fait qu'un film peut avoir plusieurs durées, selon la version du film. Par exemple, la durée des versions longues des films du "Seigneur des Anneaux" ont une durée différente de la version standard. Le concept de durée représente donc le fait qu'un film peut avoir plusieurs durées selon sa version, et associe donc une durée de film avec la version et, si c'est le cas, avec le pays où le film a cette durée.
Classes représentant le concept de durée de film :
| Classe | Description | Commentaires |
|---|---|---|
| Runtime | Classe représentant l'ensemble des durées d'un film, selon sa version et le pays où il est diffusé (la version, et donc la durée du film, peut varier d'un pays à l'autre). |
Propriétés de la classe Runtime
| Propriété | Ensemble d'arrivé ("range") | Description | Commentaires |
|---|---|---|---|
| inReleaseCountry | geopolitical:territory | Pays dans lequel la durée du film s'applique. Par défaut, si aucun pays n'est spécifié, on suppose que la durée s'applique à tous les pays où le film est sortie dans cette version. | |
| lengthInMinutes | xsd:Integer | Durée de cette version du film. Chaque version du film doit avoir exactement une durée. | |
| typeOfEdition | xsd:String | Type de version du film, si celle-ci est autre que la version standard. Chaque durée peut être associée au maximum à un type de version. | Je me suis contenté d'une String pour représenter cette donnée, mais il y aurait peut-être moyen de faire une énumération des types de versions possibles, par exemple "special edition", "extended edition", "tv version", etc. Par contre, je ne sais pas si les termes utilisés pour définir ces différents types de versions sont standardisés, donc c'est pour cela que j'ai préféré utiliser seulement une String. |
Concept de genre :
Ce concept représente les genres auxquels peuvent appartenir les films. Mon intention était d'organiser les différents genres de films en une hiérarchie de genres et sous-genres mais, après avoir fait des recherches sur le sujet, je me suis rendu compte qu'il serait très difficile de construire une telle hiérarchie. La raison principale est qu'un film va être associé aux genres qui correspondent aux éléments du films, et ceux-ci peuvent être très différents. Par exemple, on ne pourrait pas dire que le genre "Western" est un sous-genre de "Action", car il existe des "Westerns" qui sont des films dramatiques (avec des éléments de films "Western"). Le fait de déclarer le genre "Western" comme sous-genre de "Action" implique que tous les "Westerns" sont des films d'actions, ce qui n'est pas vrai. Donc, au lieu de cela, j'ai simplifié le problème en déclarant une classe énumérée, Genre, qui contient tous les genres principaux répertoriés sur IMDB. Ensuite, les films sont associés à tous les genres qui leur correspondent, sans restriction de disjonction entre deux genres.
Concept de type de distribution :
Le concept de type de distribution représente tout simplement les types de médium sur lesquels on peut distribuer un film. Ce concept est représenté dans l'ontologie par la classe énumérée DistributionType, qui comprend les types "Theatrical", "DVD", "Blu-Ray", "HD-DVD" et "Television".
Concept importé: geopolitical
Ce concept fournit des informations sur l'ensemble des territoires dans le monde. J'ai importé ce concept afin de pouvoir référer aux sous-classes de geopolitical:territory et ainsi de pouvoir référer aux instances représentant les pays dans le monde.
Pour créer les instances de l'ontologie, j'ai utilisé une feuille de style xslt afin de transformer automatiquement mes données XML originales. Par contre, il y a plusieurs informations qui ne sont pas présentent dans mes données, ce qui m'empêche de créer des instances vraiment fonctionnelles pour mon ontologie, car celle-ci est trop stricte sur certaines propriétés sur lesquelles je ne peux fournir aucune information. Par exemple, je ne peux pas créer d'instance de MovieDistribution, car mes données ne contiennent aucune information sur l'année de distribution ou son type. Par contre, il est quand même nécessaire, même si cela empêche la création d'instances viables pour l'ontologie, de ne pas réduire les restrictions de celle-ci, car ce sont ces restrictions qui permettent d'avoir une ontologie qui catégorise bien les données et qui leur donnent une sémantique claire, vraie et précise.
Ce travail m'a fait réaliser que la conception et l'implantation d'une ontologie le moindrement grande est une tâche complexe et ardue. Cela m'a aussi fait réaliser qu'il faut prendre le temps de bien réfléchir au domaine qu'on veut modéliser avant de commencer à en faire l'implémentation si on veut que notre ontologie puisse facilement prendre de l'expension dans le futur. Ce travail m'a aussi fait remarquer à quel point une ontologie rendait la structure des données plus claire comparé aux fichiers de triplets RDF pêles-mêles, et aussi qu'une telle ontologie rend les données plus sécuritaires, dans le sens où les instances qui ne respectent pas les règles de l'ontologie seront tout de suite interdites, et donc qu'on peut s'assurer que les données que l'on reçoit contiendront exactement les informations qu'on attend d'elles. Aussi, j'ai remarqué que, lorsqu'on modélise un domaine, la plupart du temps il y a des données dans notre ontologie qui appartiennent à d'autres domaines connexes et donc qu'il y a plusieurs ontologies, de domaines différents, avec lesquelles notre ontologie pourrait communiquer afin d'utiliser les structures déjà mise en place par celles-ci. Ceci nous permet en général de mieux structurer nos données sans effort. Finalement, une bonne amélioration au travail que j'ai fait serait donc de pousser mes recherches encore plus loin pour essayer de trouver des ontologies qui pourraient modéliser certaines des données contenues dans mon ontologie, ce qui me permettrait d'alléger le contenue de celle-ci et de mieux structurer certaines données (comme les compagnies) qui ne font pas partie directement du domaine que je veux modéliser, c'est-à-dire les films.
Voici deux images qui montrent la complexité de la hiérarchie des familles de langues naturelles :