Ciao, intanto ti ringrazio per il prezioso consiglio, infatti stavo abbandonando l'idea di permettere all'utente di disegnare il grafo, sia perché non avevo idea di come tener traccia di nodi e archi e sia perché non sapevo come verificare che si tratti di un grafo ben formato (ossia che ogni arco collega due nodi ecc...). Mi è venuta l'idea di utilizzare i dialog per chiedere all'utente di inserire nodi e archi, ad ogni nodo sarà associato un nome da parte dell'utente e ogni arco invece corrispondera ad una proprietà.
Praticamente l'utente esprime attraverso un grafo con delle variabili e delle proprietà una specie di meta-query come se fosse un pattern:
Per esempio, la seguente metaquery:
P(?x, ?y), Q(?x, ?z), Q(?y, ?z)
(P e Q sono proprietà quindi archi, e le variabili invece sono ?x,?y,?z)
serve a cercare le proprietà Q condivise da due individui che sono correlati da P.
Qui P e Q sono nomi di variabili quindi possono essere istanziati in tanti modi a partire dai dati presenti nel grafo RDF.
una possibile risposta alla metaquery è la seguente:
isMarriedTo(?x, ?y), livesIn(?x, ?z), livesIn(?y, ?z)
che si ottiene istanziando la metaquery nel modo seguente: a P sostituisce isMarriedTo e a Q sostituisce livesIn.
In sostanza l'utente prima seleziona un grafo RDF da interrogare con una choicebox e successivamente "disegna" un grafo come l'esempio sopra ( P(?x, ?y), Q(?x, ?z), Q(?y, ?z) ) interrogando il grafo di conoscenza selezionato, e una possibile risposta tra tutte potrebbe essere "isMarriedTo(?x, ?y), livesIn(?x, ?z), livesIn(?y, ?z)"
In allegato la GUI momentanea realizzata da me, ovviamente dovrei cercare di capire prima in che modo far si che l'utente crei il grafo (abbiamo detto che disegnandolo non va bene per i motivi sopra citati)
Mi scuso per il papiro, ma per me è davvero importante riuscire a completare il tutto, avendo poca esperienza (se non quella dettata da alcuni esami universitari) ed essendo un lavoro di tesi vorrei una mano almeno per creare le "basi" del progetto..
Se riesci a consigliarmi una soluzione te ne sarei davvero molto grato..
Allegati: