2011-07-20 Notes on Release 3.1.0 =============================================================================== (1) GUI The Java based GUI was extended to support tiled maps from OSM or google as backgrounds. Brief explanations on tiled map backgrounds are available from the Secondo User Manual ($SECONDO_BUILD_DIR/Documents/SecondoManual.pdf), Section 5.3.5. The Java interface to Secondo was separated from the remainder of the GUI to be able to develop own applications using Secondo. ------------------------------------------------------------------------------- (2) Secondo Kernel: Framework New control structures (conditionals, loops, sequences) have been added to the Secondo interface, allowing for sophisticated scripting. See Secondo User Manual ($SECONDO_BUILD_DIR/Documents/SecondoManual.pdf), Section 3. Function database objects returning stream results are handled correctly now. Several more bug fixes improve the stability of the system. ------------------------------------------------------------------------------- (3) Secondo Kernel: Algebra Modules New Algebra: SpatialJoinAlgebra This algebra provides a new implementation of a spatialjoin operator. This algorithm was assigned the operator name 'spatialjoin'. The old spatialjoin operator implementation (RTree PlugJoin) has been renamed to spatialjoin0. Within the previously released algebras, version 3.1.0 brings some new operators. Some operators and types have been renamed in order to avoid confusion and to harmonize the naming schema. A few operators have been removed, because they were actually doublets. StandardAlgebra: ================ Added operators: abs: real -> real, int -> int arccos: {int | real} -> real arcsin: {int | real} -> real arctan: {int | real} -> real arctan2: real x real -> real const_e: -> real const_pi: -> real cos: {int | real} -> real deg2rad: {int | real} -> real dms2deg: {int|real} x {int|real} [x {int|real}] [x bool] -> real logB: {int | real} x {int | real} -> real pow: {int | real} x {int | real} -> real rad2deg: {int | real} -> real sin: {int | real} -> real tan: {int | real} -> real Comment: - arithmetic and trigonometric functions and constants have been added FTextAlgebra: ============= Added operators: isValidID: string [ x bool] -> bool attr2text: DATA -> text charToText: int -> text sendtextstreamTCP: stream({string|text}) x {string|text} x {string|text} x {int|real} x {int|real} -> stream(tuple((Ok bool)(Msg text)(ErrMsg string))), 2<=n<=4 tokenize: text x string -> stream(text) strequal: {string, text} x {string, text} x bool -> bool checkOperatorTypeMap2: string x {text | string} -> text checkOperatorTypeMap: string x ANY -> text sys_getAlgebraId: {string|text} -> int sys_getAlgebraName: int -> string sys_getMatchingOperators: int x ANY -> R, {string|text} x int -> R, where R = stream(tuple((OperatorName:string,OperatorId:int,AlgebraName:string,AlgebraId:int,ResultType:text, Signature:text,Syntax:text,Meaning:text,Example:text,Remark:text))) matchingOperators: ANY -> stream(tuple((OperatorName:string,OperatorId:int,AlgebraName:string,AlgebraId:int, ResultType:text,Signature:text,Syntax:text,Meaning:text,Example:text,Remark:text))) matchingOperatorNames: ANY -> stream(string) getDatabaseName: -> string Bugfixes: - keywords Renamed operators: - toobject ==> toObject Comments: - getDatabaseName returns the name of the currrently open database - sys_getMatchingOperators / matchingOperators / matchingOperatorNames allow to find operators matching a given parameter signature. - isValidID checks whether a string represents a valid (and free to use) identifier for a database object or an attribute name. ImExAlgebra: ============ Added operators: getPID: -> int getPageSize: -> int getSecondoVersion: -> int getSecondoPlatform: -> string getBDBVersion: -> int dbimport2: text -> stream (tuple(...)) shpimport2: text -> stream(T), T in {point, points, line, region} nmeaimport: text x string -> streamtuple( TL )) nmeaimport_line: text x string -> stream(tuple( TL )) get_lines: {text,string} -> stream(text) Bugfixes - The file length value in shpexport has been corrected. Changed operators: - shpexport: stream(X) x string -> stream(X), stream(tuple(...))) x string x bool x bool -> stream(tuple...) Comments: - shpexport allows to create the corresponding shape index file now. This will tackle problems importing data generated by Secondo. - dbimport2 / shpimport2 allow to import without prior creation of the template relation as required by dbimport / shpimport - get_lines allows to read a file line by line. On Linux systems, you can also read from arbitrary device files, e.g. to import position history or stream data from a GPS device. - nmeaimport / nmeaimport_line allow for reading the most important NMEA sentences from texts GraphAlgebra: ============= Renamed operators: key ==> get_key pos ==> get_pos source ==> get_source target ==> get_target cost ==> get_cost Comment: - The operators have been renamed to avoid conflicts with typical attribute names SpatialAlgebra: =============== Added Type: geoid Added Operators: create_triangle: point x point x point -> region heading2direction: real -> real direction2heading: real -> real midpointBetween: point x point [x geoid] [x real] -> point point2string: point [x geoid] -> string create_geoid: string [ x {real|int} x {real|int} -> geoid getFlattening: geoid -> real getRadius: geoid -> real distanceOrthodrome: point x point [x geoid] -> real reverseGk: t -> t, t in {point, points, line, region} Changed Operators: bbox: point||points||line||region||sline) [x geoid]-> rect size: {line|sline} x geoid -> real direction: point x point [x geoid] -> real heading: point x point [x geoid] -> real size: line|sline|region} -> real, {line|sline} x geoid -> real Comments: - Datatype geoid was added to represent different geoids used for spherical geometry calculations with geographic coordinates - The most used geoids have been predefined. See operator create_geoid. - Many operators now have an optional geoid-parameter. Using it will make the operator work with geographic (LON/LAT) rather than planar (X/Y) coordinates and spherical rather than euclidean geometry. - The meaning of 'heading' and 'direction' has been clarified normalized throughout Secondo: From now on, 'heading' means navigational angles 0 rect3, mpoint [x geoid] -> rect3, ipoint [x geoid] -> rect3, instant -> rect3, periods -> rect3 bbox2d: upoint [x geoid] -> rect, mpoint [x geoid] -> rect, ipoint [x geoid] -> rect bboxold: upoint [x geoid] -> rect3, mpoint [x geoid] -> rect3, ipoint [x geoid] -> rect3, rT -> rT length: mpoint [x string] -> real avg_speed: mpoint [ x string ] -> real delay: mpoint x mpoint [x geoid] -> mreal distancetraversed: mpoint [x geoid] -> mreal turns: mpoint x real x real [x duration] [x bool] [x geoid] -> stream(tuple(TimeOld instant, TimeNew instant, PosOld point, PosNew point, HeadingOld real, HeadingNew real, HeadingDiff real)) Comments: - various operators can now deal with geographic coordinates when provided with a geoid parameter. TemporalLiftedAlgebra: ====================== Added operators: +, -, *, /: {mreal, mint, real, int} x {mreal, mint, real,int} -> {mreal, mint} TemporalExtAlgebra: =================== Changed operators: speed_new: mpoint [ x geoid ] -> mreal direction: mpoint [ x geoid [ x real ] ] -> mreal heading: mpoint [ x geoid [ x real ] ] -> mreal Comments: - Many operators now have an optional geoid-parameter. Using it will make the operator work with geographic (LON/LAT) rather than planar (X/Y) coordinates and spherical rather than euclidean geometry. - The meaning of 'heading' and 'direction' has been clarified normalized throughout Secondo: From now on, 'heading' means navigational angles 0 mregion intimeregion ==> iregion Comments: - Types 'movingregion' and 'intimeregion' have been renamed in order to achieve a general naming schema for moving and intime types. RecordAlgebra: ============= Changed Operators and types: - record now allows for arbitrary valid identifiers as fields names, they are not required to start with a capital letter any more. HistogramAlgebra: ================= Removed operators: is_undefined: Comments: - In order to achieve a uniform handling of definedness, the operator is_undefined has been removed. Use the generic isdefined: DATA -> bool instead. DateTimeAlgebra: ================ Comments: - The toString(true) function of DateTime allows to export timestamps in SQL92 formatting (using a blanc as separator between date and time). This is now used by operator toCSVtext: instant -> string - The fromString function of DateTime allows to import timestamps in SQL92 formatting (using a blanc as separator between date and time). ------------------------------------------------------------------------------- (4) Optimizer The standard syntax translation for Secondo operators is now deprecated. You must explicitly specify the syntax for each operator in file opsyntax.pl now. Also, the notation of the syntax and the generic translation rules in plan_to_atom/2 have been changed. Please refer to Section 8.5 in the Secondo User Manual and Sections 7.2.2-7.2.3 in the Secondo Programmer's Guide ($SECONDO_BUILD_DIR/Documents/ProgrammersGuide.pdf). On SQL-level, in user defined aggregations, the default-value can now be passed as a constant value expression, not as a string literal anymore. Constants can now also be expressed using terms like value_expr(,) where is a Prolog term for the type descriptor and is the nested list representation of the constant value, both using round parantheses and commas internally. Regards Christian Düntgen