library(ODataQuery)
Here I’ll show some examples to use this package
ODataQuery$new("https://services.odata.org/V4/TripPinServiceRW")
service <-$all()
service#> name kind
#> 1 Photos EntitySet
#> 2 People EntitySet
#> 3 Airlines EntitySet
#> 4 Airports EntitySet
#> 5 Me Singleton
#> 6 GetNearestAirport FunctionImport
#> url
#> 1 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/Photos
#> 2 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/People
#> 3 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/Airlines
#> 4 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/Airports
#> 5 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/Me
#> 6 http://services.odata.org/V4/(S(tbiq44cis1sraps0oabu0vat))/TripPinServiceRW/GetNearestAirport
service$path("People")
people_entity <-
# Get first page
$retrieve(count=TRUE)
people_entity#> $`@odata.count`
#> [1] 20
#>
#> $`@odata.nextLink`
#> [1] "https://services.odata.org/V4/(S(bdudzig0mg0k43vo4f4uxfoa))/TripPinServiceRW/People?%24count=true&%24skiptoken=8"
#>
#> $value
#> UserName FirstName LastName Emails
#> 1 russellwhyte Russell Whyte Russell@example.com, Russell@contoso.com
#> 2 scottketchum Scott Ketchum Scott@example.com
#> 3 ronaldmundy Ronald Mundy Ronald@example.com, Ronald@contoso.com
#> 4 javieralfred Javier Alfred Javier@example.com, Javier@contoso.com
#> 5 willieashmore Willie Ashmore Willie@example.com, Willie@contoso.com
#> 6 vincentcalabrese Vincent Calabrese Vincent@example.com, Vincent@contoso.com
#> 7 clydeguess Clyde Guess Clyde@example.com
#> 8 keithpinckney Keith Pinckney Keith@example.com, Keith@contoso.com
#> AddressInfo Gender Concurrency
#> 1 187 Suffolk Ln., United States, Boise, ID Male 6.376092e+17
#> 2 2817 Milton Dr., United States, Albuquerque, NM Male 6.376092e+17
#> 3 NULL Male 6.376092e+17
#> 4 89 Jefferson Way Suite 2, United States, Portland, WA Male 6.376092e+17
#> 5 NULL Male 6.376092e+17
#> 6 55 Grizzly Peak Rd., United States, Butte, MT Male 6.376092e+17
#> 7 NULL Male 6.376092e+17
#> 8 NULL Male 6.376092e+17
# Get all pages
$select("UserName", "FirstName", "LastName")$all()
people_entity#> UserName FirstName LastName
#> 1 russellwhyte Russell Whyte
#> 2 scottketchum Scott Ketchum
#> 3 ronaldmundy Ronald Mundy
#> 4 javieralfred Javier Alfred
#> 5 willieashmore Willie Ashmore
#> 6 vincentcalabrese Vincent Calabrese
#> 7 clydeguess Clyde Guess
#> 8 keithpinckney Keith Pinckney
#> 9 marshallgaray Marshall Garay
#> 10 ryantheriault Ryan Theriault
#> 11 elainestewart Elaine Stewart
#> 12 salliesampson Sallie Sampson
#> 13 jonirosales Joni Rosales
#> 14 georginabarlow Georgina Barlow
#> 15 angelhuffman Angel Huffman
#> 16 laurelosborn Laurel Osborn
#> 17 sandyosborn Sandy Osborn
#> 18 ursulabright Ursula Bright
#> 19 genevievereeves Genevieve Reeves
#> 20 kristakemp Krista Kemp
people_entity$get("russellwhyte")
russellwhyte <- people_entity$top(1)$one()
first_person <-head(first_person)
#> $UserName
#> [1] "russellwhyte"
#>
#> $FirstName
#> [1] "Russell"
#>
#> $LastName
#> [1] "Whyte"
#>
#> $Emails
#> [1] "Russell@example.com" "Russell@contoso.com"
#>
#> $AddressInfo
#> Address City.CountryRegion City.Name City.Region
#> 1 187 Suffolk Ln. United States Boise ID
#>
#> $Gender
#> [1] "Male"
russellwhyte$path("Friends")
russellwhyte_friends <-$all()
russellwhyte_friends#> UserName FirstName LastName Emails
#> 1 scottketchum Scott Ketchum Scott@example.com
#> 2 ronaldmundy Ronald Mundy Ronald@example.com, Ronald@contoso.com
#> 3 javieralfred Javier Alfred Javier@example.com, Javier@contoso.com
#> 4 angelhuffman Angel Huffman Angel@example.com
#> AddressInfo Gender Concurrency
#> 1 2817 Milton Dr., United States, Albuquerque, NM Male 6.376092e+17
#> 2 NULL Male 6.376092e+17
#> 3 89 Jefferson Way Suite 2, United States, Portland, WA Male 6.376092e+17
#> 4 NULL Female 6.376092e+17
service$func('GetNearestAirport')
get_nearest_airport <-get_nearest_airport(lat = 33, lon = -118)
#> $IcaoCode
#> [1] "KLAX"
#>
#> $Name
#> [1] "Los Angeles International Airport"
#>
#> $IataCode
#> [1] "LAX"
#>
#> $Location
#> $Location$Address
#> [1] "1 World Way, Los Angeles, CA, 90045"
#>
#> $Location$City
#> $Location$City$CountryRegion
#> [1] "United States"
#>
#> $Location$City$Name
#> [1] "Los Angeles"
#>
#> $Location$City$Region
#> [1] "California"
#>
#>
#> $Location$Loc
#> $Location$Loc$type
#> [1] "Point"
#>
#> $Location$Loc$coordinates
#> [1] -118.4081 33.9425
#>
#> $Location$Loc$crs
#> $Location$Loc$crs$type
#> [1] "name"
#>
#> $Location$Loc$crs$properties
#> $Location$Loc$crs$properties$name
#> [1] "EPSG:4326"
people_entity$
people_query <- top(5)$
select('FirstName', 'LastName')$
filter(Concurrency.gt = 500)$
expand('Friends($count=true)')$
orderby('LastName')
$all()
people_query#> FirstName LastName Friends@odata.count
#> 1 Javier Alfred 3
#> 2 Willie Ashmore 2
#> 3 Georgina Barlow 1
#> 4 Ursula Bright 1
#> 5 Vincent Calabrese 2
#> Friends
#> 1 willieashmore, vincentcalabrese, georginabarlow, Willie, Vincent, Georgina, Ashmore, Calabrese, Barlow, Willie@example.com, Willie@contoso.com, Vincent@example.com, Vincent@contoso.com, Georgina@example.com, Georgina@contoso.com, 55 Grizzly Peak Rd., United States, Butte, MT, Male, Male, Female, 637609246868923904, 637609246868923904, 637609246868923904
#> 2 javieralfred, vincentcalabrese, Javier, Vincent, Alfred, Calabrese, Javier@example.com, Javier@contoso.com, Vincent@example.com, Vincent@contoso.com, 89 Jefferson Way Suite 2, United States, Portland, WA, 55 Grizzly Peak Rd., United States, Butte, MT, Male, Male, 637609246868923904, 637609246868923904
#> 3 javieralfred, Javier, Alfred, Javier@example.com, Javier@contoso.com, 89 Jefferson Way Suite 2, United States, Portland, WA, Male, 637609246868923904
#> 4 keithpinckney, Keith, Pinckney, Keith@example.com, Keith@contoso.com, Male, 637609246868923904
#> 5 javieralfred, willieashmore, Javier, Willie, Alfred, Ashmore, Javier@example.com, Javier@contoso.com, Willie@example.com, Willie@contoso.com, 89 Jefferson Way Suite 2, United States, Portland, WA, Male, Male, 637609246868923904, 637609246868923904
ODataQuery$new("http://beta-odata4.cbs.nl/")
opendata_service <- opendata_service$path("CBS", "81589NED", Observations")
entity_81589NED <-dataset_81589NED <- entity_81589NED$all()
Connecting with older OData v2 works, but some features have been changed.
ODataQuery$new("https://services.odata.org/V2/Northwind/Northwind.svc/")
northwind_service <- northwind_service$path("Customers")
customer_entity <-$
customer_entity select("CompanyName", "Address", "Phone")$
filter(Country.eq = "Germany", City.eq = "Berlin")
So far, I haven’t been able to figure out how their data model works, but at least we can connect to it.
ODataQuery$new("https://denhaag.incijfers.nl/jiveservices/odata/")
denhaag_service <-$path('DataSources') denhaag_service