Excellent, Alex!

That is exactly what we need to do for Moose and Roassal. Are you using the
GTInspector for developing this? :)

Doru


On Mon, Mar 3, 2014 at 1:33 AM, Alexandre Bergel <[email protected]>wrote:

> A followup from the previous post. Fetching country population and
> charting them using GraphET:
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> | query data diagram |
>
> query := DBPediaSearch new
> setJsonFormat;
> setDebugOn;
> timeout: 3000;
> query: 'SELECT DISTINCT ?name ?population
> WHERE {
> ?country a dbpedia-owl:Country .
> ?country rdfs:label ?name .
> FILTER
> (langMatches(lang(?name), "en"))
> values ?hasPopulation { dbpprop:populationEstimatedbpprop:populationCensus
> }
> OPTIONAL { ?country ?hasPopulation ?population }
> FILTER (isNumeric(?population))
> FILTER NOT EXISTS { ?country dbpedia-owl:dissolutionYear ?yearEnd } {
> ?country dbpprop:iso3166code ?code . }
> UNION { ?country dbpprop:iso31661Alpha ?code . }
> UNION { ?country dbpprop:countryCode ?code . }
> UNION { ?country a yago:MemberStatesOfTheUnitedNations . }}';
> execute.
>
> data := (((NeoJSONReader fromString: query) at:#results) at: #bindings)
> collect: [ :entry | Array with: ( (entry at: #name) at: #value ) with: (
> (entry at: #population) at: #value ) asInteger ].
>
> "Use GraphET to render all this"
> diagram := GETDiagramBuilder new.
> diagram verticalBarDiagram
> models: (data reverseSortedAs: #second);
> y: #second;
> regularAxisAsInteger;
> titleLabel: 'Size of countries';
> yAxisLabel: 'Population'.
> diagram interaction popupText.
>
> diagram open
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
>
> Cheers,
> Alexandre
>
>
> On Mar 2, 2014, at 9:22 PM, Alexandre Bergel <[email protected]>
> wrote:
>
> I've just tried and it works pretty well! Impressive!
>
> Below I describe a small example that fetches some data about the US
> Universities from DBPedia and visualize them using Roassal2.
>
> Pick a fresh 3.0 image.
>
> First, you need to load Hernán work, Sven's NeoJSON, and Roassal 2 (If you
> are using a Moose Image, there is no need to load Roassal2 since it is
> already in):
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Gofer it
>   smalltalkhubUser: 'SvenVanCaekenberghe' project:  'Neo';
>   package:  'ConfigurationOfNeoJSON';
>   load.
> ((Smalltalk at: #ConfigurationOfNeoJSON) load).
>
> Gofer it
>   smalltalkhubUser: 'hernan' project: 'DBPedia';
>   package: 'DBPedia';
>   load.
>
> Gofer it
>   smalltalkhubUser: 'ObjectProfile' project:  'Roassal2';
>   package:  'ConfigurationOfRoassal2';
>   load.
> ((Smalltalk at: #ConfigurationOfRoassal2) loadBleedingEdge).
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> Using Roassal2, I was able to render some data extracted from dbpedia:
>
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> | map locations rawData rawData2 rawData3 |
> map := RTMapBuilder new.
>
> map countries: #('UnitedStates' 'Canada' 'Mexico').
> map color: Color veryVeryLightGray.
>
> rawData := DBPediaSearch universitiesInUS.
> rawData2 := ((NeoJSONReader fromString: rawData) at: #results) at:
> #bindings.
> rawData3 := rawData2 select: [ :d | d keys includesAll: #('label' 'long'
> 'lat') ] thenCollect: [ :d | { (Float readFrom: ((d at: 'long') at:
> 'value')) . (Float readFrom: ((d at: 'lat') at: 'value')) . (d at: 'label'
> ) at: 'value' } ].
>
>
> locations := rawData3.
> locations do: [ :array |
> map cities addCityNamed: array third location: array second @ array first
> ].
> map cities shape size: 8; color: (Color blue alpha: 0.03).
> map cities: (locations collect: #third).
>
> map scale: 2.
>
> map render.
> map view openInWindowSized: 1000 @ 500.
> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>
> This is what you get:
>
> <Screen Shot 2014-03-02 at 9.09.57 PM.png>
>
>
> This is a small example. Naturally, adding popup for locations is trivial
> to add.
>
> I have described this on our Facebook page:
>
> https://www.facebook.com/ObjectProfile/photos/a.341189379300999.82969.340543479365589/596623173757617/?
> type=1&theater
>
> Hernán, since SPARQL is a bit obscure, it would be great if you could add
> some more example, and also, how to parametrize the examples. For example,
> now we can get data for the US, how to modify your example to get them
> for France or Chile?
>
> Cheers,
> Alexandre
>
>
> On Mar 2, 2014, at 3:43 PM, Hernán Morales Durand <
> [email protected]> wrote:
>
> I have uploaded a new configuration so you can query the english Wikipedia
> dataset from Pharo 3 using SPARQL. Some examples follow:
>
> 1) Retrieve in JSON movies from the beautiful Julianne Moore:
>
> | jsonResults |
> jsonResults := DBPediaSearch new
>         setJsonFormat;
>         timeout: 5000;
>         query: 'SELECT DISTINCT ?filmName WHERE {
>   ?film foaf:name ?filmName .
>   ?film dbpedia-owl:starring ?actress .
>   ?actress foaf:name ?name.
>   FILTER(contains(?name, "Julianne"))
>   FILTER(contains(?name, "Moore"))
> }';
>         execute
>
> To actually get only the titles using NeoJSON:
>
> ((((NeoJSONReader fromString: jsonResults) at: #results) at: #bindings)
>     collect: [ : entry | entry at: #filmName ]) collect: [ : movie | movie
> at: #value ]
>
>
> 2) Retrieve in XML which genre plays those crazy Dream Theater guys  :
>
> DBPediaSearch new
>         setXmlFormat;
>         setDebugOn;
>         timeout: 5000;
>         query: 'SELECT DISTINCT ?genreLabel
> WHERE {
>     ?resource dbpprop:genre ?genre.
>     ?resource rdfs:label "Dream Theater"@en.
>     ?genre rdfs:label ?genreLabel
>     FILTER (lang(?genreLabel)="en")
> }
>  LIMIT 100';
>         execute
>
> More examples are available in DBPediaSearch class side. You can install
> it from the Configuration Browser.
> If you want to contribute, just ask me and you will be added as
> contributor.
> Best regards,
>
> Hernán
>
> _______________________________________________
> Pharo-business mailing list
> [email protected]
> http://lists.pharo.org/mailman/listinfo/pharo-business_lists.pharo.org
>
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"

<<inline: Screen Shot 2014-03-02 at 9.30.58 PM.png>>

Reply via email to