A computer implemented method of providing a collaborative geospatial data repository for mapping and analyzing geospatial data provided by different users in different formats, comprising: accepting geospatial data from at least one user; reading the geospatial data from the at least one user in at least one format used by the at least one user and converting it to a different format to create a data object; serialising the data object and storing the serialised data object in an object store; generating a data object reference to identify the serialized data object in the data object store and storing the data object reference in a platform database together with searchable metadata describing attributes of the object; linking the geospatial data to the at least one user; wherein geospatial data is accepted from plural users in different formats used by those users and converted to a common format when creating said data objects, in response to user input to create a map of selected geospatial data, extracting the geospatial data for plural data objects by looking up the serialised data objects from the data object store by way of their data object references and then once found reconstituting the serialised data objects; and, creating a map comprising the geospatial data for display to the user; characterised by creating a semantic relationship between the data objects based on those data objects being placed on the same map by the user and then storing the relationship as metadata in the platform database for those data objects; wherein the geospatial data is able to be searched by a user query by reference to the metadata in the platform database, wherein at least one object is returned in the search on the basis of its attributes matching the user query and at least one other data object is recommended to the user on the basis that it has a semantic relationship to the at least one data object returned in the search, wherein the data object reference is a hash and the data object and its assigned hash are placed in a hash table within the object store, wherein the hash table is kept in memory as a priority queue of a size set according to a parameter based on the amount of available memory and wherein data objects that are pushed down the priority queue past the parameter are moved out of memory onto a flat file kept on a disk such that more frequently used objects are found in memory and less frequently used objects are found on the disk, the step of looking up the serialised data objects comprising looking up the hash in the priority queue and if not found looking up the hash in the flat file on the disk. accepting geospatial data from at least one user; reading the geospatial data from the at least one user in at least one format used by the at least one user and converting it to a different format to create a data object; serialising the data object and storing the serialised data object in an object store; generating a data object reference to identify the serialized data object in the data object store and storing the data object reference in a platform database together with searchable metadata describing attributes of the object; linking the geospatial data to the at least one user; wherein geospatial data is accepted from plural users in different formats used by those users and converted to a common format when creating said data objects, in response to user input to create a map of selected geospatial data, extracting the geospatial data for plural data objects by looking up the serialised data objects from the data object store by way of their data object references and then once found reconstituting the serialised data objects; and, creating a map comprising the geospatial data for display to the user; characterised by creating a semantic relationship between the data objects based on those data objects being placed on the same map by the user and then storing the relationship as metadata in the platform database for those data objects; wherein the geospatial data is able to be searched by a user query by reference to the metadata in the platform database, wherein at least one object is returned in the search on the basis of its attributes matching the user query and at least one other data object is recommended to the user on the basis that it has a semantic relationship to the at least one data object returned in the search, wherein the data object reference is a hash and the data object and its assigned hash are placed in a hash table within the object store, wherein the hash table is kept in memory as a priority queue of a size set according to a parameter based on the amount of available memory and wherein data objects that are pushed down the priority queue past the parameter are moved out of memory onto a flat file kept on a disk such that more frequently used objects are found in memory and less frequently used objects are found on the disk, the step of looking up the serialised data objects comprising looking up the hash in the priority queue and if not found looking up the hash in the flat file on the disk.