I would recommend allowing "reviews" to be associated with multiple parents (book, user), and then have a canonical resource for review as follows:
Book /books/{book-id}
{ "id":1, "title":"The Empire", "description":"Description about the book", "serial":1234 }
Book reviews /books/{book-id}/reviews
{[ { "id":1, "userId":user1, "bookId":1, "rating":5.5, "note":"I liked the book but it was too long.", "url":http://server/reviews/1 }, { "id":2, "userId":user2, "bookId":1, "rating":1, "note":"boo, i didn't like it!", "url":http://server/reviews/2 } ]}
User reviews /users/{user-id}/reviews
{[ { "id":1, "userId":user1, "bookId":1, "rating":5.5, "note":"I liked the book but it was too long.", "url":http://server/reviews/1 }, { "id":2, "userId":user2, "bookId":1, "rating":1, "note":"boo, i didn't like it!", "url":http://server/reviews/2 }, { "id":5, "userId":user1, "bookId":3, "rating":2, "note":"I like to read", "url":http://server/reviews/5 } ]}
Canonical review resource /reviews/{review-id}
{[ { "id":1, "userId":user1, "bookId":1, "rating":5.5, "note":"I liked the book but it was too long.", "url":http://server/reviews/1 }, { "id":5, "userId":user1, "bookId":3, "rating":2, "note":"I like to read", "url":http://server/reviews/5 } ]}
Creating a new review can be a message to the user / reviews, books / reviews or resource reviews when implementing the server for these default POST services for the user ID or book ID.
The url link implementation has some options, such as atom: link.
Also, do not consider the raw identifier of books, users, and customer / consumer reviews of these services and instead expose the identifier as a URI.