- Introduction
- Demo
- Requirements
- Software Design
- Semantic Clothing Ontology
- Development & Installation
- Bibliography
Semantic Clothing Web Application that enables the selection of different clothing items based on the existing wardrobe. Some people have difficulties when choosing the right vestment for a certain type of event (i.e., interview, dinner party, show, etc.). The purpose of the project is to create an Web Application that enables the selection of different clothing items based on the existing wardrobe; the information of interest can be obtained from DBpedia or Freebase. The application will offer suggestions that take into account the fashion proclivity, the season, or different preferences that the user has. Moreover, the user will be able to receive information regarding the purchasing of different items of interest, taking into account its geographic localization.
Some people have difficulties when choosing the right vestment for a certain type of event (i.e., interview, dinner party, show, etc.). The purpose of the project is to create an Web Application that enables the selection of different clothing items based on the existing wardrobe; the information of interest can be obtained from DBpedia or Freebase. The application will offer suggestions that take into account the fashion proclivity, the season, or different preferences that the user has. Moreover, the user will be able to receive information regarding the purchasing of different items of interest, taking into account its geographic localization.
Keywords: project, infoiasi, wade, web, fii, uaic, semantic, rdf, sparql.
In this sub-section we will provide some use-cases regarding possible uses of the application.
The following sketch depicts the flow of the user when he uses the application for the first time. In this use-case, the user has to complete the following three steps:
- Provide relevant account details, or link the account to an existing ID;
- Provide relevant information about him: age, sex, culture, geographical location, etc.;
- Configure his wardrobe: (s)he needs to add the clothing items that constitute the wardrobe.
Click on the image to see it at full size.
![An image depicting the flow the user has to follow when he uses the application for the first time.](https://github.com/danielamariei/semcloth/raw/master/wiki-resources/images/first-uage-flow.jpg)
In this use-case we depict the mode of interaction when the users wants to obtains a list of recommendations. In the first screen, on the right, the user is able to see the list of recommended items, according to the selected criteria. The options according to which the user can obtain recommendations are presented in more detail in the second screen. Here, the user has several options from which he can select: event, style preferences, weather & season and trends.
Click on the image to see it at full size.
![An image depicting an user interface that displays a list of items.](https://github.com/danielamariei/semcloth/raw/master/wiki-resources/images/clothing-recommendations.jpg)
In the first screen, we present the information the user sees for a specific recommendation. The left side of the screen presents to the user the recommended clothing items -- according to his preferences --, while the right side presents a map on which the user has available various location at which he can go shopping for various clothing items that might be of interest to him.
The second screen presents to the user the possibility to configure his wardrobe (i.e., add or remove clothing items).
Click on the image to see it at full size.
![An image that depicts an user interface that displays a screen with various details regarding an item.](https://github.com/danielamariei/semcloth/raw/master/wiki-resources/images/recommendation-details.jpg)
The first step in developing the application requires involves defining the data model(s).
1. A clothing item
The first thing that need to be modeled in our application is a clothing item. Each clothing item that the users adds to its wardrobe will be represents as an RDF assertion of the form:
Here, clothing item is represented by things like: shoes, skirt, shirt, jeans, etc. Each clothing item can have different characteristics like: fabrics, color, size, texture, manufacturer, etc. In the end, we have a value for each characteristic of the clothing item -- the value can be both literal or resource like: red or http://dbpedia.org/resource/Red for the color characteristic, and similar.
2. The Wardrobe
Going a step further, we need to model the wardrobe for a user. In essence, an wardrobe will contain a set of clothing items, which are in fact represented by a set of RDF assertions. As such, an wardrobe will be represented by a Named RDF Graph, which will be identified uniquely to correspond to the ID of the user. This will enable us to infer recommendation for a user taking into account only the clothing items relevant to him -- those that constitute his wardrobe. Following, we depict the modelling of the wardrobe:
3. All the Wardrobes
The final step in modelling the data is the conceptual representation of the wardrobes for all the users. Since each user has its wardrobe store in a Named RDF Graph, this naturally leads to the concept of RDF Dataset, which is comprised by zero or more Named RDF Graph an at most an unnamed one. As such, and the RDF Dataset will be comprised by all the wardrobes the users of our application have. Following, we depict the modelling of all the wardrobes:
4. Clothes ontology
In order to be able to make clothing recommendations to the user, we need to develop an ontology that takes into consideration the various hierarchical and relational aspects of the clothes. For example: the events at which a particular class of clothing items can be used, weather restrictions for certain types of fabrics (e.g., cashmere, silk, etc.), and similar considerations.
The ontology also need to reflect the existing vocabulary that we can use when the users adds clothing items to his wardrobe.
The ontology will also act as a binder between existing -- external -- ontologies, in order to provide a common framework in which we can make inferences.
Clothing Items Ontology
We did not find one yet.
GeoNames Ontology
We can use this ontology in order to add semantic information to our data from a geographical standpoint. This will entail us to make recommendation that are nearby of the user, take into consideration to season in the respective location an similar aspects.
Maps Image APIs
We will use this APIs to embed a Google Maps image in order to pinpoint the locations of the stores recommended to the user.
Places API
This API will be used to obtain information about nearby store for a particular geographical location.
The system will be structured according to an N-Tier Architecture, according to the following graphical representation:
Towards the Semantic Clothing REST API
In order to develope the Ontology for our project, we have used various external vocabularies/ontologies/datasets, including:
- DBpedia;
- Dublin Core Metada Initiative;
- Semantically-Interlinked Online Communities (for the moment just one term).
The Semantic Clothing Ontology is available in the following serialization formats:
In order to test the application you need to perform the following steps:
- For more details please consult the Stardog documentation;
- Create a new database and import the following files in a new database:
- The Semantic Clothing Ontology; pick one of the following serialization formats found in the ontology folder;
- The dbpedia-triples.ntriples file from the dbpedia resource folder.
- Make sure you start the database before using the application.
- Install the Scala interactive build tool;
- Fetch the repository;
- Update the ConnectionPool.scala file to contain the name of your newly created database;
- Open a terminal and position yourself in the restApi folder and run the following commands:
- sbt;
- compile;
- run.
- Open the following URL in a browser: http://localhost:9000/semcloth/login.html.
- ***, Dr. Sabin-Corneliu Buraga, FII, UAIC. Web Application Development. http://profs.info.uaic.ro/~busaco/teach/courses/wade/;
- ***, MKBERGMAN.COM, AI3:::Adaptive Information Adaptive Innovation Adaptive Infrastructure. A decade in the Trenches of the Semantic Web. http://www.mkbergman.com/1771/a-decade-in-the-trenches-of-the-semantic-web/;
- ***, MKBERGMAN.COM, AI3:::Adaptive Information Adaptive Innovation Adaptive Infrastructure. The Rationale for Semantic Technologies. http://www.mkbergman.com/1015/the-rationale-for-semantic-technologies/;
- ***, W3.ORG, Tim Berners-Lee. Linked Data. http://www.w3.org/DesignIssues/LinkedData.html;
- ***, W3.ORG, Guus Scheriber et al. RDF 1.1 Primer. http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/;
- ***, W3.ORG, Richard Cygniak et al. RDF 1.1 Concepts and Abstract Syntax. http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/;
- ***, W3.ORG, Dan Brickley et al. RDF Schema 1.1. http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/;
- Channu Kambalyal (Prepared By). _3-Tier Architecture_ș
- ***, LINKEDDATATOOLS.COM. Introducing Linked Data And The Semantic Web. http://www.linkeddatatools.com/semantic-web-basics/;