@GET
	@Path("get")
	public Observation get(@QueryParam("observationUri") String observationUri) {
		Observation obs = new Observation(observationUri);
		List<PropertyValue> additionalProperties = new ArrayList<PropertyValue>();
		List<String> additionalTypes = new ArrayList<String>();

		String queryStr = ObservationQueries.getPredObj(observationUri);
		Query query = new Query(queryStr);
		ResultSet rs = this.observationEndpoint.query(query);
		for (QuerySolution qs = rs.next(); rs.hasNext(); qs = rs.next()) {
			String p = Util.getNodeValue(qs.get("p"));
			if ("http://purl.oclc.org/NET/ssnx/ssn#featureOfInterest".equals(p)) {
				FeatureOfInterest foi = new FeatureOfInterest(
						Util.getNodeValue(qs.get("o")));
				obs.setFeatureOfInterest(foi);
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#observationResult"
					.equals(p)) {
				SensorOutput so = new SensorOutput(Util.getNodeValue(qs
						.get("o")));
				obs.setObservationResult(so);
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#observationResultTime"
					.equals(p)) {
				obs.setObservationResultTime(Util.getNodeLongValue(qs.get("o")));
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#observationSamplingTime"
					.equals(p)) {
				obs.setObservationSamplingTime(Util.getNodeLongValue(qs
						.get("o")));
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#observedBy".equals(p)) {
				Sensor s = new Sensor(Util.getNodeValue(qs.get("o")));
				obs.setObservedBy(s);
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#observedProperty"
					.equals(p)) {
				Property prop = new Property(Util.getNodeValue(qs.get("o")));
				obs.setObservedProperty(prop);
			} else if ("http://purl.oclc.org/NET/ssnx/ssn#sensingMethodUsed"
					.equals(p)) {
				Sensing s = new Sensing(Util.getNodeValue(qs.get("o")));
				obs.setSensingMethodUsed(s);
			} else if ("http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
					.equals(p)) {
				additionalTypes.add(Util.getNodeValue(qs.get("o")));
			} else {
				additionalProperties
						.add(uk.ac.dotrural.irp.ecosystem.sensor.Util
								.getPropertyValue(p, qs.get("o")));
			}
		}

		obs.setAdditionalTypes(additionalTypes);
		obs.setAdditionalProperties(additionalProperties);
		return obs;
	}