XML, JSON e RDF

Grazie alle funzioni native, l’elaborazione di XML (eXtensible Markup Language) e JSON (JavaScript Object Notation) non costituisce più un problema. Anche se JSON in fondo è pensato per applicazioni Ajax , preferisco il formato anche in PHP quando voglio e posso evitare l’overhead dei dati XML.

Il Geonames-Webservices è un buon punto di partenza per qualche esempio perché presenta le funzioni del servizio che sono in grado di fornire i dati in almeno questi due formati. In più le funzioni di Geonames sono probabilmente molto interessanti per tanti Webmaster. Chi è interessato a richieste diverse dovrebbe consultare la documentazione del Webservice.

Per una richiesta generica con la query london basta l’URL seguente:

http://ws.geonames.org/search?q=london&maxRows=10

Il parametro maxRows controlla il numero dei risultati. Per definizione il risultato viene fornito in XML. Se si vuole il formato JSON si deve aggiungere il parametro type:

http://ws.geonames.org/search?q=london&maxRows=10&type=json

Dando un’occhiata più specifica alla lista dei Geonames-Services si scopre che si può richiedere anche il formato RDF (Resource Description Framework). Chiunque voglia entrare nel mondo del Semantic Web dovrebbe dedicarsi a prendere confidenza con questo formato. Se non avete ancora idea di che cosa si tratti, un buon punto di partenza è il sito del W3C.

Le funzioni ovvero i metodi SimpleXML di PHP falliscono con RDF. Anche se il formato viene chiamato RDF/XML la classe SimpleXML presenta problemi con i due punti negli XML-Entities. Le soluzioni però ci sono. Personalmente preferisco Arc. Il pacchetto va semplicemente caricato e messo a disposizione sul server.

Come elaborare con PHP tutti e tre i formati descritti, è illustrato dal code seguente:

<?php
$url = 'http://ws.geonames.org/search?q=london&maxRows=10&username=USERNAME';
$xml = simplexml_load_file( $url );
echo "Ausgabe des SimpleXML-Objects:\n";
print_r( $xml );
$json = file_get_contents( $url . '&type=json' );
$arr = json_decode( $json );
echo "Ausgabe der JSON-Daten als Array:\n";
print_r( $arr );
/**
* https://github.com/semsol/arc2.git
*/
include_once 'arc2/ARC2.php';
$parser = ARC2::getRDFParser();
$parser->parse( $url . '&type=rdf' );
$triples = $parser->getTriples();
echo "Ausgabe der RDF-Daten als Array:\n";
print_r( $triples );

Chi è interessato all’output delle richieste può vedere anche lo script in azione.

Have fun!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *