[Talk-it] R: Aggiornamento dati ortografia strade
Daniele Forsi
dforsi a gmail.com
Mer 9 Gen 2013 20:35:42 GMT
Il 03 gennaio 2013 00:53, sabas88 ha scritto:
> Il giorno 03 gennaio 2013 00:06, Daniele Forsi <dforsi at gmail.com> ha
> scritto:
>>
>>
>> molto utile grazie
>> c'è modo di evitare ripetizioni come la seguente (in particolare il
>> cognome ripetuto due volte)?
>>
>
> L'avevo notato anche io ma non mi ero posto il problema, però così credo che
> spariscano
>
> SELECT ?name, ?surname, CONCAT( ?name, ' ', ?surname) WHERE {
> ?person a <http://dbpedia.org/ontology/Person> .
> ?person <http://it.dbpedia.org/property/nome> ?name .
> ?person <http://it.dbpedia.org/property/cognome> ?surname .
> ?person <http://it.dbpedia.org/property/nazionalità> "italiana"@it .
> FILTER( isLiteral(?name) AND isLiteral(?surname) AND (!REGEX (?name,
> ?surname) ) )
> }
>
> Ho semplicemente aggiunto una regex che controlla che il cognome non sia nel
> nome (però così elimina possibili Carlo De Carlo o simili).
ho aggiunto di considerare solo le persone decedute:
SELECT ?name, ?surname, CONCAT( Str(?name), ' ', Str(?surname)) WHERE {
?person a <http://dbpedia.org/ontology/Person> .
?person <http://it.dbpedia.org/property/nome> ?name .
?person <http://it.dbpedia.org/property/cognome> ?surname .
?person <http://it.dbpedia.org/property/annomorte> ?annomorte .
FILTER( isLiteral(?name) AND isLiteral(?surname) AND (!REGEX (?name,
?surname) ) AND ?annomorte != '')
}
ho usato Str() perché certi "nomi" in realtà sono numeri e confronto
anno morte con una stringa vuota perché non tutti gli anni sono numeri
c'è però un altro problema che non capisco se è dovuto ai dati o alla
query, in pratica fa il prodotto tra nomi e cognomi di tutti i
template nella pagina (es. della persona e quelli delle fonti citate),
e non sembrano distinguibili nei dati di dbpedia, succede in diversi
casi, l'ho verificato per Fiona May dove nella bibliografia c'è
l'autore Mauro Valeri e nella pagina
http://it.dbpedia.org/page/Fiona_May ci sono 2 cognomi e 3 nomi:
dbpprop-it:cognome
May
Valeri
dbpprop-it:nome
Mauro
Fiona May
Fiona
e se nella tua query aggiungo un vincolo sul cognome:
SELECT ?name, ?surname, CONCAT( Str(?name), ' ', Str(?surname)) WHERE {
?person a <http://dbpedia.org/ontology/Person> .
?person <http://it.dbpedia.org/property/nome> ?name .
?person <http://it.dbpedia.org/property/cognome> ?surname .
?person <http://it.dbpedia.org/property/cognome> "May"@it .
?person <http://it.dbpedia.org/property/nazionalità> "italiana"@it .
FILTER( isLiteral(?name) AND isLiteral(?surname) AND (!REGEX (?name,
?surname) ) )
}
si ottengono 5 "persone":
name surname callret-2
"Mauro"@it "May"@it Mauro May
"Fiona"@it "May"@it Fiona May
"Mauro"@it "Valeri"@it Mauro Valeri
"Fiona May"@it "Valeri"@it Fiona May Valeri
"Fiona"@it "Valeri"@it Fiona Valeri
--
Daniele Forsi
Maggiori informazioni sulla lista
Talk-it