Progetto: (Yet Another) Product Ontology

Docente: Prof.ssa Rossana Damiano

Studenti: Ivan Spada e Federico Torrielli


PARTE I

Motivazioni

Rilevanza del dominio scelto dal punto di vista culturale, professionale, sociale, ecc.

Argomento scelto

Catalogo di prodotti e servizi di una generica azienda nell’ambito di vendita e noleggio di prodotti tecnologici. In particolare, nel seguente documento analizziamo il caso di una multinazionale e la gestione del suo catalogo. Di seguito, mostriamo una breve descrizione e la principale motivazione di sviluppo:

Prendiamo in analisi i principali prodotti dell’azienda Apple, collocata nell’ambito tecnologico.

Sono trattati alcuni prodotti progettati e venduti in Italia a partire dall’anno 2016.

Alcuni esempi di prodotti venduti sono:

Motivazione 1: catalogare per vendere più in fretta

All’interno di una grande azienda come Apple, che principalmente ha il focus di produrre pochi dispositivi con simile design ma funzioni nettamente separate è utile avere un punto di riferimento dal punto di vista dell’organizzazione della conoscenza per svariate motivazioni:

La motivazione principale della creazione di questa ontologia nasce, in verità, da qualcosa che Apple non mette a disposizione dell’utente: un tool per confrontare dispositivi simili. Per essere più chiari, proponiamo un esempio:

L’utente x ha la necessità di comprare un telefono iPhone ma ha a disposizione un budget limitato e ha il desiderio di alcune specifiche che solo la serie iPhone X propone: si trova però davanti ad al bivio che nasce dalla possibilità di comprare l’iPhone XS oppure XR. Oggi come oggi, non esiste alcun tool (che non sia una ricerca manuale) per effettuare questo tipo di confronto, nonostante la loro accurata catalogazione che provvedono a dare sul sito. Ovvero, sul sito Apple il confronto avviene esclusivamente in maniera testuale ma non è possibile, ad esempio, filtrare i contenuti per CPU.

Se il povero utente avesse avuto la possibilità di confrontare i prodotti per prezzo, si sarebbe accorto che l’azienda vende il modello XR ad una cifra minore con (più o meno) la stessa qualità di prodotto.

L’azienda ha deciso di riproporre i propri dispositivi anche gli anni successivi mutando la fascia di clientela a cui erano precedentemente venduti. Alcuni dispositivi top di gamma dell’anno N risultano appartenenti alla fascia media dell’anno N+1 permettendo il riutilizzo dei vecchi device allungando la vita degli articoli e riducendo le scorte avanzate in magazzino allo stesso tempo. L’organizzazione del catalogo attraverso una rappresentazione della conoscenza, aggiornabile nel tempo, permette la riorganizzazione delle proposte degli anni successivi in base alle scelte di * marketing* stabilite dal team addetto all’interno dell’azienda.

Requirements

Requisiti per la creazione dell’ontologia: finalità, task, contesto e tipo di utenti a cui si rivolge

Finalità

Finalità generali della codifica formale del dominio

La costruzione del dominio della seguente ontologia ha come finalità l’utilizzo della stessa al fine di creare cataloghi di prodotti facilmente aggiornabili, flessibili alle modifiche e su cui si possano effettuare delle operazioni di ricerca (sia come applicazione, sia simil-DB). Dal punto di vista aziendale, diventa sempre più complicato gestire cataloghi di prodotti, soprattutto se risultano simili se non identici: organizzando i dati secondo un’ontologia gerarchica consultabile non solo si può usufruire più facilmente del catalogo (da cliente) ma diventa altrettanto aggiornabile.

Task e contesto

I task specifici a cui è orientata e il contesto in cui si collocano

Il catalogo permette l’organizzazione dei prodotti venduti dall’azienda, tiene in considerazione le fasce di clientela a cui gli articoli sono indirizzati e le possibili variazioni nel tempo seguendo le scelte commerciali e rispettando le relazioni fra items. È possibile la consultazione della raccolta da parte dei clienti usufruendo di filtri in grado di semplificare la ricerca, la lettura e il confronto con i competitor. Il contesto è la vendita e la consultazione dei prodotti delle aziende.

Utenti target

Il tipo di utenti a cui si rivolge

Descrizione

Descrizione del dominio, con riferimenti bibliografici e/o sitografia

Dominio

Descrizione del dominio

Il dominio, collocato nell’ambito commerciale, ha come fine la rappresentazione dei prodotti delle aziende mettendoli in relazione tra loro in base a prestazioni, qualità e target. Contiene le descrizioni degli articoli e le specifiche tecniche, permette il confronto dei prodotti e la loro organizzazione utile alle aziende e ai clienti. Infine, mantiene traccia delle proposte annuali disponibili sul mercato.

Fonti

Riferimenti bibliografici e sitografia

Sitografia

Apple (Italy). Available at: https://www.apple.com/it/

Asus (Italy). Available at: https://www.asus.com/it/

Samsung (Italy). Available at: https://www.samsung.com/it/

Documentazione sul dominio

Qua verranno mostrati documenti informali, specifiche e standard esistenti ed un esempio reale che mostri il funzionamento della nostra ontologia.

Ontologie similari ed ispirazione

Per trarre ispirazione della Simple IT Product Catalog si è partiti dalla già nota necessità di avere un ontologia dei prodotti, di fantasia, che potesse esplicare concetti come “catalogo”, “prodotto” e “device”. Ci si è quindi accorti che durante la costruzione della stessa si stava virando sempre più verso il concetto di “ontologia per l’e-commerce”: è stato quindi preso spunto da esempi come la Good Relations ontology, un vocabolario web appositamente creato per questo genere di utilizzi, sia da aziende che da altre ontologie che ne fanno utilizzo.

Nonostante Good Relations fosse un buon punto di partenza, si palesava il fatto che fosse nata principalmente a scopo di SEO Tool per siti web che possedevano CMS (ad esempio un SEO per Wordpress!).

Figlia della già nota Good Relations, la Product Ontology un’ontologia, autoesplicativa nel nome, che fa riferimento a Wikipedia per esplicare i singoli prodotti, cui si è deciso di allinare parecchie nostre definizioni per avere anche un punto di vista interessante su una ontologia pre-esistente. La Product Ontology è davvero particolare in quanto non ha bisogno di manualmente “integrare” la sua T-BOX ed A-BOX per l’ontologia, ma, come già accennato, prende in prestito le sue definizioni da Wikipedia, e le ordina come la comunità ha deciso di allineare i concetti di partenza.

Documenti informali

Apple

La creazione dell’ontolgia si è ispirata all’organizzazione dei prodotti in catalogo di aziende come Apple, di cui è possibile trovare sotto alcuni esempi

Accessori1

Macbook e iMac

Accessori2

iPad

Accessori3

iPhone

Accessori4

Accessori e Apple Watch

Si può chiaramente vedere come la prima divisione fatta sia tramite “tipologia” di prodotto: i computer, poi i laptop, e ancora gli iPad, iPhone ed infine gli accessori come Apple Watch e AirPods.

Accanto ad ogni categoria è poi possibile confrontare tipi equivalenti di prodotto (ad es. laptop con laptop) tramite il menù “Confronta”. Non è invece possibile fare confronti di prezzo sulle intere categorie (che sarebbe uno degli obiettivi della nostra ontologia!).

È stato notato che la classificazione dei prodotti data da Apple è confusa e chiaramente tende a far notare a primo impatto i prodotti più nuovi invece che i più venduti, cosa che invece siti come MediaWorld fanno, non essendo legati ad un marchio soltanto.

Samsung

Samsung1

Sul sito di Samsung si può già notare la differenziazione tra dispositivi portatili e non, cosa presente anche all’interno della nostra ontologia e che chiaramente rende più semplice la visualizzazione di un catalogo di Prodotti elettronici.

Il fatto che Samsung abbia un’organizzazione di questo tipo fa pensare che, a differenza di Apple, i suoi prodotti non sono pensati per essere iconici, e che, ovviamente, il loro catalogo sia ben più vasto della già citata azienda di Cupertino.

Asus

Asus1

Qua è possibile visionare la divisione di vari computer da lavoro (sia fissi, che portatili, che ibridi). Più o meno si adatta lo stesso pattern di Samsung, in quanto il modello di azienda è equiparabile.

Organizzazione aziendale

La presenza di molteplici compagnie che hanno preso parte al ciclo produttivo degli articoli ha ispirato la classificazione delle stesse per ruolo: progettazione e produzione.

Ogni azienda, nel ramo IT, o:

Un esempio già citato è la Apple, che commissiona il design dei prodotti a Foxconn e la sua produzione di Chipset a Qualcomm (non attualmente, ma è un buon esempio).

Organizzazione user

I prodotti IT vengono spesso realizzati avendo in mente una tipologia (o target) di clientela, come ad esempio la divisione delle serie (J,Z,M,A…) di Samsung.

In un catalogo di prodotti IT, più di altri, è importante ricordare che si tratta di vendere prodotti che solitamente sono costosi: un catalogo che permetta la visualizzazione per fascia di prezzo è spesso apprezzato e aiuta la clientela a scegliere prodotti per feature/prezzo e qualità/prezzo.

Comparare i prodotti

GalaxyZ

Nel mondo dei device tecnologici forse il più importante fattore di scelta di un prodotto piuttosto che un altro sono le sue specifiche tecniche. Nella precedente immagina possiamo notare come le diverse caratteristiche si dividano, a seconda del dispositivo, nelle sue componenti interne.

Le stesse vengono anche utilizzate per proporre “comparison” (confronti) tra dispositivi in modo da poter fare una scelta più accurata.

Comparison

Lode

Qui il report LODE

Visualizzazione

Tassonomia delle classi

Tassonomia di progetto

Template utilizzati per i dati (GraphDB)

Apple template

iPhone12 64GB template

Triple di esempio

Si sono voluti selezionare due esempi (rispettivamente yapo:Apple e yapo:iPhone12_64) per mostrare alcune delle triple più utilizzate nel progetto per descrivere istanze dell’ontologia: gli esempi sono incompleti di tutti i dati dell’ontologia.

Apple

Sono state incluse, come si può notare, anche alcune delle inferenze che tramite GraphDB vengono esplicitate qui in tabella.

Per quanto riguarda la colonna del contesto, è stata riportata ma il contesto accluso è quello di default dell’applicazione.

Apple2

Esportazione Turtle

L’esportazione Turtle si trova QUI


PARTE II

Flusso d’iterazione utente

Iterazione Utente

Operazioni utente

Schema di interfaccia: CLI

CLI

Esempio su terminale sipcp

Esempio - ASCIINEMA

SPARQL

Operazione 1

Descrizione: dato il nome dell’azienda, restituisce tutti i prodotti che vende.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

SELECT ?prod WHERE{
	?prod rdf:type yapo:Product.	
	?company rdf:type yapo:Company;
		yapo:sells ?prod.
	FILTER(?company = yapo:Apple)
}

Return:

Operazione 2

Descrizione: data una soglia di prezzo base P, restituisce tutti gli smartphone con prezzo >= P e relativi azienda e prezzo prodotto ordinati per prezzo ASC.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>
PREFIX price: <http://www.ontologydesignpatterns.org/cp/owl/price.owl#>

SELECT ?prod ?brand ?price WHERE { 
	?brand rdf:type yapo:Company.
	?price rdf:type price:Price;
		price:hasValue ?v.
	?prod rdf:type yapo:Smartphone;
		yapo:hasBrand ?brand;
		price:hasPrice ?price.
	FILTER (?v >= '600'^^xsd:float)
}
ORDER BY ?price

Return:

Operazione 3

Descrizione: restituisce gli smartwatch che sono compatibili con uno smartphone, visualizza smartwatch, brand smartwatch, prezzo smartwatch, smartphone compatibile.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>
PREFIX price: <http://www.ontologydesignpatterns.org/cp/owl/price.owl#>

SELECT ?smartw ?brand ?pricesmartw ?smartp WHERE { 
	?brand rdf:type yapo:Company.
	?pricesmartw rdf:type price:Price.
	?smartp rdf:type yapo:Smartphone.
	?smartw rdf:type yapo:Smartwatch;
		yapo:compatibleWith ?smartp;
		yapo:hasBrand ?brand;
		price:hasPrice ?pricesmartw.
}

Return:

Operazione 4

Descrizione: dato un prezzo base P per gli smarphone, restituisce gli smartwatch compatibili con gli smartphone con prezzo >= P, il brand dello smartwatch e i prezzi dei due dispositivi. Ordinato per prezzo smartphone crescente.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>
PREFIX price: <http://www.ontologydesignpatterns.org/cp/owl/price.owl#>

SELECT ?smartw ?brand ?pricesmartw ?smartp ?pricesmartp WHERE { 
	?brand rdf:type yapo:Company.
	?pricesmartw rdf:type price:Price.
	?pricesmartp rdf:type price:Price;
		price:hasValue ?vsmartp.
	?smartp rdf:type yapo:Smartphone;
		price:hasPrice ?pricesmartp.
	?smartw rdf:type yapo:Smartwatch;
		yapo:compatibleWith ?smartp;
		yapo:hasBrand ?brand;
		price:hasPrice ?pricesmartw.
	FILTER (?vsmartp >= "600"^^xsd:float)
}

Return:

Operazione 5

Descrizione: data la scelta di uno smartphone in particolare, restituisce il cavo che è contenuto all’interno della confezione di vendita.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

SELECT ?smartp ?cable WHERE { 
	?cable rdf:type yapo:Cable.
	?smartp rdf:type yapo:Smartphone;
		yapo:containsInBox ?cable.
	FILTER(?smartp = yapo:Iphone11_64)
}

Return:

Operazione 6

Descrizione: restituisce se nel catalogo Apple ci sono anche cuffie della BeatsAudio.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

ASK {
	?company rdf:type yapo:Company;
	    yapo:sells ?earPlugs.
    ?earPlugs rdf:type yapo:EarPlugs.	
	?brand rdf:type yapo:Company;
		yapo:isBrandOf ?earPlugs.
	FILTER(?company = yapo:Apple && ?brand = yapo:BeatsAudio).
}

Return:

Operazione 7

Descrizione: data la scelta di uno device in particolare, restituisce gli altri dispositivi che hanno montata la medesima cpu.

Query:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT ?prodLabel WHERE {      
    ?device rdf:type yapo:Device;
          yapo:CpuType ?cpu.
    SERVICE <https://query.wikidata.org/sparql> {       
        ?chip wdt:P31 wd:Q610398;
          rdfs:label ?label;
          wdt:P1535 ?prod.
        ?prod rdfs:label ?prodLabel.
        FILTER (?device = yapo:Iphone11_64 && lang(?prodLabel) = "it" && lang(?label) = "it" && regex(?label, ?cpu)).
    } 
}

Return:

Operazione 8

Descrizione: data la scelta di un device in particolare, restituisce lo username Instagram del brand del device.

Query:

PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

SELECT ?usernameIG WHERE {      
    ?device rdf:type yapo:Device;
            yapo:hasBrand ?brand.
    ?brand rdf:type yapo:Company;
           rdfs:label ?labelbrand.
    SERVICE <https://query.wikidata.org/sparql> {       
        ?company wdt:P31 wd:Q4830453;
            wdt:P2003 ?usernameIG;
            rdfs:label ?labelCompany.
        FILTER (?device = yapo:Iphone11_64 && lang(?labelCompany) = "it" && STR(?labelCompany) = STR(?labelbrand)).
    } 
}

Return:

Operazione 9

Descrizione: dato un utente, restituisce i prodotti che ha acquistato.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

SELECT ?prod WHERE{	
    ?prod rdf:type yapo:Product.
	?user rdf:type yapo:User;
		yapo:buysProduct ?prod.
	FILTER (?user = yapo:Giovanni_PowerUser)
}

Return:


Altre query

Query 1

Descrizione: data un’azienda, restituisce le aziende che lavorano con la prima.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

SELECT ?companyTo WHERE{
	?companyTo rdf:type yapo:Company.	
	?company rdf:type yapo:Company;
		yapo:manufacturesTo ?companyTo.
	FILTER(?company = yapo:Apple)
}

Return:

Query 2

Descrizione: dato un utente e uno specifico prodotto, registra l’acquisto del prodotto.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

INSERT { 
	?buyer yapo:buysProduct ?prod.
} WHERE {
	?buyer rdf:type yapo:User.
	?prod rdf:type yapo:Product.
	FILTER(?buyer = yapo:Giovanni_PowerUser && ?prod = yapo:Iphone11_64)
}

Return:

Query 3

Descrizione: dato un utente e uno specifico prodotto, rimuove l’acquisto del prodotto.

Query:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX yapo: <https://evilscript.altervista.org/yapo.owl#>

DELETE { 
	?buyer yapo:buysProduct ?prod.
} WHERE {
	?buyer rdf:type yapo:User.
	?prod rdf:type yapo:Product.
	FILTER(?buyer = yapo:Giovanni_PowerUser && ?prod = yapo:Iphone11_64)
}

Return:

Documentazione del programma

Simple IT Product Catalog Program

Programma terminale “sipcp” che permette non solo di fare delle query al SIPC ma di utilizzare l’endpoint GraphDB per interfacciarsi con SPARQL verso fonti esterne come WikiData etc.. etc..

Il programma è completamente fatto in Python e non include una GUI.

Per utilizzarlo basta installarlo con il comando pip install sipcp ed utilizzarlo direttamente nel terminale nel seguente modo:

NB: la prima esecuzione del programma chiederà all’utente di inizializzare un file config.ini che conterrà l’URL di GraphDB in locale (o su server), da quel momento in poi sarà registrato in locale nella cartella in cui è stato eseguito

Per invocare un help in formato internazionale, basta digitare sipcp --help Supporta Python3.6 e le versioni successive.

Note di esecuzione

sipcp nasce per essere eseguito su un terminale UNIX-like (Linux, MacOS…) e supporta la maggior parte dei terminali in circolazione, eseguendo anche output colorato. Su Windows funziona in ogni caso, ma le differenze principali sono:

Omeka-S per yapo

Motivazioni della scelta dell’estensione

Tra le estensioni disponibili è stata scelta quella di Omeka-S, una piattaforma CMS che è in tutto e per tutto una Linked Data Platform.

A differenza di GraphDB, Omeka ci ha dato molta più liberta di “giocare” con i dati a disposizione e creare individui e resource templates utilizzando ciò che avevamo già in input, ma con un grado di modificabilità e visibilità maggiore rispetto a GraphDB.

Come GraphDB possiamo effettuare query semantiche sulla KB e utilizzarle nelle pagine.

Specifiche

La piattaforma è stata installata manualmente su un server pubblico dotato di Ubuntu 20.10, fatto un setup di MySql, phpmyadmin e tutti gli strumenti necessari alla piattaforma per far lavorare il server senza intoppi.

Il link è pubblicamente accessibile QUI

Dalla versione di base è stato modificato il tema pre-installato, giusto per dare un “tocco più e-commerce” alla piattaforma.

Items e Item sets

In Omeka gli individuals sono chiamati “items”: ognuno di questi item fa riferimento ad un template per la sua creazione chiamato il “resource template”.

Sono stati creati, nel nostro caso, tre resource template rispettivamente per:

Sono quindi stati definiti degli Item sets rispettivamente:

E poi, aggiunti degli items, come si può vedere nell’immagine:

Item list

Pagine

Sono state create delle pagine per contenere ognuna di queste liste:

Come si può vedere, ogni pagina rimanda ad una lista di prodotti o brand che sono del dominio specificato.

Brands page InStock page OutOfStock page

Infatti, ognuna di queste pagine invia una query in-real-time al CMS semantico chiedendo la lista dei prodotti (o dei brand), senza mai mantenere una vera e propria cache.

Conclusione

Questo strumento mostra come anche un’azienda, attrezzata di un CMS come Omeka S, possa usufruire di questa tecnologia per pubblicare un catalogo completo di prodotti (e molto altro) alla fruizione del pubblico intero.