@POST
	@Consumes({ MediaType.APPLICATION_JSON })
	@Produces({ MediaType.APPLICATION_JSON })
	@Path("create")
	public User create(User userDetails) {
		if (userDetails == null)
			throw new ExceptionReporter(new NullPointerException(
					"No 'UserDetails' given."));

		if (userDetails.getNickname() == null
				|| userDetails.getNickname().trim().equals(""))
			throw new ExceptionReporter(new NullPointerException(
					"Nickname needed to create the user."));

		if (userDetails.getEmail() == null
				|| userDetails.getEmail().trim().equals(""))
			throw new ExceptionReporter(new NullPointerException(
					"Email needed to create the user."));

		if (userDetails.getPassword() == null
				|| userDetails.getPassword().trim().equals(""))
			throw new ExceptionReporter(new NullPointerException(
					"Password needed to create the user."));

		String userUrl = "";
		String query = UserQueries.getExistsQuery(userDetails.getEmail());
		Query sparqlQuery = new Query(query);
		if (!userEndpoint.ask(sparqlQuery)) {
			userUrl = QueryReader.getString("UserQueries.baseNS")
					+ UUID.randomUUID().toString();
			query = UserQueries.getCreateUserUpdate(userUrl.trim(), userDetails
					.getNickname().trim(), userDetails.getEmail().trim(),
					userDetails.getPassword().trim());
			sparqlQuery = new Query(query);
			userEndpoint.update(sparqlQuery);

			User newUser = new User();
			newUser.setUserUri(userUrl);
			newUser.setExists(!userUrl.equals(""));
			return newUser;
		} else
			return get(userDetails.getEmail(), "", "");
	}