Skip to content

danielamariei/semantic-clothing

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Semantic Clothing

Introduction

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.

Demo

Requirements

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.

Use cases

In this sub-section we will provide some use-cases regarding possible uses of the application.

First Usage Flow

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:

  1. Provide relevant account details, or link the account to an existing ID;
  2. Provide relevant information about him: age, sex, culture, geographical location, etc.;
  3. 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.

Clothing Recommendations

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.

Recommendation Details and Wardrobe Configuration

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.

Software Design

Data Modelling

The first step in developing the application requires involves defining the data model(s).

Internal data

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:

An image representing the and RDF assertion for a clothing item.

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:

An image depicting the representation of an wardrobe as a Named RDF Graph.

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:

An image depicting the representation of all the wardrobes as an RDF Dataset.

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.

External Data

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.

Software Architecture

The system will be structured according to an N-Tier Architecture, according to the following graphical representation:

An image depicting the architecture of the system.

REST API

Towards the Semantic Clothing REST API

Semantic Clothing Ontology

In order to develope the Ontology for our project, we have used various external vocabularies/ontologies/datasets, including:

The Semantic Clothing Ontology is available in the following serialization formats:

Development & Installation

In order to test the application you need to perform the following steps:

Prepare the database

  1. For more details please consult the Stardog documentation;
  2. Create a new database and import the following files in a new database:
  3. The Semantic Clothing Ontology; pick one of the following serialization formats found in the ontology folder;
  4. The dbpedia-triples.ntriples file from the dbpedia resource folder.
  5. Make sure you start the database before using the application.

Prepare the application

  1. Install the Scala interactive build tool;
  2. Fetch the repository;
  3. Update the ConnectionPool.scala file to contain the name of your newly created database;
  4. Open a terminal and position yourself in the restApi folder and run the following commands:
  5. sbt;
  6. compile;
  7. run.

Start using the application

  1. Open the following URL in a browser: http://localhost:9000/semcloth/login.html.

Bibliography

  1. ***, Dr. Sabin-Corneliu Buraga, FII, UAIC. Web Application Development. http://profs.info.uaic.ro/~busaco/teach/courses/wade/;
  2. ***, 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/;
  3. ***, MKBERGMAN.COM, AI3:::Adaptive Information Adaptive Innovation Adaptive Infrastructure. The Rationale for Semantic Technologies. http://www.mkbergman.com/1015/the-rationale-for-semantic-technologies/;
  4. ***, W3.ORG, Tim Berners-Lee. Linked Data. http://www.w3.org/DesignIssues/LinkedData.html;
  5. ***, W3.ORG, Guus Scheriber et al. RDF 1.1 Primer. http://www.w3.org/TR/2014/NOTE-rdf11-primer-20140624/;
  6. ***, W3.ORG, Richard Cygniak et al. RDF 1.1 Concepts and Abstract Syntax. http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/;
  7. ***, W3.ORG, Dan Brickley et al. RDF Schema 1.1. http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/;
  8. Channu Kambalyal (Prepared By). _3-Tier Architecture_ș
  9. ***, LINKEDDATATOOLS.COM. Introducing Linked Data And The Semantic Web. http://www.linkeddatatools.com/semantic-web-basics/;

About

Semantic Clothing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 54.9%
  • HTML 25.5%
  • CSS 7.2%
  • RAML 6.7%
  • Scala 3.6%
  • PHP 1.8%
  • Python 0.3%