Several months after publishing the SOS 4.x developments, the Sensor Web community is pleased to announce the
52°North SOS 4.1 Release
A downloadable zip archive of the release contains the sources, as well as the binaries. Release requirements, installation and configuration information are documented in the 52°North wiki.
Many thanks to all 52°North SOS contributors for their enhancements and improvements, but also to all users for their feedback!
Core features and improvements
We have implemented the following additional features (NEW) and improvements.
- Binding selection by content type at /sos and /service
- Binding a specific endpoint like /pox and /soap is no longer necessary but still supported. More infomation can be found in the SOS Wiki.
 
 - Microsoft SQL Server support (NEW)
- Requirements and installation instructions are documented in the Wiki.
 
 - GetObservation with multiple temporal filters and different value references (NEW).
- How the filters and value references are used is described in the SOS Wiki.
 
 - Streaming (NEW)
- The SOS provides two types of streaming. For more information, please visit the SOS Wiki.
 - XML response streaming
- XML response streaming means that no DOM tree is created, but the data is written directly into the output stream.
 - The 52°North SOS implements a hybrid solution which is a combination of streaming and DOM tree creation with XmlBeans. For example, the SOAP envelope or the response document envelope are streaming encoded while the content, e.g. OM_Observation in a GetObservationResponse, is encoded using of XMLBeans (default encoding implementation).
 - This allows larger response documents.
 - There is less memory usage compared to the DOM tree solution.
 
 - Streaming datasource for GetObservation (Hibernate datasource)
- This is only available for the GetObservation operation.
 - Unique static observation metadata (e.g. procedure, observerProperty, FoI) are queried for the resulting observations from the database.
 - The variable observation values (e.g. measured value, time stamp) are queried from the database in the encoders.
 - There are two datasource streaming solutions:
- Scrollable: Uses Hibernate ScrollableResult
 - Chunk: The SOS queries a configurable number of values, processes these values and then queries the next values chunk.
 
 - There is less memory usage.
 - In combination with an XML response, the streaming has very low latency.
 
 - A detailed description about the streaming implementations of the 52°North SOS and the performance differences compared to the default implementation will be described in a future blog post.
 
 - Adapted GetDataAvailability to OGC Discussion paper
- The OGC Sensor Observation Service 2.0 Hydrology Profile Discussion paper was published in April 2014 and contains, inter alia, the definition of the GetDataAvailability operation requests and responses.
 - The XML schema definition is available here: http://waterml2.org/schemas/gda/1.0/gda.xsd
 
 - Reduced number of Maven profiles
- Before the admin interface existed, Maven profiles were used to build the SOS with the required bindings, encodings, and operations. Due to the possibility to de-/activate the bindings, encodings, and operations via the admin interface, most of the Maven profiles are now obsolete. Now the mvn package command build includes all SOS modules.
 - Exception: Two profiles still exist, the oracle and sqlserver profiles, due to license restrictions with the required JDBC driver.
 
 - Improved SQL exception handling
- Instead of throwing only the topmost exception, a composite exception is created which contains all Throwables as a single exception.
 - All exceptions now contain sufficient information if a problem arises,  e.g. if the observation already exists.
 
 - Changed samplingGeometry handling (SOS 2.0 Spatial Filtering Profile)
- Instead of using a separate table, a geometry column was added to the observation table to store the samplingGeometry.
 - If samplingGeometries are contained in the database, GetObservation performance improves because no additional join (spatial filter) is necessary and the samplingGeometries must not be queried separately.
 - The SOS still supports the old concept with the separate table, but offers scripts to update the database model.
 
 - Requirement for Java 7 and Java 8 support
- The SOS now requires Java 7. There has been no more public support for Java 6 since April 2013. Using it could lead to security issues.
 - The 52°North SOS now also supports Java 8.
 
 - Asynchronous cache serialization
- This change fixes the issue that insert requests were getting slower when more data is available.
 
 
For further information about the functionality, improvements and fixed issues, please read the RELEASE-NOTES or visit the SOS GitHub issue page and the 52°North SOS 4.x wiki page.
A short outlook on future work
- Integrate work performed in the INSPIRE SOS context
 - Implement support for SensorML 2.0
 - Integration of the RESTful API and the Sensor Web JavaScript client
 - Integration of sos.js for SOS 1.0.0 operations.
 - …
 
Thanks for the hard work! We’re especially looking forward to leveraging the streaming functionality.