domanda su query SPARQL

50 views
Skip to first unread message

Nico

unread,
Apr 29, 2013, 9:51:17 AM4/29/13
to spaghett...@googlegroups.com
Ciao,
sto provando a fare pratica con il linguaggio SPARQL, non riesco a capire

1) perchè a volte le tuple restituite da una query vengono duplicate o addirittura triplicate??
2) come faccio a non far comparire il datatype nei risultati delle query??


Alfredo Serafini

unread,
Apr 30, 2013, 12:07:07 PM4/30/13
to spaghett...@googlegroups.com
ciao Nicola, se ci fai qualche esempio magari sappiamo darti una mano, sennò non è chiaro (almeno a me) se ciò che viene duplicata è la risorsa oppure magari alcune triple legate ad essa.
In quest'ultima ipotesi occhio ai blanknodes, che producono a volte duplicazioni proprio poiché risorse "anonime" (e quindi in particolari casi chiedere due volte la stessa cosa non può che produrre due rappresentazioni della medesima cosa: su alcuni sistemi c'è un id interno per disambiguare, ma non è proprio standard come cosa)

In generale puoi usare (come immagino avrai fatto :-) la parola chiave DISTINCT subito dopo SELECT.

Se invece la questione che sollevi è più relativa alla denormalizzazione del risultato, lì c'è da fare ragionamenti più ampi sia in termini di formato di uscita (ultimamente c'è chi usa dei formati che hanno una intestazione con i nomi dei binding, così da alleggerire un poì le duplicazioni), sia in termini di costruzione delle query. Ma su questo o ci sentiamo a parte con calma con gli interessati per scambiare idee e non intasare la mailing list, oppure se ci dai qualche sempio "pratico" (se possibile ovviamente), magari ci aiuti a capire meglio il problema e proviamo a ragionarci su :-)

Nico

unread,
May 4, 2013, 6:27:16 AM5/4/13
to spaghett...@googlegroups.com
Alfredo un infinito grazie per l'interessamento e la disponibilità.
Per quanto riguarda i data type stavo provando a fare la seguente query (è fittizia ed è giusto per apprendere il linguaggio SPARQL):

select * where {

nei risultati ottengo valori in questa forma: "2610.0"^^<http://dbpedia.org/datatype/millimetre>
mi interesserebbe ottenere solo il valore 2610.0 e non il data type per poter elaborare i dati. Come posso risolvere questo problema? la query l'ho eseguita all'interno di Virtuoso di DBPedia.

In questa stessa query alcuni dei risultato sono duplicati perchè differiscono per il valore di un singolo attributo, cosa significa questo? nel dataset di dbpedia sono presenti tuple inserite più volte con dati che differiscono?
Grazie per l'aiuto!!

Alfredo Serafini

unread,
May 4, 2013, 7:39:43 AM5/4/13
to spaghett...@googlegroups.com
ciao Nico

il sistema più semplice è omettere il datatype forzando un risultato in forma di stringa:

SELECT DISTINCT str(?height) AS ?height str(?width) AS ?width str(?length) AS ?length
WHERE {
nell'esempio ti ho lasciato gli "AS" solo per suggerire che magari puoi rinominare i binding in uscita (a volte è comodo)

Per i duplicati il discorso è un po' più articolato: di fatto ogni "tupla" dei risultati ovviamente è in realtà una rappresentazione lineare di diverse triple, quindi è corretto che per poter dare una rappresentazione tabellare (penso a quelle html) vengano righe quasi interamente identiche, che differiscono soltanto per i valori relativi ad una tripla.
Tanto per capirci: tu in che formato li vorresti ottenere, idealmente?



--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Spaghetti Open Data" di Google Gruppi.
Per annullare l'iscrizione a questo argomento, visita https://groups.google.com/d/topic/spaghettiopendata/wBLq0Jpjdmg/unsubscribe?hl=it.
Per annullare l'iscrizione a questo gruppo e a tutti i suoi argomenti, invia un'email a spaghettiopend...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/spaghettiopendata?hl=it.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.
 
 

Reply all
Reply to author
Forward
0 new messages