- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Mon, 29 Dec 2014 17:05:37 +0100
- To: <public-hydra@w3.org>, <public-linked-json@w3.org>
Hi John,
On Sunday, December 28, 2014 12:51 PM, John Walker wrote:
> Hi All,
>
> In my spare time I've been working on a JSON-LD wrapper for BreweryDB
> and have reached what I consider to be a demo-able state.
Cool, thanks for sharing it.
> Basically I have a pretty simple (and hacky) PHP script that
> manipulates the JSON repsonses from the BrewerDB API into JSON-LD. It
> doesn't provide full coveage of the API yet and needs a bit of
> tidying, I've put it in a Gist if anyone cares to take a look [2]
> (bear in mind this is the first thing I've done in PHP). Curently it
> only works fully with the beer endpoints [3] from the original API.
Since you manipulate the responsens anyway, I would suggest to get rid of those top-level status and message properties (at least in case of success). The HTTP status code (200) should be enough to k now that everything went fine.
> I'm trying to figure out how to handle all the variations in the JSON
> structure without using a load of repetition, nested if-then-else and
> foreach loops, so if anyone with some PHP knowhow can suggest a better
> method, I'm all ears.
You could either try to use templates instead of hand-coding this or replace most of the if (array_key_exists("XX",$item)) blocks with a loop and some simple configuration (an associative array should suffice).
> Also would like to know how I can get rid of index.php out of the following
> URIs.
If you are using Apache and have mod_rewrite enabled, the following lines in a .htaccess file should do the trick
<IfModule mod_rewrite.c>
RewriteEngine On
# Serve existing files as before
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule .? - [L]
# Rewrite all other queries to index.php
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
> Some examples:
>
> A beer:
> http://brewerydb.semaku.com/index.php/beer/9JFYsa
>
> A beer with it's breweries:
> http://brewerydb.semaku.com/index.php/beer/9JFYsa?withBreweries=Y
>
> A paginated collection of beers of 4% ABV:
> http://brewerydb.semaku.com/index.php/beers?abv=4
>
> These support conneg (to some extent), so you'll probably get plain old
> JSON if you open them in your browser.
> If you put them into the JSON-LD playground, you should get the JSON-LD e.g.:
> http://json-ld.org/playground/#startTab=tab-nquads&json-ld=http%3A%2F%2Fbrewerydb.semaku.com%2Findex.php%2Fbeer%2F9JFYsa
>
> I'm also using a bit of Hydra, for example the /beers list endpoint is
> a hydra:PagedCollection and I added the links to first, last, previous
> and next pages. I am also going to extend the vocabulary to use more
> Hydra to, for example, indicate which properties are a hydra:Link and
> perhaps detail out some IRI templates. However as this is just a
> learning exercise I probably will not cover all possibilites offered
> by the original API, but hopefully enough to convince the BrweryDB
> guys to implement it themselves.
Please keep us posted on your progress and the problems you encounter.
Cheers,
Markus
> Comments welcome!
>
> p.s. this is using my API key right now, so might exceed my limits if
> too many requests are made (3.5K per day I think).
>
> [1] http://www.brewerydb.com/
> [2] https://gist.github.com/jaw111/46209e853f83d041a6dd
> [3] http://www.brewerydb.com/developers/docs-endpoint/beer_index
--
Markus Lanthaler
@markuslanthaler
Received on Monday, 29 December 2014 16:06:19 UTC