WO2015022449A1 - A method and a device for flowing data between entities - Google Patents

A method and a device for flowing data between entities Download PDF

Info

Publication number
WO2015022449A1
WO2015022449A1 PCT/FI2014/050625 FI2014050625W WO2015022449A1 WO 2015022449 A1 WO2015022449 A1 WO 2015022449A1 FI 2014050625 W FI2014050625 W FI 2014050625W WO 2015022449 A1 WO2015022449 A1 WO 2015022449A1
Authority
WO
WIPO (PCT)
Prior art keywords
entity
data
copied
identity
location
Prior art date
Application number
PCT/FI2014/050625
Other languages
French (fr)
Inventor
Jani VÄÄNÄNEN
Jyri ROSELIUS
Joni LAGERBOM
Risto Kivipuro
Original Assignee
Piceasoft Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FI20135837A external-priority patent/FI20135837A/en
Priority claimed from FI20135836A external-priority patent/FI20135836A/en
Application filed by Piceasoft Oy filed Critical Piceasoft Oy
Publication of WO2015022449A1 publication Critical patent/WO2015022449A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • G06F16/1794Details of file format conversion

Definitions

  • This invention relates to automatic copying of data from an entity to another entity.
  • This invention relates to automatic copying of data from the other entity to further entities. Thereby, a flow of data between different entities is formed.
  • the invention further relates to a device for forming the data flow.
  • the invention further relates to a computer program and a computer program product for forming the data flow.
  • this invention relates to user interfaces in the field of copying data from an entity to another entity.
  • This invention relates to method for pairing two entities in such an environment.
  • This invention relates to automatic copying of data from an entity to another entity.
  • the invention further relates to a computer program and a computer program product for used interfaces.
  • this kind of system does not necessarily recognize duplicates in a reliable manner, whereby the need for data storage is further increased. Furthermore, this scheme imposes quite a lot of data transfer between different devices. Still further, various devices should be connected to the centralized database on regular bases, e.g. during nights. Even if all this could be done, the delay between the generation of data (e.g. taking a picture) with one device, and the corresponding data appearing in another device would be considerable.
  • the purpose of the present invention is to diminish the problems described above.
  • the method for enabling a data flow between the entities, such as devices or virtual devices does not require a centralized database anywhere and the duplicates are more intuitively recognized.
  • Different versions of the same, or at least substantially the same, media i.e. data, such as media files
  • the determination of the presence of duplicates is based on content, instead of e.g. name and/or modification date. Therefore need for data storage is decreased.
  • the delays with the method are much shorter.
  • a conversion of data may be copied instead of the original data, which may further decrease the for data transfer and storage.
  • said detecting using at least one content specific descriptor of the data to be copied the absence of a duplicate from the second entity comprises
  • a device such as a computer arranged to perform the method is also disclosed.
  • a computer program and a computer program product comprising computer program code are disclosed.
  • the program is, when executed on a processor of a computer, arranged to cause the computer to perform the method.
  • a method for pairing two entities such as the source entity and the target entity for the data flow, has been disclosed. In the method
  • a first entity is arranged to send data or to receive data
  • a second entity is, respectively, arranged to receive data or to send data
  • the method comprises
  • the method further comprising, after detecting the pointer at the first location,
  • the method comprises
  • An embodiment comprises - receiving, over an interface, at least an indicator indicating the direction of data flow,
  • the method for pairing entities can be used e.g. as a part of the method for flowing data, such as a part of the user interface for the method.
  • a device such as a computer arranged to perform the method is also disclosed.
  • a computer program and a computer program product comprising computer program code are disclosed. The program is, when executed on a processor of a computer, arranged to cause the computer to perform the method.
  • Figs. 1 a-1 d show some configurations, wherein data flow is enabled between two entities
  • Fig. 1 e show different possibilities of data flow between three entities
  • Fig. 2 shows an example of a configuration database and the records thereof
  • Fig. 3a shows a flow chart for an embodiment for enabling a data flow
  • Fig. 3b shows a flow chart for an embodiment for enabling a data flow
  • Fig. 3c shows a flow chart for an embodiment for enabling a data flow
  • Fig. 4 shows an example of a correspondence table and object pairs thereof
  • Figs. 5a-5c illustrate a method for pairing two entities
  • Figs. 6a-6d show computer interfaces for receiving information on transferable data classes and data flow directions between two entities. Detailed Description of the Embodiments
  • data flow refers to copying data from a first entity to a second entity.
  • the data flow may optionally refer to copying data to a third entity, either from the first entity or the second entity.
  • an entity is arranged to at least receive data, store data, and send data.
  • data flow may be, in addition to being one directional, also two directional (i.e. also from the second entity to the first entity).
  • entity refers to a physical device or a virtual device.
  • physical devices include a computer, a portable memory device, a camera, a video recorder, an audio recorder, a mobile phone, an audio player, a video player, a set-top unit (i.e. a set top box), a viewer for digital images, a GPS- logger, and a navigator.
  • virtual device include a computer network accessible memory storage (e.g. Google drive, Skydrive, Dropbox, Cloud drive), a computer network accessible service (e.g. Flickr, Instagram), or a computer network accessible social network (e.g. Facebook, Twitter).
  • entity may also refer to a combination of a physical and a virtual device. E.g.
  • an entity may be a mobile phone that accesses a computer network accessible memory storage. Examples of such memory storages were given above.
  • other physical devices such as lap top computers, tablet computers, digital media boxes (set-top boxes, cable boxes, set-top units), may be connected to computer network services, whereby transferring data to/from the device might imply also data transfer to/from a computer network service.
  • the data may flow from the first entity to the second entity directly or indirectly.
  • Direct data flow means data flow from the first entity to the second entity without the data being transferred via another entity. Examples include data transfer between a computer and a USB (universal serial bus) memory stick, and data transfer between a mobile phone and a virtual hard drive (such as Skydrive Google drive or Dropbox) connected to the mobile phone via a computer network; typically a wireless computer network.
  • Indirect data flow means data flow from the first entity to the second entity via another entity. Examples include a mobile phone and a USB memory stick, both attached to a computer (whereby the computer becomes a third entity); wherein the data flows from the mobile phone to the memory stick via the computer.
  • Other examples include a digital camera connected to a computer, and the computer being further connected to a service provider, such as Flickr, Facebook, or Instagram, whereby data may flow from the camera to the service provider through the computer.
  • Flow a data flow
  • pictures can be taken e.g. by mobile phones, compact cameras, and professional cameras. Even when having only one camera people have challenges to store the pictures in one place, wherefrom the pictures would be available when needed.
  • Flow concept includes automatic picture transfer to this memory once the camera device or multiple camera devices are connected with it. The same goes for video files and audio files. Digital pictures, digital videos, and digital audio files can be taken e.g.
  • a duplicate of a file may be the conversion thereof or the (unconverted) original file.
  • digital media content distributors such as newspaper publishers
  • the customers of the content distributors should be able to access and consume the content by several types of devices with different capabilities.
  • the data flow solves this problem.
  • the digital media may be downloaded (in some cases even by using the flow) only to one of the multiple devices.
  • This device could typically be a home computer (e.g. a table top, a lap top, or a tablet computer).
  • This device then initiates the data flow (if not initiated before), and under the flow concept, the flow would then convert the content to an accessibly form and transfer the conversion of the content further to the other devices for consumption.
  • the flow concept includes the following aspects:
  • a home computer may be the target of the flow for several different devices, such as cameras and mobile phones, whereby a centralized collection of e.g. all pictures will be automatically generated, by the data flow, to the target.
  • Figure 1 a shows an embodiment, wherein a direct flow between two entities is enabled, in particular from a computer 1 10 (a first entity 1 10) to a device 120 (a second entity 120, such as an USB memory stick 120).
  • the second entity 120 is directly connected to the first entity 1 10.
  • This embodiment can be used, e.g. to make a backup copy of some of the files in the computer to the memory stick.
  • Figure 1 b shows an embodiment, wherein a direct flow between two entities is enabled, in particular from a digital camera 1 10 (a first entity 1 10) to a computer 120 (a second entity 120).
  • the second entity 120 is physically connected to the first entity 1 10 with a wire 1 12. In this embodiment, the pictures in the camera 120 are copied to the computer 1 10.
  • Figure 1 c shows an embodiment, wherein an indirect flow between two entities (devices) is enabled.
  • dataflow from a digital camera 1 10 to a memory stick 120 is enabled.
  • the computer 130 in between the first and the second entity form a third entity 130.
  • Figure 1 d shows an embodiment, wherein an indirect flow between two entities, a physical device 1 10, such as a digital camera 1 10 and a virtual device 120, such as service provider 120, such as Flickr, Google images, Skydrive, Instagram or Facebook, is enabled.
  • the connection 1 12 i.e. the wire 1 12
  • the connection 122 e.g. a wireless computer network 122, enables data transfer from the computer 130 to the second entity 120.
  • the service provider may be a computer of a local network.
  • a table top computer of a local network at home may work as a service provider, whereby, the connection of a first device (e.g. a mobile phone or a camera) to a laptop computer would initiate data flow from the device, via the laptop computer to the table top computer.
  • a configuration database is used.
  • the configuration database comprises at least one record REC(i); wherein i is the index of the record REC.
  • Figure 2 shows schematically a configuration database 300 comprising a first record REC(1 ) 310 and a second record REC(2) 320.
  • a record REC(i) of the configuration database comprises
  • the indicator of direction may indicate either one-way data flow (from the first entity to the second entity), two-way data flow (from the first entity to the second entity and from the second entity to the first entity), or two-way data synchronization (from the first entity to the second entity, from the second entity to the first entity, and the deletion of removed files).
  • the method does not comprise removing any files.
  • an ordered pair of identities of entities as such comprises an indicator for the direction, provided that data always flows from the firstly mentioned device to the secondly mentioned device.
  • the first record REC(1 ) may comprise the pair of identities (ID1 ,ID2), thereby indicating flow from the first entity to the second entity; and another record REC(i) (i>1 ) may comprise the pair of identities (ID2,ID1 ), thereby indicating flow from the second entity to the first entity thereby enabling a two directional data flow.
  • a single record may comprise the identities ID1 and ID2 and an indication (the direction indicator INDd) that data should be copied two-way.
  • the configuration database may comprise an indicator that data removed from the first entity should be removed also from the second entity. Preferably such removal is optional.
  • the first service type indicator indicates the service type at the first entity that enables sending data at the first entity.
  • the second service type indicator indicates the service type at the second entity that enables receiving data at the second entity.
  • the record REC(i) may further comprise information on
  • a storage type (of the first or the second entity), which can be used to find a storage at the first or the second entity
  • an indicator for disabling automatic data flow which, when indicated, disables the data flow from the first entity and/or to the second entity
  • the log is an xml (Extensible Markup Language) object.
  • the record REC(i) may comprise the log or a pointer to a separate log (xml) file.
  • the log may comprise e.g. at least one of
  • the committed changes include information on what data has been copied.
  • the committed changes include the time when the copying was made.
  • the committed changes may include error codes, e.g. when some data could not be copied.
  • the source data might not be accessible all the time.
  • the target entity might not be available for receiving and/or storing data all the time; e.g. a computer network problem may prevent data transfer, of a full storage device may prevent storing data.
  • An error code indicative of normal operation may also be stored.
  • the committed changes include information on removed data. As will be discussed, in some cases the Flow is configured also to remove some files (i.e. data).
  • the committed changes can include information indicative of the removed data, such as the name and/or location of a file that has been removed.
  • the log file may include the identities of the first entity and the second entity, in particular, if the same log file is used for all records REC(i) of the configuration database. More typically, the log is included in the record (310, 320) of the configuration database 300 itself, whereby the record also includes the identities of the entities.
  • the configuration database may further comprise e.g. information on the class of data that should flow between the devices.
  • data class will later be referred to as "transferable" data class.
  • the "class of data” refers to the type, as recognized by a user, of the data.
  • the class of data may be e.g. one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general.
  • a piece of data can be represented in different formats.
  • (digital) video files can be represented by different (digital) video formats, such as “avi” (Audio Video Interleave), “mp4" or MPEG-4 Part 14, “flv” (Flash Video), “mov” (Apple's QuickTime format), “ogg", “ogm”, “ogv” (open-standard formats), “VOB” (DVD Video Object), and “asf or "wmv” (Microsoft format).
  • Some of these formats may include quality attributes, such as frame rate and/or resolution.
  • (digital) audio files can be represented by different (digital) audio formats, such as uncompressed formats like “wav” (waveform audio file format), “aiff” (audio interchange file format), or “pern” (pulse code modulation); or lossless compressed formats like “flac” (free lossless audio codec), “ape” (Monkey's audio format), “wv” (wavpack format), “tta” (true audio), “atrac” (lossless adaptive transform acoustic coding), “m4a” (Apple lossless), various MPEG-4 formats, “wma” (Windows media audio), and “shn” (Shorten file format); or formats with lossy compression, such as “mp3” (MPEG-1 or MPEG-2 audio layer formats), “ogg” or “oga” (Vorbis formats), “mpc” (Musepack), “aac” (Advanced audio coding), “atrac” (lossy adaptive transform acoustic coding), and
  • Some of the formats may include quality attributes, such as number of bits per sample (i.e. the dynamic range of the data, such as 24-bit or 16-bit), sampling rate (such as 96 kHz or 44 kHz), bitrate (e.g. kilobits per second, kbps) and/or a quality number.
  • quality attributes such as number of bits per sample (i.e. the dynamic range of the data, such as 24-bit or 16-bit), sampling rate (such as 96 kHz or 44 kHz), bitrate (e.g. kilobits per second, kbps) and/or a quality number.
  • (digital) image files can be represented by different (digital) image formats.
  • the configuration database may further comprise e.g. a set of valid data formats and/or preferable data formats, at least for the second entity.
  • the valid data formats may be associated with the class of data.
  • the valid data formats may comprise “jpq” and "gif (for the following discussion, in this order), whereby images in other formats, such "raw", “tiff, or “bmp” would be converted to either "jpg” or "gif.
  • the valid data formats may be ordered by preference, so that images in an invalid format would be converted to the first mentioned format (e.g. "jpg” in the above case), but images in a valid format (e.g. "gif in the above case) would not be converted.
  • Formats may include different quality attributes. For example, a list of audio formats like “mp3,V-1 ", "mp3" would indicate that the second entity accepts, as audio files, only mp3 files.
  • the configuration database comprises, in association with the second entity (i.e. an identity of the second entity), the list of valid data formats for the second entity.
  • the list of valid data formats for the second entity may depend of the operating system (OS) of the second entity. For example other video formats are valid to a device with the Windows OS than to a device with the Apple OS.
  • the configuration database may comprise, in association with the identity of the second entity, information on the OS of the second entity.
  • the configuration database may comprise the list of valid file formats for the OS of the second entity. Therefore, in an embodiment of a method, a file (i.e. some data) is converted to converted data such that the format of the converted data is valid for the second entity. In an embodiment, information indicative of the set of valid data formats for the second entity, in particular the set itself, is requested (and received) from the second entity.
  • a conversion may generally contain much less data (as measured in bits) than the original data.
  • the jpeg files, as converted from "raw" camera files are much smaller than the original.
  • the conversion requires much less data storage from the second entity than the original data would need.
  • copying the conversion requires much less data transfer capability from the connection between the first entity and the second entity than copying the original data would need.
  • the configuration database is accessed.
  • Various records of the configuration database can be accessed subsequently, whereby the flow between multiple different devices in enabled. For example, with reference to Fig. 2, a data flow from a mobile phone to a memory stick can be made first (cf. the record REC(1 )), and thereafter the data may flow from the memory stick to a service provider (cf. the record REC(2)).
  • a converted file is substantially similar to the original file, and also the original file is substantially similar to the conversion thereof.
  • this may be the case, when the "same" video or audio is obtained from a different source.
  • an audio file ripped from a compact disc (CD) source typically is different from the same audio file downloaded from the internet, e.g. from Youtube. Since the quality (optionally also dynamical range and/or tempo) of the audio is typically quite different, the files, even if different, are substantially similar, as they represent the same piece of music.
  • a live recording may be considered substantially similar to a studio recording. The same applies for a video ripped from a DVD (digital video disc) and downloaded from the internet.
  • identical data is also substantially similar.
  • the term “duplicate” is used to describe data that is identical or substantially similar to the data that is to be copied.
  • data here may refer to a file in a file system, or e.g. to a collection of records of a file, such as a contact, all the contacts, an event, or all the events.
  • the substantial similarity of a first data and a second data may be determined e.g. using at least one content specific descriptor (CSD).
  • the first data and a second data may be determined to be substantially the same, when at least one CSD of the first data is identical (or similar) to at least one CSD of the second data.
  • the option "or similar" refers e.g. to case insensitivity of content specific descriptors.
  • the first data and the second data may be determined to be substantially similar, when at least one CSD of the first data is case- insensitively identical to at least one CSD of the second data. Examples will be given in more detail later.
  • CSD multiple content specific descriptors
  • data files may be associated with also other metadata, such as file specific descriptors describing the technical properties file itself (e.g. name, size, date of last modification, file name extension) and format specific descriptors describing how the content of the file is to be interpreted (e.g. data format, quality value, bitrate, frames per second, resolution).
  • file specific descriptors describing the technical properties file itself e.g. name, size, date of last modification, file name extension
  • format specific descriptors describing how the content of the file is to be interpreted (e.g. data format, quality value, bitrate, frames per second, resolution).
  • Figure 3a shows a flow chart of the corresponding method, wherein the data that is to be copied is optionally converted to a conversion, i.e. to converted data.
  • the format of the converted data should be a valid format for the second entity.
  • the method is performed by a performer 200, such as a computer, such as the first 1 10, the second 120, or the third 130 entity, as depicted in Figs. 1 a to 1 d.
  • the performer 200 communicates with a configuration database 300, which may be located in the performer (e.g. the computer), the first entity, the second entity, or another entity.
  • the performer 200 (e.g. the computer) further communicates with the first entity 1 10 and the second entity 120, wherein the first 1 10 or the second 120 entity may be the performer 200 (e.g. the computer) itself.
  • an embodiment of the method comprises
  • the configuration database 300 may be accessed with an index i such that information form the i:th record, REC(i), of the configuration database 300 is requested.
  • the direction indicator INDd may be implicitly received, e.g. when a pair of identities (ID1 , ID2) is receiver, the direction indicator INDd may be assigned to indicate the direction from the first entity 1 10 having the identity ID1 to the second entity 120 having the identity ID2.
  • the identities ID1 and ID2 and the direction indicator INDd may be comprised by the record REC(i), wherein i is the index as discussed above.
  • a connection that enables data transfer may comprise e.g. a direct physical coupling of entities (Fig. 1 a), a wired coupling of entities (Fig. 1 b), and/or a wireless connection (Fig. 1 d).
  • the presence of a connection that enables data transfer may comprise the presence and operation of some service program running in the first 1 10 and/or the second entity 120. For example, even if a wireless computer network is present, all service providers are not necessarily in operation all the time. Moreover, some physically connected devices do not respond to requests from the performer 200 if a server program is not running in the device.
  • the service type indicators (cf. Fig. 2) may be used to determine the presence of the connection. Further steps can be performed if the connection is present (cf. reference 217).
  • the first entity 1 10 provides data, the data either directly indicating that some changes/additions are made, or the data comprising information, such as time stamps, file sizes, and file names, from which the performer 200 may interpret that changes are made at the first entity, to the performer 200, which may be the second entity or another entity.
  • This data comprises the data, of which change or addition has been detected in the previous step.
  • the second entity 120 detecting, using at least one content specific descriptor (CSD) of the data that is to be copied, the absence 227 of a duplicate of the data that is to be copied, from the second entity.
  • CSD content specific descriptor
  • the absence of at least one of (a) the data that is to be copied and (b) data that is substantially similar to the data that is to be copied from the second entity is determined.
  • the existence of the data or substantially similar data is checked. There is no need to copy the data if a duplicate thereof already exists in the second entity 120.
  • the second entity 120 provides the performer 200 with information regarding the existence (or absence) of the data or substantially similar data.
  • the data that is substantially similar to the data that is to be copied is optionally located in an entity other than the first entity or the second entity.
  • - (iiia) data that is substantially similar to the data that is to be copied; e.g. data, of which conversion the data that is to be copied is.
  • the data that is to be copied may be a low-quality original
  • a conversion of data that is substantially similar to the data that is to be copied may be a low- quality original (original in the sense that similar data should be copied), such as an mp3 audio file.
  • a high quality file containing substantially similar data can be used for copying to the second entity.
  • a conversion of the high quality file can is to the second entity. It is noted that this conversion may have a higher quality than the data that is to be copied.
  • the third options (iiia) and (iiib) can be enabled e.g. when flow is enabled between three entities.
  • the options may be user friendly, since in that case, a user needs not to explicitly define data flow from the high-quality source to a third entity. Thus this option reduces the amount of entity definitions made by the user.
  • Figure 1 e shows some possibilities of data flow between three entities. On the left, the aforementioned options i, ii, iiia, and iiib are indicated for the first flow (from entity 1 to entity 2) and for the subsequent flow (from the entity 2 to the entity 3).
  • the options refer to the cases:
  • HQ high-quality
  • the medium quality file may be e.g. an mp3 file with a 128 kbps (kilobits per second) quality attribute.
  • the second conversion may be e.g. an mp3 file with a 64 kbps quality attribute.
  • a conversion such as a medium quality file (MQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying the high quality file (HQ-file) from the entity 1 to the entity 3.
  • MQ-file medium quality file
  • HQ-file high-quality file
  • the data flows from entity 2 to entity 3.
  • a conversion such as a medium quality file (MQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying a conversion of the high quality file (HQ-file) to the entity 3.
  • the conversion may also be a high quality conversion, such as a lossless compressed file of the original.
  • the converted HQ file may be an audio file in the flac format.
  • a conversion such as a low quality file (LQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying a conversion of the high quality file (HQ-file) to the entity 3.
  • the conversion may have a higher quality than the low-quality file, but have a lower quality than the high quality file.
  • the file in the entity 1 may be a lossless audio file in the wav -format; into the entity 2 a low quality conversion thereof is copied; and into the entity 3 a medium quality conversion of the high quality file is copied.
  • a conversion may be the result of converting a lossless (optionally uncompressed) format to another lossless (optionally uncompressed) format.
  • an audio file recorded with 24 bit depth (24 bits/sample) and sample rate 96 khz may be converted to 16 bit depth and sample rate 44.1 khz; wherein the latter form is suitable for a regular audio compact disc.
  • Both these files may have the "wav" format.
  • a multichannel e.g. 3, 4, 5, 6, or 7 channel
  • audio recording which may be converted (i.e. downmixed) to a two-channel stereo file.
  • an embodiment comprises one of the options (i) and (ii) discussed above, i.e.
  • the embodiment (ii) comprising copying a conversion of the data in the first entity may further comprise
  • the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied can be used to locate data that is substantially similar to the data that is to be copied (e.g. a high quality original located in another entity).
  • the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied may be e.g. an address or a pointer to the data.
  • the information may comprise an identity of the first entity and an identity of the data.
  • the information may comprise an identity of the first entity and a file name.
  • an embodiment of the embodiment comprising copying converted data further comprises
  • the database may be e.g. included in the correspondence table.
  • This embodiment may further comprise the option (iii) discussed above, and a related step, i.e.
  • the embodiment (iiia) may further comprise
  • the method further comprises
  • the log -field of the configuration file can be updated with the status of the data flow, as indicated above in connection with the "log" field of the configuration database.
  • the presence of a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120 is determined 215.
  • the capability of an entity of sending data may comprise determining that a corresponding service, for sending data, is running.
  • the capability of an entity of receiving data may comprises determining that a corresponding service, for receiving data, is running.
  • the method may comprise
  • the method may continue from the step of ref 225; and further data may be detected and copied. If the answer to this is the positive, the method may be re-performed using a subsequent record of the configuration database 300. Thus, the index i for the record REC(i) may be advanced.
  • the presence of a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120 is determined (ref. 215).
  • a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120 is determined (ref. 215).
  • the method may be re-performed again with different identities ID1 , ID2 for the entities.
  • the configuration database may comprise a multitude of records REC(1 ), REC(2), REC(3), REC(N), one record for one pair of entities.
  • the method may be performed with a next record REC(2).
  • the method may be performed with a next record REC(i+1 ). After the last record REC(N), the method may be re- performed starting from the first record REC(1 ).
  • the program stops to wait for a new trigger for triggering the restart of the method. The triggering will be discussed in more detail later.
  • the method may continue (ref. 222, "yes"). It is of course possible to detect that nothing has changed or has been added. In this case (ref. 222, "no") the method may be re-performed with a subsequent record from the configuration database, as discussed above. After detecting the absence 227 (absence from the second entity) of a duplicate of the data that is to be copied (copied from the first entity), the subsequent steps of the method are performed, as discussed above (ref. 230, "yes"). However, if such data is not absent, i.e. a duplicate is present, i.e.
  • the method may comprise
  • the method may continue from the step of ref 225.
  • the performer 200 of the method automatically detects at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity.
  • the items that may be copied are identified and information that enables the detection of change on these items is stored in the configuration database.
  • This information includes e.g. the path, the name, and the modification date and time of the files in the first entity.
  • this information includes e.g. the path, the name, and the modification date and time of the files in the second entity.
  • information on corresponding object pairs is gathered and stored in a correspondence table 400 (Fig. 4) based on enumeration.
  • the correspondence table may form part of the configuration database 300.
  • the information on corresponding pairs refers to information for each (transferable) file in the first entity, information, which file (in the second entity) is the duplicate thereof.
  • the term "transferable file” refers to a file that is to be copied under the flow. As will become evident, not necessarily all files are deemed to be copied, but the user may choose the classes of files he/she wants to flow between devices.
  • the performer 200 detects a change or an addition. In some cases also removals are detected; however, a removal at the first entity does not initiate copying, only removal.
  • the changes may be automatically detected based on a trigger. An event triggers the flow to perform the aforementioned copying and other steps. The trigger may be received e.g. when
  • an entity which is included in the flow through at least one record REC of the configuration database, is connected to the performer 200, e.g. to the computer running a corresponding software (Fig. 3c),
  • a file is added, and the file is determined as a file that should be copied (e.g. having a corresponding class), (Fig. 3b) , or
  • Triggering in principle, may occur in at least one of the following ways
  • a trigger signal actively sent by an entity such as the performer itself.
  • a trigger signal may be received from another program, such as the operating system. This is also typical for the case wherein an entity is connected to the performer. This is also typical in some platforms for detecting changes and/or additions in a file system.
  • the first entity is a computer network based service provider.
  • the service provider may provide information, such as a flag, indicative on whether changes and/or additions have been made. However, the state of the flag may be polled. Polling may be done e.g. during regular time intervals, such as once in a hour. - by a user. This is typical for the last case (change or addition of configuration database record(s)). For example, it is typically the user who makes additions or changes to the configuration database. These changes trigger the flow.
  • the triggering of data flow may also be started manually through a user interface. E.g. if for some reason, some detection that should have occurred automatically, is not performed, a used may manually trigger data flow, e.g. according to a record REC of the configuration database.
  • the detection of change and/or addition happens by receiving a trigger, wherein the trigger itself is indicative of such change and/or addition.
  • a trigger depicted in Fig. 3b, wherein the first entity 1 10 sends a trigger to the performer 200, the trigger comprising information indicative of the aforementioned change/addition.
  • This embodiment comprises receiving a trigger (ref. 260).
  • a trigger may only indicate a reason for performing the steps of the flow.
  • a trigger in general is not indicative of the change or addition of data, as will be discussed. Thus, the changes may have to be determined even if a trigger is received.
  • the corresponding embodiment is shown in Fig. 3c.
  • the triggering may also include some delay.
  • the flow i.e. the steps discussed above, may be performed only after a delay time.
  • the automatic detection of at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity comprises
  • the delay time after determining the presence of the first or the second entity (i.e. the presence of a connection that enables direct or indirect data transfer from the first entity to the second entity), may be e.g. from 1 second to 10 minutes; or from 10 seconds to 5 minutes; or from 20 seconds to 5 minutes; or about 1 minute. This is to ensure that other automated tasks related to the connection, performed by other programs, such as the operating system itself, have been performed before commencing the flow.
  • the delay time, after determining the change and/or addition of data is much less than a minute, and may even be zero or neglected. This is because the addition or change typically does not initiate other processes at the performer.
  • the delay time may be specific e.g. to the first entity or to the second entity.
  • the delay time may be adapted according to a state of an entity.
  • the state may be e.g. the charge level of a battery of an entity.
  • the state may be e.g. the free network capacity, or an estimated free network capacity, of an entity.
  • delays may be used, if a the network of a computer network based network is busy.
  • delays may be used, if a the network of a computer network based network is typically busy at the time a triggering signal is observed.
  • delays may be used to perform flow only at night.
  • a specific record of the configuration database may be skipped, e.g. in case a computer network is out of order. This may also be taken into account by said determining the presence of a connection that enables direct or indirect data transfer from the second entity to the other entity.
  • Enumeration in general refers to an ordered listing of all of the items in that collection.
  • enumeration refers to an ordered listing of all of the data (e.g. files), in the first entity, that are to be copied to the second entity.
  • enumeration preferably refers to an ordered listing of all of the transferable data (e.g. files belonging a predefined set of classes), in the first entity, that are to be copied to the second entity.
  • Whether enumeration is done to all files or to only all transferable files may depend on the first entity and it capabilities.
  • Some entities are capable of providing a list of only transferable file (e.g.
  • a correspondence table 400 (Fig. 4) comprising the aforementioned corresponding at least object pairs (410, 420, PAIR(1 ), PAIR(2)) is made.
  • the object pair comprises information indicative of the (i) the data that is to be copied, at the first entity and (ii) the data or a conversion thereof at the second entity.
  • the object pair may comprise a first identity for the data that is to be copied, at the first entity, and a second identity for the data or a conversion thereof at the second entity (cf. Fig. 4, ID-File1 and ID-File2).
  • the information indicative of these data may be e.g. (i) the name and location of the data at the first entity and (ii) the name and location of the data or the conversion at the second entity.
  • an object pair may comprise or further comprise a name associated with the source data and a name associated with the target data (Fig. 4, Namel and Name2).
  • An object pair may further comprise at least one CSD for the source data and the target data (Fig. 4, e.g. CSD1 1 and CSD21 ).
  • the identity (cf. Fig. 4, ID-File1 and ID-File2) may be used, e.g. if files are removed from the second entity.
  • the identity may be used, e.g. when an existing file is modified in the first entity.
  • An identity of data is a practical way of identifying data, as the data may have different forms.
  • a path and name of a file may serve as an identity of a file, but the flow may also be enabled e.g. to contacts and/or messages.
  • An enumeration of the files may be made, e.g. if a record is added to the configuration database. An enumeration of the files may be made, e.g. if a connection to a source entity is detected.
  • An example of a correspondence table 400 is shown in Fig. 4.
  • the table 400 comprises information PAIR(1 ) on a first object pair 410.
  • the example information comprises
  • the table 400 further comprises information PAIR(2) on a second object pair 420.
  • the information comprises e.g. some of the values for the files of the second object pair as discussed above.
  • the correspondence table may comprise, in addition to the aforementioned corresponding object pairs, the content specific descriptor or the content specific descriptors related to this object pair.
  • the content specific descriptor may be determined once the first part of an object pair is found. This content specific descriptor can be used to determine the absence of a duplicate in the second entity, as discussed above.
  • the correspondence table 400 may be part of the configuration database 300, in particular part of a record REC(i) of a configuration database.
  • the correspondence table may form a separate database. All the configuration tables related to all pair of entities can be arranged in the same database. Preferably, however, for each pair of a first entity and a second entity, a separate correspondence table is used; such as a correspondence table stored in the corresponding record of the configuration database.
  • the correspondence table can be made e.g.
  • the aforementioned correspondence table may be used to determine the changes and/or additions in the file system of the first entity.
  • the correspondence table can be used to check the changes made to the file system of the second entity. For example, by using the correspondence table, the removal of some files from the second entity can be easily detected. Correspondingly, such data can be re-copied to the second entity. Changes of the files at the first entity may be also easily checked using the correspondence table. Additions to the files system at the first entity may be determined from the file system itself, which may comprise a list of additions, or in the alternative, by scanning the files in the first entity.
  • an embodiment comprises - associating a first name for the data that is to be copied from the first entity to the second entity,
  • the duplicate is absent, copying, from the first entity to the second entity, directly or indirectly, the data that is to be copied and/or a conversion thereof, to make a duplicate of the data that is to be copied to the second entity, and
  • the correspondence table can be used to detect the absence of the duplicate.
  • an embodiment comprises
  • the method comprises detecting, using at least one content specific descriptor of the data that is to be copied, from the second entity, the absence of a duplicate of the data that is to be copied.
  • the content specific descriptor is a descriptor of the data that is to be copied, and specific to the content of that data.
  • the content specific descriptor is derivable from the content of the data. More specifically, the content specific descriptor is automatically derivable from the content of the data. More specifically, the content specific descriptor is unambiguously derivable from the content of the data; i.e. provided that first CSDs are derived from a file at a first time and second CSDs are derived from the same file at a second time, the first and the second CSDs are identical. Thus, the CSDs of two identical files are identical; however, this applies not the other way.
  • the data should be transferred to the second entity only if the second entity does not contain this piece of music.
  • the content specific descriptor must be automatically determinable. Metadata comprised by the file itself may be used in this determination. Content specific metadata, comprised by the content of the file, may be used in the determination. The metadata may have been supplied by a user earlier, and stored, as part of the content, in the file.
  • An embodiment of the method comprises automatically generating a content specific descriptor using the data that is to be copied.
  • the content specific descriptor is stored in a standardized form, such as Extensible Markup Language (xml).
  • the content specific descriptor may be stored in a database, in connection with information (such as name and location in a file system) regarding the data from which the content specific descriptor has been derived.
  • information such as name and location in a file system
  • the content specific descriptor can be stored e.g. as part of the correspondence table.
  • multiple content specific descriptors may be used for a piece of data (such as a single file).
  • the content specific descriptor for various classes may include the following content specific descriptors:
  • a contact for the class of a contact; a first name, a second name, a last name, an association, an email address, a phone number, and a generic name,
  • the format specific descriptors (cf. above) for various classes may include e.g. the file formats, as discussed above.
  • the file specific descriptors (cf. above) for various classes may include e.g. the file name, the file extension, the file size and the modification date and time.
  • the absence of a duplicate may be determined e.g. by
  • the first set may comprise multiple CSD for the data that is to be copied.
  • the second set may comprise multiple CSD for the data of which similarity is determined.
  • a second file is determined to be a duplicate of a first file if, and only if, the difference between the similarity value calculated using the CSDs of the first file and the CSD of the second file and a threshold value is in a range that describes similarity.
  • the second file may be determined to be a duplicate, if the similarity value exceeds a threshold.
  • the threshold may be e.g. a percentage value.
  • the similarity value may be an integer, or rounded to an integer, describing a percentage value.
  • the second file may be determined to be a duplicate, if a similarity value goes below a threshold.
  • the threshold may be e.g. a percentage value.
  • the similarity value may be an integer, or rounded to an integer, describing a percentage value. In this case, the larger similarity values describes more dissimilarity.
  • a "dissimilarity value" is also a similarity value.
  • the second data may be located from the second entity by
  • the second data is located using the correspondence table 400.
  • the various object pairs PAIR(i) may be rapidly scanned to find the pair, wherein the first part corresponds to the associated name of the data that is to be copied. Thereafter, the second part of this object pair gives the name, including the location, of the second data.
  • the first set (comprising the CSDs) may comprise e.g. the artist name, the album name, and the track number of an audio file in the first entity.
  • the second set may comprise e.g. the artist name, the album name, and the track number of an audio file in the second entity.
  • a similarity value of "true” may be formed.
  • a similarity value of "false” may be formed. In the latter case, the audio file should be copied to the second entity.
  • a numerical similarity value may be used.
  • a corresponding embodiment comprises computing a similarity value.
  • a corresponding embodiment comprises computing a numerical similarity value.
  • the numerical similarity value may be a value from the set of integer numbers (such as similarity in percentages), the set of natural numbers (such as similarity in percentages), the set of rational numbers (such as a rational similarity value), or the set of real numbers (such as a real similarity value).
  • a real similarity value is used.
  • a corresponding embodiment comprises computing a continuous numerical similarity value.
  • real number refers to a real number as represented by a computer.
  • continuous refers to a continuous variable in the sense computers describe continuous variables, such as real numbers.
  • An embodiment comprises using at least one content specific descriptor in said computing.
  • An embodiment comprises using descriptor-dependent metrics for the purpose in said computing.
  • the similarity of two pieces of data is proportional to the similarity of their content specific descriptors.
  • the first set comprises the artist name, the name of the piece of music, and the duration
  • the second set comprises the respective content specific descriptors
  • CSDs are typically used as insensitive to case; i.e. capital letters ("A”, “B”, “C") are considered identical to their small counterparts ("a”, "b", “c”).
  • miss-spellings may be allowed. In this way, the similarity may be given a numerical value.
  • the numerical value may be a continuous numerical value.
  • the similarity may be given a numerical value of slightly less than 100 %; and files having the similarity numerical value of more than e.g. 90 % would be considered duplicates.
  • the limiting value for determining the existence of duplicate depends on the preference of the user.
  • the interpretation of different fields, and how they affect the similarity value also depend on the case.
  • a second piece of data is considered to be a duplicate of a first piece of data, if, and only if, at least one principal content specific descriptor is identical (possibly omitting the case of the letters), and further, if some other content specific descriptors are reasonably similar.
  • the forming of a similarity value comprises comparing a principal content specific descriptor of the data that is to be copied, to the corresponding principal content specific descriptor of a piece of data at the second entity; and determining a similarity value that is indicative of the presence of a difference, if the principal content specific descriptors are different.
  • a similarity value that is indicative of the presence of a difference may be determined, if the principal content specific descriptors are different, when the difference is determined case-insensitively, i.e. in the case-insensitive sense as discussed above.
  • the principal content specific descriptors may include:
  • the CSD can be used also the other way around to locate a file or files in a file system or multiple file systems. For example, given a content specific descriptor (or a set of such), a similarity value for files can be computed as discussed. Provided a file is reasonable similar to the given content specific descriptor, the corresponding file is found. Therefore, a given content specific descriptor may be used to locate a file in an entity. As clear from the discussion, in the flow, at least two entities are present, and more typically multiple entities are present.
  • a user may receive a list of entities comprising a file (or files) similar to the supplied content specific descriptor.
  • a user may receive, for each entity, the location or locations of the corresponding file or files.
  • an embodiment of the method comprises
  • the correspondence table comprises 400 an identity (e.g. Namel , Fig. 4) of data and in association with the identity, a descriptor specific to the content of data (e.g. CSD1 1 , Fig. 4),
  • the "data” herein may refer to a file or a part of a file.
  • the name of the file having the same content as the predefined CSD is sent, such as displayed.
  • the term "descriptor specific to the content” is used to more clearly make a difference between a user supplied descriptor, which is here called the "predefined content specific descriptor” and a descriptor specific to the content of data, wherein, as discussed, descriptor specific to the content of the data can be automatically determined from existing data.
  • An embodiment further comprises
  • the entity may be e.g. the second entity, i.e. arranged to receive data.
  • the identity is used to identify an entity comprising the data, wherein the entity is arranged to receive data.
  • a transferable file is typically located in at least two entities: the first and the second.
  • At least one of the entities is arranged to send data, and at least one of the entities is arranged to receive data. Moreover, under the flow concept, at least one of the at least two entities is arranged to send data to another entity of the at least two entities.
  • a user supplies, via an interface a predefined content specific descriptors, such as "Orff and "Carmina burana” (the composer, and the composition, cf. Fig. 4).
  • the composition can be found from the object pair PAIR(2); whereby the location of the two files can readily be found from the object pair.
  • the object pair is associated with a record of the configuration database (e.g. the correspondence table 400 may be a part of a record), the corresponding entities may be found from the corresponding record of the configuration database.
  • the predefined content specific descriptor is not necessarily given directly by a user.
  • a user may e.g. point a file comprising the predefined content specific descriptor (using an interface), whereby the interface could return information indicative of whether a duplicate of such file is located in some entity (entities) or not, and is a duplicate exists, information indicative of the entity and location of the duplicate.
  • an embodiment comprises
  • a similarity value can be used to locate the data.
  • Such an embodiment comprises - determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be located,
  • the procedure can be repeated to multiple files, whereby all reasonably similar files can be found. Once found, e.g. their names, locations, and corresponding entities can be sent and/or displayed.
  • the similarity value may have a numerical value, such as a numerical value, such as a continuous numerical value.
  • At least one format specific descriptor and/or at least one file specific descriptor may be used to determine the absence of a duplicate.
  • the first set further comprises
  • the second set further comprises
  • the items of the first set may be compared with the items of the second set, and the similarity value may be determined based on these comparisons.
  • the configuration database can be used to detect the file hierarchy at the second entity.
  • file hierarchy refers to the mutual relation between a root folder/directory, the folders/directories in the root folder/directory, the sub-folder/sub-directories in the folders/directories or the sub-folders/sub-directories and the location of files therein.
  • the file name and path can be found e.g. from the correspondence table using the identity of the data.
  • the absence can be determined relatively fast as compared to the case, wherein the similarity or substantial similarity of each file (of the first entity) is checked with every file (of the second entity).
  • the configuration database comprises information indicative of the file hierarchy at the second location.
  • the method may comprise
  • the file hierarchy of the second entity may change, e.g. by moving a file from a first location to a second location or by deleting some folders/sub- folders/directories/sub-directories.
  • the method may comprise
  • the data that is to be copied may be converted 240.
  • the incompatibility of the data with the second entity is determined 235.
  • determining a set of valid data formats for the second entity This may be determined from the type of the second entity 120.
  • the configuration database 300 may comprise a list of valid data formats for the second entity.
  • a set of valid data formats may be requested from the second entity.
  • the data format may be determined from the data that is to be copied; typically the file extension already comprises information on the data format.
  • the CSD may comprise further information on the data format, such as at least one quality value.
  • this determination 235 requires the information from the previous two steps. Depending on the embodiment, it is possible either to not copy such data that is incompatible with the second entity 120 (not shown), or to convert 240 the data that is to be copied, and copying the converted data. Moreover, information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied may be stored, as discussed.
  • the embodiment When data is converted, the embodiment comprises
  • the set of valid data format for the second entity 120 may be determined using information regarding the second entity 120.
  • the configuration database 300 may comprise information on the operating system of the second entity 120, and the information of the OS may be used to determine the set of valid formats.
  • the configuration database itself may comprise, in association with the second entity, information indicative of the set of valid data formats for the second entity, or the set of valid data formats for the second entity.
  • the determination of the incompatibility of the data format comprises
  • the set of valid data formats for the second entity is received directly from the configuration database.
  • the corresponding embodiment comprises
  • the configuration database 300 comprises, in association with the second identity ID2 of the second entity 120, the set of valid data formats for the second entity.
  • the set of valid data formats for the second entity 120 may be determined from the second entity itself. Some entities are capable of providing information on valid data formats. In this case, the set of valid data formats may be received from the second entity.
  • a corresponding embodiment comprises:
  • the information indicative of the set of valid data formats may e.g. comprise or consist of the set of valid data formats.
  • the information indicative of the set of valid data formats may be received from the second entity.
  • the set of valid data formats for the second entity may be determined e.g. by using a database and the information indicative of the set of valid data formats, and
  • the information indicative of the set of valid data formats may comprise or consist of the set of valid data formats.
  • the media transfer protocol designed for the Windows® operating system, is capable of providing information identifying the specific capabilities of device(s) (i.e. entities) with respect to file formats and functionality.
  • the MTP or another protocol may be used in said determining the set of valid data formats using the information indicative of the set of valid data formats.
  • the protocol may provide this information.
  • the set of valid data formats may be stored in the configuration database.
  • the set of valid data formats may be stored in the each such record of the configuration database, wherein the aforementioned second entity is the second entity of the record. Furthermore, an embodiment comprises determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
  • the data even if it is compatible with the second entity 120, but the data is not in a preferred format.
  • This can also be achieved by setting, as the set of valid data formats for the second entity, only the preferred format.
  • the set of valid data formats for the second entity may be an ordered list of valid formats, but the first format may be the preferable one in the sense that if conversion is performed, the data is converted such that the format of the converted data is the first format listed in the set of valid data formats for the second entity.
  • the corresponding embodiments do not comprise determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
  • the corresponding embodiment comprises determining that the data format of the data that is to be copied is not equal to a preferred data format.
  • the preferred data format may be comprised by the set of valid data formats for the second entity.
  • the set of valid data formats for the second entity may be an ordered list, and the preferred data format may be the first item of the list.
  • the preferably format could be the last item of the list. What is important is that the flow may be enabled between multiple sources and targets, wherein no special software need to be installed.
  • the method, as described uses only regular protocols in communicating with the various entities.
  • the computer program enabling the flow itself has to be installed in a computer, and this computer may be, but not necessarily is, the first entity or the second entity.
  • the performer 200 e.g. a computer
  • the method steps are performed by a performer 200 that is neither the first entity 1 10 nor the second entity 120.
  • At least one of the first entity 1 10 and the second entity 120 is passive.
  • an entity is defined as passive, provided that the passive entity cannot perform at least one of
  • a passive device does not provide information directly indicating that some files have been changed and/or added to the passive device.
  • information can only be found by comparing the present files to previously collected data. For example, file name, file size, and modification time, can be used to determine whether this files has been added and/or modified after last copying event.
  • At least the second entity 120 is passive. More preferably, both the first entity 1 10 and the second entity 120 are a passive entities.
  • transferable data refers to data that belongs to such a class that belong to a set of transferable classes. This further decreases the need for data transfer and/or the data storage needs for different entities.
  • the corresponding embodiment comprises
  • determining the class of the data that is to be copied from the first entity to the second entity this may be determined (i) by determining the class of the data that has been changed in the first entity or (ii) by determining the class of the added new data to the first entity, and
  • the data class may be e.g. one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general.
  • the set comprising at least one transferable data class may consist of the classes audio, video, and image.
  • the configuration database may comprise, in association with the identity ID1 of the first entity 1 10, the set of at least one transferable data class.
  • information indicative of the time when the data transfer from the first entity 1 10 to the second entity 120 occurred the last time is stored in a database.
  • a database Preferably it is stored in the configuration database, e.g. as the log information or in connection with the log information, as discussed above.
  • a log file may be associated or have been associated, in the configuration database 300, with the identity ID1 of the first entity 1 10, the identity ID2 of the second entity 120, and the indicator of direction INDd.
  • the time-value can be stored in the log file. This embodiment comprises
  • An embodiment comprises
  • the second time time-value may be determined directly from the configuration database 300, or through a pointer to a log file, wherein the log file comprises the second time-value.
  • the first time-value can be determined e.g. by
  • the name may be e.g. the name of a file comprising the data.
  • identities of different entities are used. However, such identities are typically not known in advance. The identity may be generated e.g. when an entity is connected to the another entity, through the configuration database 300, the first time.
  • An embodiment comprises,
  • a direction indicator INDd may be stored.
  • the Flow determines a connection between the device, which triggers the flow, as indicated above, and in Fig. 3c.
  • the performer 200 Since the performer 200 is always an entity, at least the identity of the performer is known. Therefore, when the presence of an entity is detected, and the corresponding identity is formed, two identities are available, of which one may be the identity of the performer. Preferably the identity is a unique identity.
  • the identities may be stored in the configuration database 300. However, the configuration database requires also the value for the direction indicator INDd, which may be later received over an interface.
  • the service type indicator may be obtained at the same time the presence of an entity is detected. The service type indicator may be stored in the database in association with the formed identity.
  • data flow can be enabled from a first entity 1 10 to a second entity 120. Furthermore, further data flow can be enabled in a similar way from the second entity 120 to another entity.
  • the second entity is a service (such as a virtual hard drive like Google drive, or Skydrive), recognized by at least two computers, data flow in a large system can be formed (from camera to laptop; further to virtual drive; further to a table top computer; and further to a physical hard drive.)
  • the class of data that should flow can be determined, and, optionally, only part of the data copied.
  • each computer has its own configuration database, and own program configured to perform the flow.
  • another configuration database may be needed (cf. above, wherein the laptop has a first configuration database, and the table top computer has a second configuration database).
  • a corresponding method comprises
  • the information content between the first entity 1 10 and the second entity 120 is also synchronized. Synchronization here refers to the case, wherein the removal of a file in the first entity 1 10 automatically causes the removal of the same or substantially similar file from the second entity 120.
  • This embodiment comprises
  • the data that is removed is a duplicate of the data that is to be removed.
  • the aforementioned correspondence table 400 can be used to determine the absence of the data that is to be removed. For example, if a file is listed in the correspondence table 400 as a source file, but the file is missing from the first entity, absence of the data that is to be removed can be determined.
  • the corresponding object pair can be removed from the correspondence table.
  • the corresponding object pair is the object pair, of which first part corresponds to the data that is to be removed. Some data may also be removed from the first entity. This is the case, e.g. when a two-directional data flow is enabled between the entities.
  • the absence of some data, from the second entity may imply the removal of the corresponding duplicate from the second entity, and further imply a need for removing a duplicate from the first entity.
  • the indicator indicating that some data should be removed may be comprised in the direction indicator INDd.
  • the term "duplicate” refers to the same data or data that is substantially similar. The substantial similarity can be determined using the content specific descriptor (CSD), as discussed above.
  • the absence of the duplicate is determined using the correspondence table; moreover, during the generation of the table, at least one CSD is used, as discussed above.
  • the method can be performed in or by a device. Therefore a device that is arranged to perform the method as described above, has been disclosed.
  • the device comprises a computer or is a computer. Therefore a computer that is arranged to perform the method as described above, has been disclosed.
  • the method may be implemented with a computer program comprising computer program code.
  • the computer program may be supplied as a computer program product.
  • the computer program code of the computer program product may be embodied on a computer readable medium.
  • the computer program code of the computer program product may be embodied on a non-transitory computer readable medium.
  • the computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
  • the computer program code is arranged to provide a data flow from the first entity to the second entity. Pairing of entities e.g. for the configuration database
  • the entities are preferably paired together with an intuitive user interface.
  • a method for pairing entities can be used also with other methods.
  • the method is intuitive for pairing two entities, of which a first entity is arranged to send or receive data, and a second entity is, respectively, arranged to receive or send data.
  • the pairing becomes even more intuitive particularly in the case, wherein the first entity is arranged to send data, and a second entity is arranged to receive data.
  • a performer 200 such as a computer.
  • a computer comprises a display device 500 and a pointer device 550 such as a mouse.
  • the pointer device comprises a selector 560, such as a selection button 560.
  • the display 500 is arranged to display information.
  • the display 500 is arranged to display, at various locations, several icons 510, and at some location LOCp, a pointer 520. Specifically, the display 500 is arranged to display, at a first location LOC1 , a first icon 510a representing the first entity 1 10. Moreover, the display 500 is arranged to display, at a second location LOC2, a second icon 510b representing the second entity 120. By moving the pointer device 550, a user may change the location LOCp, wherein the pointer 520 is being displayed.
  • the entities can be dragged and dropped; the first entity may be dragged and dropped onto the second entity, or the second entity may be dragged and dropped onto the first entity.
  • the direction of the dragging determines the direction of data flow; however, the direction indication may be assigned a value later through another user interface.
  • a method (M1 ) for pairing two entities wherein a first entity is arranged to send data or receive data; a second entity is, respectively, arranged to receive data or send data; a first identity ID1 is associated with the first entity; and a second identity ID2 is associated with the second entity, comprises
  • the method (M1 ) further comprises, after detecting the pointer 520 at the first location LOC1 ,
  • a method (M2) for pairing two entities wherein a first entity 1 10 is arranged to send data; a second entity 120 is arranged to receive data; a first identity ID1 is associated with the first entity 1 10; a second identity ID2 is associated with the second entity 120 comprises
  • a first selection made using a pointer device 550 preferably by detecting a selection made by pressing a selection button 560 of the pointer device.
  • the "first" icon is displayed at "the first location”; but the first icon can be associated with either the first or the second entity.
  • the pointer device 550 Before the selection, it is assumed that a user moves the pointer device 550 such that the pointer 520 moves to the first location LOC1 . Thereafter the pointer 520 is detected at the first location LOC1 . Moreover, the first selection is detected, while the pointer is located at the first location LOC1 . As indicated above, at the first location LOC1 an icon, associated either with the first entity or the second entity, is shown. The first selection may be e.g. pressing the selection button 560 of the pointer device 550. Such a selection is detected.
  • a user moves the pointer device 550 to move at least the pointer 520, but preferably the pointer 520 and the first icon (510a, 510b) that was located at the first location LOC1 .
  • the method comprises displaying the pointer (and optionally the first icon) at the new location.
  • the user moves the pointer 520 (and the icon) to the second location LOC2 on the display, wherein the second icon (510b, 510a, respectively) is displayed.
  • the user makes a second selection, e.g. by releasing the selection button 560 of the pointer device 550.
  • the corresponding method, at the performer 200 side further comprises
  • the method (M2) further comprises, after detecting the pointer 520 at the first location LOC1
  • the configuration database 300 is used as the database, especially, when the aforementioned method for pairing two entities is used in combination with the method for forming a data flow between the entities.
  • the direction indicator INDd as assigned a value directly by said method, from the direction of the movement of the pointer.
  • the performer 200 itself may be the first or the second entity, it may suffice to store the identity of one entity only. Thus, at least by default, such a pairing may imply that all classes of data should be copied only from the first device to the second device. These default setting could be amended later, as will be discussed.
  • the direction indicator INDd is assigned a value such that the source (first entity 1 10) is the entity that is associated with the icon displayed at the first location LOC1 , and the target (second entity 120) is the entity that is associated with the icon displayed at the second location LOC2.
  • the corresponding method comprises displaying, at the first location LOC1 , a first icon 510a associated with the first entity 1 10, and (i b) at a second location LOC2, a second icon 510b associated with the second entity 120, whereby
  • the detection of the pointer 520 and/or the first icon 510a at the second location LOC2 after the detection of the pointer 520 at the first location LOC1 , forms an indicator INDd indicating the direction of data flow from the first entity to the second entity, and
  • the database preferably the configuration database 300.
  • Figures 6a to 6d show examples of such interfaces.
  • Figure 6a shows images of the two entities between which a data flow is formed.
  • an image 610 of the source entity i.e. the first entity 1 10 is shown on the left
  • an image 620 of the target entity i.e. the second entity 120 is shown on the right.
  • images 630 of the classes of data that may be copied between the devices. In this case the classes a contact, an event, a message, audio, image, and video are shown, in this order from top to bottom.
  • the arrows 640 pointing from left to right, are displayed on the user interface for transferable data classes from the first entity 1 10 to the second entity 120.
  • the arrows 650 pointing from right to left, are displayed on the user interface for transferable data classes from the second 120 entity to the first entity 1 10.
  • contacts and videos are copied from the second entity 120 to the first entity 1 10.
  • the user may enable (a disabled) arrow, by moving a pointer to a location of an arrow, and by making a selection with the selection button 560 of a pointer device.
  • Enabling (or disabling) an arrow implies enabling (or disabling respectively) the data flow for the corresponding data class and the corresponding direction. For example, by moving a pointer to LOCA1 and by making a selection, an arrow would be displayed at the location LOCA1 , and the arrow would indicate, in this case, the enablement of data flow, from the first entity to the second entity, for the data class "event".
  • the arrow would no longer be displayed at the location LOCA2, and the absence of the arrow would indicate, in this case, the disablement of data flow, from the second entity to the first entity, for the data class "video".
  • the indication of the classes that are to be copied can also be received over an interface.
  • the method comprises
  • a pointer is moved to an area LOCA1 that is in between a boundary indicator 680 and an entity indicator 610, 620.
  • the boundary indicator 680 defines a boundary between the entities, represented by their images 610, 620. Selections made in between the boundary indicator 680 and the image 610 of the first entity indicate selections for the first entity. Selections made in between the boundary indicator 680 and the image 620 of the first entity indicate selections for the second entity.
  • the boundary indicator 680 may be e.g. a flow indicator 660 (Figs. 6a, 6b, and 6d), or it may be a class indicator 630 (Fig. 6c).
  • the contrast is low, i.e. nothing is displayed, when a user is enabling a previously disabled data flow.
  • a selection for a first (or second) entity may be indicative of the first (or the second) entity being a target, while the other entity being the source. This can be visually shown by the direction of an arrow, such as the arrow 640 or 650.
  • a direction indicator (640, 650) may directed from the boundary indicator 680 towards to an entity indicator 610, 620.
  • a direction indicator (640, 650) may directed from an entity indicator 610, 620 towards the boundary indicator 680 (Fig. 6d)
  • an embodiment comprises
  • Determining the direction indicator INDd indicative of the direction of data flow is determined by
  • Determining the data class is by determined by determining that at the time the selection is made by the pointer device, the pointer is located
  • Figs. 6a, 6b, or 6d Preferably, as indicated in Figs. 6a to 6d, multiple images of data classes are shown; at least one image for each data class (Fig. 6c), or two images for each data class (Figs. 6a, 6b, 6d). Still further, after detecting a selection made by a pointer device, a direction indicator (640, 650), such as an arrow (640, 650), may be displayed at the corresponding location, i.e. LOCA1 . This is why, in the above sentences (A, i; A, ii; B, i; and B, ii), the expressions "will be" is used. Preferably, both the flow indicator(s) 660 and separate class indicators 630 are shown in different locations (Figs. 6a and 6b). In this embodiment, the flow indicator 660 forms the boundary indicator 680.
  • the second location is located to right from the first location.
  • the second location is located downwards from the first location.
  • the images of the entities can be arbitrarily displayed on the user interface
  • this embodiment comprises
  • LOCA1 LOCA1
  • o (A) INDd is indicative of a data flow from the second entity to the first entity if the pointer is located in between the first location and the third location when the selection is made
  • o (B) INDd is indicative of a data flow from the first entity to the second entity if the pointer is located in between the second location and the third location when the selection is made
  • indication of dataflow also from the second entity to the first entity can be received via a user interface.
  • the contrast is low, i.e. nothing is displayed, when a user is enabling data flow.
  • a direction indicator such as an arrow (640, 650)
  • LOCAL a direction indicator
  • the flow from the first entity to the second entity may be disabled by making a selection at a location, wherein a direction indicator 640 indicative of flow from the first entity to the second entity is displayed (Figs. 6a, 6b, and 6c).
  • the flow from the second entity to the first entity may be disabled by making a selection at a location, wherein a direction indicator 650 indicative of flow from the second entity to the first entity is displayed (Figs. 6a, 6b, and 6c).
  • an embodiment comprises
  • a boundary indicator 680 wherein the third location is arranged in between the first location and the second location, o at a fourth location, direction indicator (640, 650) indicative of flow of data of a data class from the first entity to the second entity,
  • the method may further comprise turning off the direction indicator at the fourth location.
  • the data class may be determined by determining that the fourth location (i.e. that of the pointer at the time the selection is made; and also the location, wherein the direction indicator is shown) is
  • this embodiment comprises
  • a flow indicator 660 wherein the third location is arranged in between the first location and the second location, o at a fourth location (e.g. LOCA2), direction indicator (640, 650), wherein the fourth location is arranged either in between the first location and the third location, or in between the second location and the third location,
  • a fourth location e.g. LOCA2
  • direction indicator 640, 650
  • the method may further comprise turning off the direction indicator at the fourth location.
  • the method can be performed in or by a device. Therefore a device that is arranged to perform the method as described above, has been disclosed.
  • the device comprises a computer or is a computer. Therefore a computer that is arranged to perform the method as described above, has been disclosed.
  • the method may be implemented with a computer program comprising computer program code.
  • the computer program may be supplied as a computer program product.
  • the computer program code of the computer program product may be embodied on a computer readable medium.
  • the computer program code of the computer program product may be embodied on a non-transitory computer readable medium.
  • the computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
  • the computer program code is further arranged to cause the computer to, after detecting the pointer at the first location,
  • the computer program code may be arranged to perform a method as disclosed above.
  • the following examples 1 .1 to 1 .36 illustrate some aspects of the data flow 1 .1 .
  • a method for providing a data flow from a first entity to a second entity comprising - accessing a configuration database
  • the first set further comprises
  • the second set further comprises
  • a method for providing a data flow from a first entity to a second entity comprising
  • determining the compatibility of the data format of the data that is to be copied with the second entity comprises - determining that the data format is incompatible with the set of valid data formats for the second entity; e.g. by determining that the data format of the data that is to be copied does not belong to the set of valid data formats for the second entity,
  • the duplicate is absent, copying, to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied; to make a duplicate of the data that is to be copied to the second entity,
  • the object pair may be formed such that it further comprises at least one content specific descriptor for the data that is to be copied.
  • a device such as a computer, a portable memory device, a camera, a video recorder, an audio recorder, a mobile phone, an audio player, a video player, a viewer for digital images, a GPS-logger, and a navigator, or
  • a virtual device such as a computer network accessible memory storage (e.g. Google drive, Skydrive, Dropbox, Cloud drive), a computer network accessible service (e.g. Flickr, Instagram), or a computer network accessible social network (e.g. Facebook, Twitter).
  • a computer network accessible memory storage e.g. Google drive, Skydrive, Dropbox, Cloud drive
  • a computer network accessible service e.g. Flickr, Instagram
  • a computer network accessible social network e.g. Facebook, Twitter
  • the presence of a connection that enables indirect data transfer from the first entity to the second entity is determined by • deternnining the presence of the first entity, the second entity, and a third entity
  • the first entity or the second entity is a passive entity.
  • the first entity and the second entity are a passive entities.
  • the data class is one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general. 1 .21 .
  • the method further comprising, after detecting the pointer at the first location,
  • a device arranged to perform the method of any of the examples 1 .1 to 1 .31 .
  • a computer arranged to perform the method of any of the examples 1 .1 to 1 .31 . 1 .34.
  • a computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
  • the computer program code is arranged to provide a data flow from the first entity to the second entity.
  • a computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 1 .1 to 1 .31 .
  • a computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 1 .1 to 1 .31 .
  • a first entity is arranged to send data or to receive data
  • - a second entity is, respectively, arranged to receive data or to send data, - a first identity is associated with the first entity, and
  • the method further comprising, after detecting the pointer at the first location, - detecting the pointer and/or the first icon at the second location,
  • the method comprises - receiving an indicator indicating the direction of data flow from the first entity to the second entity, by said detecting the first selection and thereafter detecting the second selection.
  • the first entity is configured to send data and the second entity is configured to receive data by said detecting the first selection and thereafter detecting the second selection.
  • the first set further comprises
  • the second set further comprises
  • the duplicate is absent, copying, from the first entity to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied; to make a duplicate of the data that is to be copied to the second entity,
  • a device arranged to perform the method of any of the examples 2.1 to 2.18.
  • a computer arranged to perform the method of any of the examples 2.1 to 2.19. 2.21 .
  • a computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
  • - display at a first location, a first icon associated with a first entity arranged to send or receive data
  • - display at a second location a second icon associated with a second entity arranged to, respectively, receive or send data
  • the computer program code is further arranged to cause the computer to, after detecting the pointer at the first location,
  • a computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 2.1 to 2.18.
  • a computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 2.1 to 2.18.
  • a method for locating data in an entity comprising
  • the correspondence table comprises an identity of data and in association with the identity, a descriptor specific to the content of the data having the identity
  • a computer arranged to perform the method of any of the examples 3.1 to 3.5.
  • a computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 3.1 to 3.5.
  • a computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 3.1 to 3.5.

Abstract

A method for providing a data flow from a first entity to a second entity. The method comprises accessing a configuration database; receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to copied from the first entity to the second entity; detecting data that is to be copied from the first entity to the second entity; detecting, using at least one content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied; and copying from the first entity to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof. In this way, a data flow is provided from the first entity to the second entity. In addition, a device arranged to perform the method, and a computer program product that is, when executed on a processor of a computer, arranged to cause the computer to perform the method.

Description

A method and a device for flowing data between entities
Field of the Invention This invention relates to automatic copying of data from an entity to another entity. This invention relates to automatic copying of data from the other entity to further entities. Thereby, a flow of data between different entities is formed. The invention further relates to a device for forming the data flow. The invention further relates to a computer program and a computer program product for forming the data flow.
In addition, this invention relates to user interfaces in the field of copying data from an entity to another entity. This invention relates to method for pairing two entities in such an environment. This invention relates to automatic copying of data from an entity to another entity. The invention further relates to a computer program and a computer program product for used interfaces.
Background of the Invention
Nowadays people typically have many electronic devices comprising memory, and in the memory various classes of data, such as data representing music, data representing images, and data representing videos. Music, images, and/or videos may have been recorded using a mobile electronic device, such as a mobile phone. A user may want to have the same, or at least substantially the same data in various devices, such as, in addition to the mobile phone, another mobile phone, a tablet computer, an mp3 player, or an electronic document reader. Various synchronization schemes are known in the art to solve the problem. A common solution is a centralized database comprising virtually all the data, from which the data is copied to devices on regular basis, such as during every night. This synchronization scheme requires quite a lot of storage, at least at the centralized database. Moreover, this kind of system does not necessarily recognize duplicates in a reliable manner, whereby the need for data storage is further increased. Furthermore, this scheme imposes quite a lot of data transfer between different devices. Still further, various devices should be connected to the centralized database on regular bases, e.g. during nights. Even if all this could be done, the delay between the generation of data (e.g. taking a picture) with one device, and the corresponding data appearing in another device would be considerable.
Summary of the Invention The purpose of the present invention is to diminish the problems described above. The method for enabling a data flow between the entities, such as devices or virtual devices, does not require a centralized database anywhere and the duplicates are more intuitively recognized. Different versions of the same, or at least substantially the same, media (i.e. data, such as media files) is possible to map, since the determination of the presence of duplicates is based on content, instead of e.g. name and/or modification date. Therefore need for data storage is decreased. Moreover, the delays with the method are much shorter. Still further, a conversion of data may be copied instead of the original data, which may further decrease the for data transfer and storage.
An embodiment of a method for providing a data flow from a first entity to a second entity comprises
- accessing a configuration database,
- receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting data that is to be copied from the first entity to the second entity,
- detecting, using at least one content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copying from the first entity to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof.
Thereby a data flow is provided from the first entity to the second entity. In an embodiment, said detecting using at least one content specific descriptor of the data to be copied the absence of a duplicate from the second entity comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied,
- locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- detecting, using the similarity value, the absence of a duplicate from the second entity.
An embodiment comprises
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining that the data format is incompatible with the set of valid data formats for the second entity,
- converting the data that is to be copied to said conversion such that the data format of the conversion belongs to the set of valid data formats for the second entity,
- copying, from the first entity to the second entity, directly or indirectly, at least the conversion of the data that is to be copied.
These and some other embodiments of the method are illustrated in the examples 1 .1 to 1 .31 , as detailed later.
A device, such as a computer arranged to perform the method is also disclosed. Furthermore a computer program and a computer program product comprising computer program code are disclosed. The program is, when executed on a processor of a computer, arranged to cause the computer to perform the method. In addition to the data flow itself, a method for pairing two entities, such as the source entity and the target entity for the data flow, has been disclosed. In the method
- a first entity is arranged to send data or to receive data,
- a second entity is, respectively, arranged to receive data or to send data,
- a first identity is associated with the first entity, and
- a second identity is associated with the second entity.
The method comprises
- displaying, at a first location, a first icon associated with the first entity, - displaying at a second location, a second icon associated with the second entity,
- detecting a pointer at the first location,
- detecting a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detecting a movement made using the pointer device to move at least one of the pointer and the first icon,
- displaying the pointer and/or the first icon at another location corresponding to said movement,
the method further comprising, after detecting the pointer at the first location,
- detecting the pointer and/or the first icon at the second location,
- detecting a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device,
- associating the identity of the first entity with the identity of the second entity, and
- storing the first identity in association with the second identity in a database. In an embodiment
- the first entity is arranged to send data and the second entity is arranged to receive data; whereby the method comprises
- receiving an indicator indicating the direction of data flow, by said detecting the first selection and thereafter detecting the second selection.
An embodiment comprises - receiving, over an interface, at least an indicator indicating the direction of data flow,
- receiving, over an interface, the identity of the first entity and/or the identity of the second entity, and
- storing the first identity of the first entity and/or the identity of the second entity in association with the indicator indicating the direction of data flow in the database or another database.
These and some other embodiments of the method are illustrated in the examples 2.1 to 2.18.
The method for pairing entities can be used e.g. as a part of the method for flowing data, such as a part of the user interface for the method. A device, such as a computer arranged to perform the method is also disclosed. Furthermore a computer program and a computer program product comprising computer program code are disclosed. The program is, when executed on a processor of a computer, arranged to cause the computer to perform the method.
Description of the Drawings
Figs. 1 a-1 d show some configurations, wherein data flow is enabled between two entities,
Fig. 1 e show different possibilities of data flow between three entities, Fig. 2 shows an example of a configuration database and the records thereof,
Fig. 3a shows a flow chart for an embodiment for enabling a data flow, Fig. 3b shows a flow chart for an embodiment for enabling a data flow, Fig. 3c shows a flow chart for an embodiment for enabling a data flow, Fig. 4 shows an example of a correspondence table and object pairs thereof,
Figs. 5a-5c illustrate a method for pairing two entities, and
Figs. 6a-6d show computer interfaces for receiving information on transferable data classes and data flow directions between two entities. Detailed Description of the Embodiments
In this description, the term data flow refers to copying data from a first entity to a second entity. The data flow may optionally refer to copying data to a third entity, either from the first entity or the second entity. As clear from this expression, an entity is arranged to at least receive data, store data, and send data. Moreover, as the roles of the first and second entities can be changed, data flow may be, in addition to being one directional, also two directional (i.e. also from the second entity to the first entity).
The term entity refers to a physical device or a virtual device. Examples of physical devices include a computer, a portable memory device, a camera, a video recorder, an audio recorder, a mobile phone, an audio player, a video player, a set-top unit (i.e. a set top box), a viewer for digital images, a GPS- logger, and a navigator. Examples of virtual device include a computer network accessible memory storage (e.g. Google drive, Skydrive, Dropbox, Cloud drive), a computer network accessible service (e.g. Flickr, Instagram), or a computer network accessible social network (e.g. Facebook, Twitter). The term entity may also refer to a combination of a physical and a virtual device. E.g. an entity may be a mobile phone that accesses a computer network accessible memory storage. Examples of such memory storages were given above. As is evident, also other physical devices, such as lap top computers, tablet computers, digital media boxes (set-top boxes, cable boxes, set-top units), may be connected to computer network services, whereby transferring data to/from the device might imply also data transfer to/from a computer network service.
The data may flow from the first entity to the second entity directly or indirectly. Direct data flow means data flow from the first entity to the second entity without the data being transferred via another entity. Examples include data transfer between a computer and a USB (universal serial bus) memory stick, and data transfer between a mobile phone and a virtual hard drive (such as Skydrive Google drive or Dropbox) connected to the mobile phone via a computer network; typically a wireless computer network. Indirect data flow means data flow from the first entity to the second entity via another entity. Examples include a mobile phone and a USB memory stick, both attached to a computer (whereby the computer becomes a third entity); wherein the data flows from the mobile phone to the memory stick via the computer. Other examples include a digital camera connected to a computer, and the computer being further connected to a service provider, such as Flickr, Facebook, or Instagram, whereby data may flow from the camera to the service provider through the computer.
Currently many people have several devices where they store contacts, calendar data, and messages, for example a business phone and a phone for free time. The data flow, as described herein, will keep this data synchronized (i.e. in synchronization or in sync) in all the specified devices. The data flow may be referred to as the Flow. Moreover, pictures can be taken e.g. by mobile phones, compact cameras, and professional cameras. Even when having only one camera people have challenges to store the pictures in one place, wherefrom the pictures would be available when needed. Flow concept includes automatic picture transfer to this memory once the camera device or multiple camera devices are connected with it. The same goes for video files and audio files. Digital pictures, digital videos, and digital audio files can be taken e.g. using a mobile phone, or by using a device configured specially for that (or those) purpose (or purposes). Typical to different device and files is that different devices are not able to make use of the same data in all cases. E.g. it is not possible to playback a HD video file in all mobile devices. Thus a reduced version of the same file needs to be used in some devices. Still the content of the media file is the same from user point of view. The Flow concept includes this human point of view by treating substantially similar data as duplicates. This reduced version of the original data will be later on referred to as a conversion. A duplicate of a file may be the conversion thereof or the (unconverted) original file.
Still further, digital media content distributors, such as newspaper publishers, are faced with an issue with different types of devices. For example, the customers of the content distributors should be able to access and consume the content by several types of devices with different capabilities. The data flow, as described in this description, solves this problem. For example, the digital media may be downloaded (in some cases even by using the flow) only to one of the multiple devices. This device could typically be a home computer (e.g. a table top, a lap top, or a tablet computer). This device then initiates the data flow (if not initiated before), and under the flow concept, the flow would then convert the content to an accessibly form and transfer the conversion of the content further to the other devices for consumption. These other devices would typically include music players, tablet computers, mobile phones, and other multimedia gadgets. It is also noted, that the conversion of the content, from the user point of view, as the same as the original content; or at least the differences are negligible. The flow concept may also be used to enable the data flow from an internet service to the aforementioned one device (the computer).
As discussed, the flow concept includes the following aspects:
- Sharing/flowing multimedia content between multiple devices in a device supported format; as discussed above.
- Keeping content of multiple devices synchronized; as discussed above.
- Collecting incrementally data from multiple sources to one target. The flow concept allows also the formation of a target of a collection of data. For example, a home computer may be the target of the flow for several different devices, such as cameras and mobile phones, whereby a centralized collection of e.g. all pictures will be automatically generated, by the data flow, to the target.
The technical details for these aspects will be provided later on. Some different use cases are illustrated in Figs. 1 a to 1d.
Figure 1 a shows an embodiment, wherein a direct flow between two entities is enabled, in particular from a computer 1 10 (a first entity 1 10) to a device 120 (a second entity 120, such as an USB memory stick 120). In Fig. 1 a, the second entity 120 is directly connected to the first entity 1 10. This embodiment can be used, e.g. to make a backup copy of some of the files in the computer to the memory stick. Figure 1 b shows an embodiment, wherein a direct flow between two entities is enabled, in particular from a digital camera 1 10 (a first entity 1 10) to a computer 120 (a second entity 120). In Fig. 1 b, the second entity 120 is physically connected to the first entity 1 10 with a wire 1 12. In this embodiment, the pictures in the camera 120 are copied to the computer 1 10.
Figure 1 c shows an embodiment, wherein an indirect flow between two entities (devices) is enabled. In particular, dataflow from a digital camera 1 10 to a memory stick 120 is enabled. The computer 130 in between the first and the second entity form a third entity 130. Figure 1 d shows an embodiment, wherein an indirect flow between two entities, a physical device 1 10, such as a digital camera 1 10 and a virtual device 120, such as service provider 120, such as Flickr, Google images, Skydrive, Instagram or Facebook, is enabled. The connection 1 12 (i.e. the wire 1 12) enables data transfer from the camera 1 10 to the computer 130. The connection 122, e.g. a wireless computer network 122, enables data transfer from the computer 130 to the second entity 120. As an alternative to a service provider that is located over an internet connection, the service provider may be a computer of a local network. For example, a table top computer of a local network at home may work as a service provider, whereby, the connection of a first device (e.g. a mobile phone or a camera) to a laptop computer would initiate data flow from the device, via the laptop computer to the table top computer. To enable the data flow, a configuration database is used. The configuration database comprises at least one record REC(i); wherein i is the index of the record REC. Figure 2 shows schematically a configuration database 300 comprising a first record REC(1 ) 310 and a second record REC(2) 320. A record REC(i) of the configuration database comprises
- a first identity ID1 of a first entity,
- a second identity ID2 of a second entity,
- an indicator of direction, whereby the first entity having the identity ID1 is known to be the source entity, and the second entity having the second ID2 is known to be the target entity, and
- a first service type indicator and a second service type indicator. The indicator of direction may indicate either one-way data flow (from the first entity to the second entity), two-way data flow (from the first entity to the second entity and from the second entity to the first entity), or two-way data synchronization (from the first entity to the second entity, from the second entity to the first entity, and the deletion of removed files). In case of one-way or two-way data flow the method does not comprise removing any files. For example, an ordered pair of identities of entities as such comprises an indicator for the direction, provided that data always flows from the firstly mentioned device to the secondly mentioned device. As an example, the first record REC(1 ) may comprise the pair of identities (ID1 ,ID2), thereby indicating flow from the first entity to the second entity; and another record REC(i) (i>1 ) may comprise the pair of identities (ID2,ID1 ), thereby indicating flow from the second entity to the first entity thereby enabling a two directional data flow. In the alternative, a single record may comprise the identities ID1 and ID2 and an indication (the direction indicator INDd) that data should be copied two-way. In addition, the configuration database may comprise an indicator that data removed from the first entity should be removed also from the second entity. Preferably such removal is optional.
The first service type indicator indicates the service type at the first entity that enables sending data at the first entity. The second service type indicator indicates the service type at the second entity that enables receiving data at the second entity.
The record REC(i) may further comprise information on
- a storage type (of the first or the second entity), which can be used to find a storage at the first or the second entity,
- an object pair, which can be used to identify pairs that are affected by the data flow,
- an indicator for disabling automatic data flow, which, when indicated, disables the data flow from the first entity and/or to the second entity, and
- a log, which keeps status of at least the last occurrence of the data flow according to the record. In an embodiment, the log is an xml (Extensible Markup Language) object. The record REC(i) may comprise the log or a pointer to a separate log (xml) file. The log may comprise e.g. at least one of
- a timestamp indicative of the time of the last occurrence of the data flow according to the record of the configuration database,
- status (how did the flow end; optionally an error code or error codes)
- information on the source and target entities, such as the their identities (e.g. when log file separate from the configuration file is used),
- detected changes at the first entity,
- committed changes to the first entity, optionally with error codes,
- detected changes at the second entity, and
- committed changes to the second entity, optionally with error codes. The committed changes include information on what data has been copied. Optionally the committed changes include the time when the copying was made. In addition, the committed changes may include error codes, e.g. when some data could not be copied. For example, the source data might not be accessible all the time. For example, the target entity might not be available for receiving and/or storing data all the time; e.g. a computer network problem may prevent data transfer, of a full storage device may prevent storing data. An error code indicative of normal operation may also be stored. Optionally the committed changes include information on removed data. As will be discussed, in some cases the Flow is configured also to remove some files (i.e. data). In this case, the committed changes can include information indicative of the removed data, such as the name and/or location of a file that has been removed. In addition, the log file may include the identities of the first entity and the second entity, in particular, if the same log file is used for all records REC(i) of the configuration database. More typically, the log is included in the record (310, 320) of the configuration database 300 itself, whereby the record also includes the identities of the entities.
By using the log file, it is possible to inform a user about the changes made, and why some changes could not be made. This ensures, for the user, easy supervision and maintenance of the flow. As will become clear, the configuration database may further comprise e.g. information on the class of data that should flow between the devices. Such as data class will later be referred to as "transferable" data class. The "class of data" refers to the type, as recognized by a user, of the data. The class of data may be e.g. one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general.
As is known to a person skilled in the art, a piece of data can be represented in different formats. For example, (digital) video files can be represented by different (digital) video formats, such as "avi" (Audio Video Interleave), "mp4" or MPEG-4 Part 14, "flv" (Flash Video), "mov" (Apple's QuickTime format), "ogg", "ogm", "ogv" (open-standard formats), "VOB" (DVD Video Object), and "asf or "wmv" (Microsoft format). Some of these formats may include quality attributes, such as frame rate and/or resolution. In a similar way, (digital) audio files can be represented by different (digital) audio formats, such as uncompressed formats like "wav" (waveform audio file format), "aiff" (audio interchange file format), or "pern" (pulse code modulation); or lossless compressed formats like "flac" (free lossless audio codec), "ape" (Monkey's audio format), "wv" (wavpack format), "tta" (true audio), "atrac" (lossless adaptive transform acoustic coding), "m4a" (Apple lossless), various MPEG-4 formats, "wma" (Windows media audio), and "shn" (Shorten file format); or formats with lossy compression, such as "mp3" (MPEG-1 or MPEG-2 audio layer formats), "ogg" or "oga" (Vorbis formats), "mpc" (Musepack), "aac" (Advanced audio coding), "atrac" (lossy adaptive transform acoustic coding), and "wma" (windows media audio lossy). Some of the formats may include quality attributes, such as number of bits per sample (i.e. the dynamic range of the data, such as 24-bit or 16-bit), sampling rate (such as 96 kHz or 44 kHz), bitrate (e.g. kilobits per second, kbps) and/or a quality number. In a similar way, (digital) image files can be represented by different (digital) image formats. These formats include lossless formats like "tiff (tagged image file format), "raw" (typical raw files from digital cameras), "bmp" (Windows bitmap) and "gif" (graphics interface format); vector formats such as "svg" (scalable vector graphics); and lossy formats such as "jpeg" or "jfif (joint photographic experts group), "jpeg 2000" (another compression standard), and "webp" (a file format developed by Google). As will become clear, the configuration database may further comprise e.g. a set of valid data formats and/or preferable data formats, at least for the second entity. The valid data formats may be associated with the class of data. For example, for the second entity and for the class of data "image" the valid data formats may comprise "jpq" and "gif (for the following discussion, in this order), whereby images in other formats, such "raw", "tiff, or "bmp" would be converted to either "jpg" or "gif. The valid data formats may be ordered by preference, so that images in an invalid format would be converted to the first mentioned format (e.g. "jpg" in the above case), but images in a valid format (e.g. "gif in the above case) would not be converted. Formats may include different quality attributes. For example, a list of audio formats like "mp3,V-1 ", "mp3" would indicate that the second entity accepts, as audio files, only mp3 files. However, other types of audio files, such as "wav", if flown to the second entity using the flow, would be converted to mp3 with the quality attribute "V-1 ", in which "V" might stand for "variable bitrate" and "1 " for "highest quality".
Unfortunately all devices do not work with all types of files. For example, a device with the Windows operating system may work only with windows supported files. In a similar manner, a device with the Apple's operating system may work only with Apple OS supported filed. Thus, the aforementioned list of valid data formats for an entity is useful, and in an embodiment, the configuration database comprises, in association with the second entity (i.e. an identity of the second entity), the list of valid data formats for the second entity. The list of valid data formats for the second entity may depend of the operating system (OS) of the second entity. For example other video formats are valid to a device with the Windows OS than to a device with the Apple OS. The configuration database may comprise, in association with the identity of the second entity, information on the OS of the second entity. The configuration database, or another database, may comprise the list of valid file formats for the OS of the second entity. Therefore, in an embodiment of a method, a file (i.e. some data) is converted to converted data such that the format of the converted data is valid for the second entity. In an embodiment, information indicative of the set of valid data formats for the second entity, in particular the set itself, is requested (and received) from the second entity.
It is also noted that a conversion may generally contain much less data (as measured in bits) than the original data. As an example, the jpeg files, as converted from "raw" camera files are much smaller than the original. The same applies e.g. to an original high-definition video file and a lower quality conversion. Thus, the conversion requires much less data storage from the second entity than the original data would need. Moreover, copying the conversion requires much less data transfer capability from the connection between the first entity and the second entity than copying the original data would need.
In the method, the configuration database is accessed. Various records of the configuration database can be accessed subsequently, whereby the flow between multiple different devices in enabled. For example, with reference to Fig. 2, a data flow from a mobile phone to a memory stick can be made first (cf. the record REC(1 )), and thereafter the data may flow from the memory stick to a service provider (cf. the record REC(2)).
In the method only data that does not already exist in the second entity will be copied. However, the data in the second entity needs not be identical to the data in the second entity, it suffices - for avoiding copying - that the data in the second entity is substantially similar to the data to be copied from the first entity. This substantial similarity means that a human user recognizes the content of the "substantially similar file" to be substantially similar to the content of the original file. This applies also vice versa: a human user recognizes the content of the original file to be substantially similar to the content of the "substantially similar file". This is typically the case, when the file format is changed and/or a quality attribute and/or a compression attribute is changed. In this way a converted file is substantially similar to the original file, and also the original file is substantially similar to the conversion thereof. Moreover, this may be the case, when the "same" video or audio is obtained from a different source. For example an audio file ripped from a compact disc (CD) source typically is different from the same audio file downloaded from the internet, e.g. from Youtube. Since the quality (optionally also dynamical range and/or tempo) of the audio is typically quite different, the files, even if different, are substantially similar, as they represent the same piece of music. Moreover, a live recording may be considered substantially similar to a studio recording. The same applies for a video ripped from a DVD (digital video disc) and downloaded from the internet. Evidently, identical data is also substantially similar. In the latter, the term "duplicate" is used to describe data that is identical or substantially similar to the data that is to be copied. The term "data" here may refer to a file in a file system, or e.g. to a collection of records of a file, such as a contact, all the contacts, an event, or all the events.
The substantial similarity of a first data and a second data (i.e. the existence of a duplicate of the first data) may be determined e.g. using at least one content specific descriptor (CSD). The first data and a second data may be determined to be substantially the same, when at least one CSD of the first data is identical (or similar) to at least one CSD of the second data. The option "or similar" refers e.g. to case insensitivity of content specific descriptors. Thus, the first data and the second data may be determined to be substantially similar, when at least one CSD of the first data is case- insensitively identical to at least one CSD of the second data. Examples will be given in more detail later. Evidently, the selection of which CSD (or which multiple content specific descriptors, CSDs) is/are compared depend(s) on the class of the data. E.g. different CSDs is typically used for images than for audio files or contact records, or event records.
Typically data files may be associated with also other metadata, such as file specific descriptors describing the technical properties file itself (e.g. name, size, date of last modification, file name extension) and format specific descriptors describing how the content of the file is to be interpreted (e.g. data format, quality value, bitrate, frames per second, resolution).
Figure 3a shows a flow chart of the corresponding method, wherein the data that is to be copied is optionally converted to a conversion, i.e. to converted data. As is clear from the above discussion, the format of the converted data should be a valid format for the second entity. The method is performed by a performer 200, such as a computer, such as the first 1 10, the second 120, or the third 130 entity, as depicted in Figs. 1 a to 1 d. The performer 200 communicates with a configuration database 300, which may be located in the performer (e.g. the computer), the first entity, the second entity, or another entity. The performer 200 (e.g. the computer) further communicates with the first entity 1 10 and the second entity 120, wherein the first 1 10 or the second 120 entity may be the performer 200 (e.g. the computer) itself.
With reference to Fig. 3a, an embodiment of the method comprises
accessing 210 a configuration database 300. Some details on the information comprised by the configuration database have been discussed, and will be discussed later. Correspondingly the configuration database sends 410 the requested information to the performer 200. The configuration database 300 may be accessed with an index i such that information form the i:th record, REC(i), of the configuration database 300 is requested.
- receiving 212 an identity ID1 of the first entity, an identity ID2 of the second entity, and an indicator INDd of direction such that data is to be copied from the first entity 1 10 to the second entity 120 (Fig. 1 a). The direction indicator INDd may be implicitly received, e.g. when a pair of identities (ID1 , ID2) is receiver, the direction indicator INDd may be assigned to indicate the direction from the first entity 1 10 having the identity ID1 to the second entity 120 having the identity ID2. The identities ID1 and ID2 and the direction indicator INDd may be comprised by the record REC(i), wherein i is the index as discussed above.
determining 215 the presence of a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120. A connection that enables data transfer may comprise e.g. a direct physical coupling of entities (Fig. 1 a), a wired coupling of entities (Fig. 1 b), and/or a wireless connection (Fig. 1 d). Moreover, in addition to the presence of the connection, the presence of a connection that enables data transfer may comprise the presence and operation of some service program running in the first 1 10 and/or the second entity 120. For example, even if a wireless computer network is present, all service providers are not necessarily in operation all the time. Moreover, some physically connected devices do not respond to requests from the performer 200 if a server program is not running in the device. The service type indicators (cf. Fig. 2) may be used to determine the presence of the connection. Further steps can be performed if the connection is present (cf. reference 217).
automatically detecting (220, 222) at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity. This issue will be discussed in more detail separately. However, in this step, the first entity 1 10 provides data, the data either directly indicating that some changes/additions are made, or the data comprising information, such as time stamps, file sizes, and file names, from which the performer 200 may interpret that changes are made at the first entity, to the performer 200, which may be the second entity or another entity.
detecting the data that is to be copied 225 from the first entity 1 10 to the second entity 120. This data comprises the data, of which change or addition has been detected in the previous step.
detecting, using at least one content specific descriptor (CSD) of the data that is to be copied, the absence 227 of a duplicate of the data that is to be copied, from the second entity. Here, the absence of at least one of (a) the data that is to be copied and (b) data that is substantially similar to the data that is to be copied from the second entity is determined. Thus also the existence of the data or substantially similar data is checked. There is no need to copy the data if a duplicate thereof already exists in the second entity 120. In response to a request, the second entity 120 provides the performer 200 with information regarding the existence (or absence) of the data or substantially similar data.
optionally converting 240 (c) the data that is to be copied or (d) data that is substantially similar to the data that is to be copied to a conversion thereof, i.e. to converted data. The option (d) will be discussed in more detail with reference to Fig. 1 e later. And
copying (250, 252), to the second entity, directly or indirectly, the data that is to be copied or data that is substantially similar to the data that is to be copied. This means copying one of
o the data that is to be copied (cf. ref 250),
o (ii) the conversion thereof (i.e. the converted data; cf. ref. 252), o (iiia) data that is substantially similar to the data that is to be copied (cf. ref 250, wherein the "data" is not the data that is to be copied), or o (iiib) a conversion thereof (of the data that is substantially similar to the data that is to be copied; cf. ref 252, wherein the "data" is not the data that is to be copied).
In cases (iiia and iiib) the data that is substantially similar to the data that is to be copied is optionally located in an entity other than the first entity or the second entity.
The aforementioned options (i), (ii), (iiia), and (iiib) indicate copying
- (i) the data.
- (ii) the conversion thereof, such as a conversion of a high quality original (such as high-definition (HD) video) to a playable lower quality conversion (such as mp4).
- (iiia) data that is substantially similar to the data that is to be copied; e.g. data, of which conversion the data that is to be copied is. For example the data that is to be copied may be a low-quality original
(original in the sense that similar data should be copied), such as an mp3 audio file. However, instead of the mp3 file or a conversion thereof, a high quality file containing substantially similar data can be used for copying to the second entity. In the case (iiia) the high quality file as such can be copied to the second entity.
- (iiib) a conversion of data that is substantially similar to the data that is to be copied. For example the data that is to be copied may be a low- quality original (original in the sense that similar data should be copied), such as an mp3 audio file. However, instead of the mp3 file or a conversion thereof, a high quality file containing substantially similar data can be used for copying to the second entity. In the case (iiib) a conversion of the high quality file can is to the second entity. It is noted that this conversion may have a higher quality than the data that is to be copied.
The third options (iiia) and (iiib) can be enabled e.g. when flow is enabled between three entities. The options may be user friendly, since in that case, a user needs not to explicitly define data flow from the high-quality source to a third entity. Thus this option reduces the amount of entity definitions made by the user. Figure 1 e shows some possibilities of data flow between three entities. On the left, the aforementioned options i, ii, iiia, and iiib are indicated for the first flow (from entity 1 to entity 2) and for the subsequent flow (from the entity 2 to the entity 3). The options refer to the cases:
- (i,i) copying a high-quality (HQ) file, such as a wav file from entity 1 to entity 2 and further to entity 3.
- (i,ii) copying a high-quality (HQ) file, such as a wav file from entity 1 to entity 2 and copying a conversion thereof, such as a medium quality file (MQ) further to entity 3. The medium quality file may be e.g. an mp3 file with a 128 kbps (kilobits per second) quality attribute.
- (ii, i) making a conversion of a high-quality (HQ) file located in the entity 1 , such as a wav file, and copying the conversion to entity 2. In addition, copying the converted file further to entity 3.
- (ii, ii) making a conversion (such as a medium-quality file) of a high- quality (HQ) file located in the entity 1 , such as a wav file, and copying the conversion to entity 2. In addition, making a low quality (LQ) second conversion of the conversion located in the entity 2, and transferring the second conversion to the entity 3. The second conversion may be e.g. an mp3 file with a 64 kbps quality attribute.
- (ii, iiia) copying a conversion, such as a medium quality file (MQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying the high quality file (HQ-file) from the entity 1 to the entity 3. It is further noted that from the flow point the data flows from entity 2 to entity 3.
- (ii, iiibl ) copying a conversion, such as a medium quality file (MQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying a conversion of the high quality file (HQ-file) to the entity 3. The conversion may also be a high quality conversion, such as a lossless compressed file of the original. As an example the converted HQ file may be an audio file in the flac format.
- (ii, iiib2) copying a conversion, such as a low quality file (LQ-file), of a high-quality file (HQ-file), such as a wav file from entity 1 to entity 2 and copying a conversion of the high quality file (HQ-file) to the entity 3. The conversion may have a higher quality than the low-quality file, but have a lower quality than the high quality file. As an example, the file in the entity 1 may be a lossless audio file in the wav -format; into the entity 2 a low quality conversion thereof is copied; and into the entity 3 a medium quality conversion of the high quality file is copied.
It is also noted that a conversion may be the result of converting a lossless (optionally uncompressed) format to another lossless (optionally uncompressed) format. For example an audio file recorded with 24 bit depth (24 bits/sample) and sample rate 96 khz may be converted to 16 bit depth and sample rate 44.1 khz; wherein the latter form is suitable for a regular audio compact disc. Both these files may have the "wav" format. Same applies e.g. to a multichannel (e.g. 3, 4, 5, 6, or 7 channel) audio recording, which may be converted (i.e. downmixed) to a two-channel stereo file.
Naturally the aforementioned options (iii), (iiia), (iiib), (iiibl ), and (iiib2) could be realized by a data flow directly from the entity 1 to the entity 3. However, a user does not necessarily want to explicitly define all the pairs for the flow. As the cases (iii) are an option, the user need to define only the flow from entity 1 to entity 2 and from entity 2 to entity 3; however, the user does not need to explicitly define a flow from entity 1 to entity 3. In this way, a data flow is provided to the second entity. In this way, a data flow is provided from the first entity to the second entity. The data flows, also in the case (iii) (cf. above) from the first entity in the sense that after the flow, substantially similar data exists in the second entity and in the first entity. As indicated above, in an embodiment, a conversion of the data that is to be copied is copied. In the following discussion (and above) the term "converted data" is used for "a conversion of the data that is to be copied".
As discussed, an embodiment comprises one of the options (i) and (ii) discussed above, i.e.
- copying 250 from the first entity 1 10 to the second entity 120, directly or indirectly, the data that is to be copied or
- copying 252 from the first entity 1 10 to the second entity 120, directly or indirectly, converted data. Moreover, to keep track of the location of the high quality files, the embodiment (ii) comprising copying a conversion of the data in the first entity may further comprise
- storing 254 in a database information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied; preferably storing the information indicative of identity of the first entity and an identity of the data that is to be copied in the correspondence table.
Thus, when copying some data according to an options (iiia) or (iiib), the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied can be used to locate data that is substantially similar to the data that is to be copied (e.g. a high quality original located in another entity). The information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied may be e.g. an address or a pointer to the data. The information may comprise an identity of the first entity and an identity of the data. The information may comprise an identity of the first entity and a file name.
Moreover, for better user experience, an embodiment of the embodiment comprising copying converted data further comprises
- storing 254 in a database information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied. The database may be e.g. included in the correspondence table.
The dash line around the step 254 (Fig. 3a) indicates that the step is optional.
This embodiment may further comprise the option (iii) discussed above, and a related step, i.e.
- using the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied to locate data that is substantially similar to the data that is to be copied, and
- copying (iiia) data that is substantially similar to the data that is to be copied; i.e. the data from which the data that is to be copied has been converted, or (iiib) a conversion thereof. Moreover, to keep track about the location of the original high quality file, the embodiment (iiib) may further comprise
- storing 254 in a database information indicative of (a) the identity of the entity comprising data that is substantially similar to the data that is to be copied; i.e. the data from which the data that is to be copied has been converted and (b) an identity of the data that is substantially similar to the data that is to be copied; i.e. the data from which the data that is to be copied has been converted. This is particularly useful e.g. for the case cases (ii,iiib1 ) and (iijiib) of Fig. 1 e, since, by storing the information, the high quality original can be accessed even when flowing data from entity 3 to entity 4 (not shown in the figure). Preferably the method further comprises
- updating the configuration file; in particular the record REC(i) of the configuration file. For example the log -field of the configuration file can be updated with the status of the data flow, as indicated above in connection with the "log" field of the configuration database.
In an embodiment, the presence of a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120 is determined 215. In the embodiment
- the presence of a connection that enables direct data transfer from the first entity to the second entity is determined by
• determining the presence of the first entity and the second entity
• determining the capability of the first entity in sending data, and
• determining the capability of the second entity in receiving data; or
- the presence of a connection that enables indirect data transfer from the first entity to the second entity is determined by
• determining the presence of the first entity, the second entity, and a third entity,
• determining the capability of the first entity in sending data,
• determining the capability of the third entity in receiving data,
· determining the capability of the third entity in sending data, and
• determining the capability of the second entity in receiving data. The capability of an entity of sending data may comprise determining that a corresponding service, for sending data, is running. The capability of an entity of receiving data may comprises determining that a corresponding service, for receiving data, is running.
After the copying (250,252), the method may comprise
- detecting at least one of (i) a change in further data stored in the first entity and (ii) an addition of further new data to the first entity.
This is shown in Fig. 2 by the reference 232 "all changes detected". If the answer to this is the negative, the method may continue from the step of ref 225; and further data may be detected and copied. If the answer to this is the positive, the method may be re-performed using a subsequent record of the configuration database 300. Thus, the index i for the record REC(i) may be advanced.
There are some branches in the method. For example, the presence of a connection that enables direct or indirect data transfer from the first entity 1 10 to the second entity 120 is determined (ref. 215). When data flow is enabled, such a connection is present (reference 217, option "yes"). In case such a connection is not present (reference 217, option "no"), the method may be re-performed again with different identities ID1 , ID2 for the entities. For example the configuration database may comprise a multitude of records REC(1 ), REC(2), REC(3), REC(N), one record for one pair of entities. Thus, having performed the method for the record REC(1 ), the method may be performed with a next record REC(2). More generally, having performed the method for the record REC(i), the method may be performed with a next record REC(i+1 ). After the last record REC(N), the method may be re- performed starting from the first record REC(1 ). In a preferred embodiment, after copying all the files according to all the records of the configuration database, the program stops to wait for a new trigger for triggering the restart of the method. The triggering will be discussed in more detail later.
After automatically detecting 220 at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity, the method may continue (ref. 222, "yes"). It is of course possible to detect that nothing has changed or has been added. In this case (ref. 222, "no") the method may be re-performed with a subsequent record from the configuration database, as discussed above. After detecting the absence 227 (absence from the second entity) of a duplicate of the data that is to be copied (copied from the first entity), the subsequent steps of the method are performed, as discussed above (ref. 230, "yes"). However, if such data is not absent, i.e. a duplicate is present, i.e. either the data that is to be copied or data that is substantially similar to the data that is to be copied already exists in the second entity (ref. 230, "no"), no data is copied. In this case, further data that has been added or modified in the first entity 1 10 may be detected. Thus the method may comprise
- detecting at least one of (i) a change in further data stored in the first entity and (ii) an addition of further new data to the first entity.
This is shown in Fig. 2 by the reference 232 "all changes detected". If the answer to this is the negative, the method may continue from the step of ref 225. As discussed above, the performer 200 of the method automatically detects at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity.
When the first entity 1 10 is paired with the second entity 120 the first time, the items that may be copied are identified and information that enables the detection of change on these items is stored in the configuration database. This information includes e.g. the path, the name, and the modification date and time of the files in the first entity. Moreover, this information includes e.g. the path, the name, and the modification date and time of the files in the second entity. In addition, when the files are copied, information on corresponding object pairs (such as pairs of files) is gathered and stored in a correspondence table 400 (Fig. 4) based on enumeration. The correspondence table may form part of the configuration database 300. The information on corresponding pairs refers to information for each (transferable) file in the first entity, information, which file (in the second entity) is the duplicate thereof. The term "transferable file" refers to a file that is to be copied under the flow. As will become evident, not necessarily all files are deemed to be copied, but the user may choose the classes of files he/she wants to flow between devices. After the first time, only changes from the last run are detected. If changes are present, the performer 200 detects a change or an addition. In some cases also removals are detected; however, a removal at the first entity does not initiate copying, only removal. The changes may be automatically detected based on a trigger. An event triggers the flow to perform the aforementioned copying and other steps. The trigger may be received e.g. when
- an entity, which is included in the flow through at least one record REC of the configuration database, is connected to the performer 200, e.g. to the computer running a corresponding software (Fig. 3c),
- a file that has been determined as file that should be copied (e.g. having a corresponding class) is modified, (Fig. 3b)
- a file is added, and the file is determined as a file that should be copied (e.g. having a corresponding class), (Fig. 3b) , or
- a record REC (310, 320) of the configuration database 300 is added or changed (Fig. 3c).
Triggering, in principle, may occur in at least one of the following ways
- by receiving a trigger signal actively sent by an entity, such as the performer itself. Such a trigger signal may be received from another program, such as the operating system. This is also typical for the case wherein an entity is connected to the performer. This is also typical in some platforms for detecting changes and/or additions in a file system.
- by polling the first entity. This means scanning regularly the first entity for changes and/or additions. This is typical for some file systems, in particular if the first entity is a computer network based service provider. The service provider may provide information, such as a flag, indicative on whether changes and/or additions have been made. However, the state of the flag may be polled. Polling may be done e.g. during regular time intervals, such as once in a hour. - by a user. This is typical for the last case (change or addition of configuration database record(s)). For example, it is typically the user who makes additions or changes to the configuration database. These changes trigger the flow.
The triggering of data flow may also be started manually through a user interface. E.g. if for some reason, some detection that should have occurred automatically, is not performed, a used may manually trigger data flow, e.g. according to a record REC of the configuration database.
As discussed, in an embodiment, the detection of change and/or addition happens by receiving a trigger, wherein the trigger itself is indicative of such change and/or addition. This is depicted in Fig. 3b, wherein the first entity 1 10 sends a trigger to the performer 200, the trigger comprising information indicative of the aforementioned change/addition. This embodiment comprises receiving a trigger (ref. 260).
However, a trigger may only indicate a reason for performing the steps of the flow. A trigger in general is not indicative of the change or addition of data, as will be discussed. Thus, the changes may have to be determined even if a trigger is received. The corresponding embodiment is shown in Fig. 3c.
The triggering may also include some delay. For example, after receiving a triggering signal, the flow (i.e. the steps discussed above), may be performed only after a delay time. In a corresponding embodiment, the automatic detection of at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity comprises
- receiving a triggering signal 460.
An embodiment further comprises
- after receiving the triggering signal, waiting for a delay time (not shown).
Typically, the delay time, after determining the presence of the first or the second entity (i.e. the presence of a connection that enables direct or indirect data transfer from the first entity to the second entity), may be e.g. from 1 second to 10 minutes; or from 10 seconds to 5 minutes; or from 20 seconds to 5 minutes; or about 1 minute. This is to ensure that other automated tasks related to the connection, performed by other programs, such as the operating system itself, have been performed before commencing the flow. Typically, the delay time, after determining the change and/or addition of data is much less than a minute, and may even be zero or neglected. This is because the addition or change typically does not initiate other processes at the performer. The delay time may be specific e.g. to the first entity or to the second entity. For example, in case the second entity is a mobile device, it may be beneficial for the power usage to have a relatively long delay time. Moreover, the delay time may be adapted according to a state of an entity. The state may be e.g. the charge level of a battery of an entity. The state may be e.g. the free network capacity, or an estimated free network capacity, of an entity. E.g. delays may be used, if a the network of a computer network based network is busy. In addition or alternatively, delays may be used, if a the network of a computer network based network is typically busy at the time a triggering signal is observed. E.g. delays may be used to perform flow only at night. Moreover, in addition or alternatively to delays, a specific record of the configuration database may be skipped, e.g. in case a computer network is out of order. This may also be taken into account by said determining the presence of a connection that enables direct or indirect data transfer from the second entity to the other entity.
The triggering related to changes and/or addition in a file system may be based on enumeration. Enumeration in general refers to an ordered listing of all of the items in that collection. In the flow, enumeration refers to an ordered listing of all of the data (e.g. files), in the first entity, that are to be copied to the second entity. In the flow, enumeration preferably refers to an ordered listing of all of the transferable data (e.g. files belonging a predefined set of classes), in the first entity, that are to be copied to the second entity. Whether enumeration is done to all files or to only all transferable files may depend on the first entity and it capabilities. Some entities are capable of providing a list of only transferable file (e.g. all audio files). When a record is added to the configuration database, a full scan - for all files or for all transferable files - for the first entity and the second entity is performed to obtain the enumeration for the first entity. At the same time or later, a correspondence table 400 (Fig. 4) comprising the aforementioned corresponding at least object pairs (410, 420, PAIR(1 ), PAIR(2)) is made.
The object pair comprises information indicative of the (i) the data that is to be copied, at the first entity and (ii) the data or a conversion thereof at the second entity. Moreover, the object pair may comprise a first identity for the data that is to be copied, at the first entity, and a second identity for the data or a conversion thereof at the second entity (cf. Fig. 4, ID-File1 and ID-File2). The information indicative of these data may be e.g. (i) the name and location of the data at the first entity and (ii) the name and location of the data or the conversion at the second entity. Thus, an object pair may comprise or further comprise a name associated with the source data and a name associated with the target data (Fig. 4, Namel and Name2). An object pair may further comprise at least one CSD for the source data and the target data (Fig. 4, e.g. CSD1 1 and CSD21 ).
The identity (cf. Fig. 4, ID-File1 and ID-File2) may be used, e.g. if files are removed from the second entity. The identity may be used, e.g. when an existing file is modified in the first entity. An identity of data is a practical way of identifying data, as the data may have different forms. A path and name of a file may serve as an identity of a file, but the flow may also be enabled e.g. to contacts and/or messages.
An enumeration of the files may be made, e.g. if a record is added to the configuration database. An enumeration of the files may be made, e.g. if a connection to a source entity is detected. An example of a correspondence table 400 is shown in Fig. 4. The table 400 comprises information PAIR(1 ) on a first object pair 410. The example information comprises
- a first identity for the data that is to be copied, at the first entity; as shown with the reference ID-File1 ,
- information indicative of the name and location of the data at the first entity; as shown with the reference Namel , - a first content specific descriptor for the first file; as shown with the reference CSD1 1 ,
- a second, a third, and a fourth content specific descriptor for the first file; as shown with the references CSD12, CSD13, and CSD14, respectively, - a second identity for the data that has been determined to be a duplicate of the data that is to be copied, at the second entity; as shown with the reference ID-File2,
- information indicative of the name and location of the duplicate at the second entity; as shown with the reference Name2,
- a first content specific descriptor for the duplicate; as shown with the reference CSD21 ,
- a second, a third, and a fourth content specific descriptor for the duplicate; as shown with the references CSD22, CSD23, and CSD24, respectively. The table 400 further comprises information PAIR(2) on a second object pair 420. The information comprises e.g. some of the values for the files of the second object pair as discussed above.
The correspondence table may comprise, in addition to the aforementioned corresponding object pairs, the content specific descriptor or the content specific descriptors related to this object pair. The content specific descriptor may be determined once the first part of an object pair is found. This content specific descriptor can be used to determine the absence of a duplicate in the second entity, as discussed above.
The correspondence table 400 may be part of the configuration database 300, in particular part of a record REC(i) of a configuration database. In the alternative, the correspondence table may form a separate database. All the configuration tables related to all pair of entities can be arranged in the same database. Preferably, however, for each pair of a first entity and a second entity, a separate correspondence table is used; such as a correspondence table stored in the corresponding record of the configuration database.
The correspondence table can be made e.g.
- (A) by first scanning the first entity to collect first parts of the object pairs (e.g. PAIR(1 ):Name1 and PAIR(2):Name1 , Fig. 4) and later scanning the second entity to collect the second parts of the object pairs (e.g. PAIR(1 ):Name2 and PAIR(2):Name2, Fig. 4); wherein an object pair comprises the first part and the second part; or
- (B) by scanning the first entity to, in turns, collect a first part of an object pair (e.g. PAIR(1 ):Name1 , Fig. 4) and once the first part of an object pair is found, scanning the second entity to find the corresponding object pair for the first part (e.g. PAIR(1 ):Name2, Fig. 4). The scanning, in turns, refers to thereafter performing the operation to a second object pair to find the first part (e.g. PAIR(2):Name1 , Fig. 4), etc.
After said scanning (for option A, cf. above), or during said scanning (option B, cf. above), if a duplicate is not found, the data or the conversion thereof is copied to the second entity. Thereby, the corresponding part of the object pair is generated by said copying. After said canning (for option A, cf. above), or during said scanning (option B, cf. above), if a duplicate is found, the data or the conversion thereof is not copied. In this case, the corresponding part of the object pair is found from the second entity. When an entity is connected to the performer 200, e.g. to the computer running a corresponding software, the flow starts. If the configuration database comprises a record, wherein this entity is named as the first entity of the record, the aforementioned correspondence table may be used to determine the changes and/or additions in the file system of the first entity. Moreover, the correspondence table can be used to check the changes made to the file system of the second entity. For example, by using the correspondence table, the removal of some files from the second entity can be easily detected. Correspondingly, such data can be re-copied to the second entity. Changes of the files at the first entity may be also easily checked using the correspondence table. Additions to the files system at the first entity may be determined from the file system itself, which may comprise a list of additions, or in the alternative, by scanning the files in the first entity. If such additions are found, the correspondence table is updated with the corresponding information; in a manner similar to what was discussed under the first full scan (cf. above). Thus, an embodiment comprises - associating a first name for the data that is to be copied from the first entity to the second entity,
- after detecting the data that is to be copied from the first entity to the second entity,
- determining the existence or absence of a duplicate of the data that is to be copied at the second entity,
- provided that the duplicate is absent, copying, from the first entity to the second entity, directly or indirectly, the data that is to be copied and/or a conversion thereof, to make a duplicate of the data that is to be copied to the second entity, and
- associating a second name to the duplicate,
- associating the first name with the second name,
- forming an object pair comprising the first name and the second name, and
- storing said object pair to a correspondence table.
The correspondence table can be used to detect the absence of the duplicate. Thus, an embodiment comprises
- using a correspondence table to detect a file comprising the data that is to be copied from the first entity to the second entity,
- detecting that the file has been modified after last copying event, and
- copying, from the first entity to the second entity, directly or indirectly, the file and/or a conversion thereof. As discussed above, the method comprises detecting, using at least one content specific descriptor of the data that is to be copied, from the second entity, the absence of a duplicate of the data that is to be copied.
The content specific descriptor, as suggested by the term, is a descriptor of the data that is to be copied, and specific to the content of that data. The content specific descriptor is derivable from the content of the data. More specifically, the content specific descriptor is automatically derivable from the content of the data. More specifically, the content specific descriptor is unambiguously derivable from the content of the data; i.e. provided that first CSDs are derived from a file at a first time and second CSDs are derived from the same file at a second time, the first and the second CSDs are identical. Thus, the CSDs of two identical files are identical; however, this applies not the other way.
For example, even if a human user readily recognizes that a file at the first entity contains some specific music, such as "Ode An die Freude" by Ludwig van Beethoven, the data should be transferred to the second entity only if the second entity does not contain this piece of music. For the data flow, the content specific descriptor must be automatically determinable. Metadata comprised by the file itself may be used in this determination. Content specific metadata, comprised by the content of the file, may be used in the determination. The metadata may have been supplied by a user earlier, and stored, as part of the content, in the file. An embodiment of the method comprises automatically generating a content specific descriptor using the data that is to be copied. In an embodiment, the content specific descriptor is stored in a standardized form, such as Extensible Markup Language (xml).
Once (automatically) determined or generated, the content specific descriptor may be stored in a database, in connection with information (such as name and location in a file system) regarding the data from which the content specific descriptor has been derived. As has been be discussed, the content specific descriptor can be stored e.g. as part of the correspondence table.
As will be discussed, multiple content specific descriptors may be used for a piece of data (such as a single file).
The content specific descriptor for various classes may include the following content specific descriptors:
- for the class of a contact; a first name, a second name, a last name, an association, an email address, a phone number, and a generic name,
- for the class of an event; an event name, and a start time,
- for the class of a message; a timestamp, a sender, and a receiver,
- for the class of a document; an author, a title, keyword(s), and a version number,
- for the class of a bookmark; an URL (uniform resource locator), - for the class of an audio file; album name, artist name, album title, title of the music, track number, duration, and a source of the file,
- for the class of a video file; video title, creation time, and duration, and
- for the class of an image file; creation time, location of shooting, description, and a maker.
The format specific descriptors (cf. above) for various classes may include e.g. the file formats, as discussed above. The file specific descriptors (cf. above) for various classes may include e.g. the file name, the file extension, the file size and the modification date and time.
Typically multiple CSDs are used to determine the similarity (i.e. absence of a duplicate). Thus, the absence of a duplicate may be determined e.g. by
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied,
- locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- detecting, using the similarity value, the absence of a duplicate from the second entity.
As is evident, the first set may comprise multiple CSD for the data that is to be copied. As is evident, the second set may comprise multiple CSD for the data of which similarity is determined.
Moreover, as is evident, a second file is determined to be a duplicate of a first file if, and only if, the difference between the similarity value calculated using the CSDs of the first file and the CSD of the second file and a threshold value is in a range that describes similarity. For example, the second file may be determined to be a duplicate, if the similarity value exceeds a threshold. The threshold may be e.g. a percentage value. The similarity value may be an integer, or rounded to an integer, describing a percentage value. For example, the second file may be determined to be a duplicate, if a similarity value goes below a threshold. The threshold may be e.g. a percentage value. The similarity value may be an integer, or rounded to an integer, describing a percentage value. In this case, the larger similarity values describes more dissimilarity. However, quite evidently a "dissimilarity value" is also a similarity value.
The second data may be located from the second entity by
- associating a name with the data that is to be copied, and
- locating, from the second entity, second data that has been determined to be a duplicate of the data that is to be copied.
Preferably, the second data is located using the correspondence table 400. Using the table 400, the various object pairs PAIR(i) may be rapidly scanned to find the pair, wherein the first part corresponds to the associated name of the data that is to be copied. Thereafter, the second part of this object pair gives the name, including the location, of the second data.
The first set (comprising the CSDs) may comprise e.g. the artist name, the album name, and the track number of an audio file in the first entity. The second set may comprise e.g. the artist name, the album name, and the track number of an audio file in the second entity. Provided that the artist name, the album name, and the track number are all the same, a similarity value of "true" may be formed. However, provided that e.g. the track number is different, a similarity value of "false" may be formed. In the latter case, the audio file should be copied to the second entity. Alternatively to a binary similarity value, a numerical similarity value may be used. A corresponding embodiment comprises computing a similarity value. A corresponding embodiment comprises computing a numerical similarity value. The numerical similarity value may be a value from the set of integer numbers (such as similarity in percentages), the set of natural numbers (such as similarity in percentages), the set of rational numbers (such as a rational similarity value), or the set of real numbers (such as a real similarity value). Preferably, a real similarity value is used. A corresponding embodiment comprises computing a continuous numerical similarity value. Here the term "real number" refers to a real number as represented by a computer. Here the term "continuous" refers to a continuous variable in the sense computers describe continuous variables, such as real numbers. An embodiment comprises using at least one content specific descriptor in said computing. An embodiment comprises using descriptor-dependent metrics for the purpose in said computing. Correspondingly, the similarity of two pieces of data (e.g. two files) is proportional to the similarity of their content specific descriptors.
E.g. if the first set comprises the artist name, the name of the piece of music, and the duration, and the second set comprises the respective content specific descriptors, it may be sufficient that when both the names are identical, the file in the second entity is a duplicate, even if the duration is not the same. Moreover CSDs are typically used as insensitive to case; i.e. capital letters ("A", "B", "C") are considered identical to their small counterparts ("a", "b", "c"). Moreover, some miss-spellings may be allowed. In this way, the similarity may be given a numerical value. The numerical value may be a continuous numerical value. E.g. the similarity may be given a numerical value of slightly less than 100 %; and files having the similarity numerical value of more than e.g. 90 % would be considered duplicates. As is evident, the limiting value for determining the existence of duplicate depends on the preference of the user. Moreover, the interpretation of different fields, and how they affect the similarity value also depend on the case.
Typically a second piece of data is considered to be a duplicate of a first piece of data, if, and only if, at least one principal content specific descriptor is identical (possibly omitting the case of the letters), and further, if some other content specific descriptors are reasonably similar. In other words, in an embodiment, the forming of a similarity value comprises comparing a principal content specific descriptor of the data that is to be copied, to the corresponding principal content specific descriptor of a piece of data at the second entity; and determining a similarity value that is indicative of the presence of a difference, if the principal content specific descriptors are different. Optionally, a similarity value that is indicative of the presence of a difference may be determined, if the principal content specific descriptors are different, when the difference is determined case-insensitively, i.e. in the case-insensitive sense as discussed above. The principal content specific descriptors may include:
- for the class of a contact; a first name, a second name, and a last name,
- for the class of an event; an event name,
- for the class of a message; a timestamp and a sender,
- for the class of a document; an author and a title,
- for the class of a bookmark; an URL (uniform resource locator),
- for the class of an audio file; album name, artist name, and track number,
- for the class of a video file; video title, and
- for the class of an image file; maker and location of shooting.
In addition to forming the content specific descriptor based on the content of a piece of data, the CSD can be used also the other way around to locate a file or files in a file system or multiple file systems. For example, given a content specific descriptor (or a set of such), a similarity value for files can be computed as discussed. Provided a file is reasonable similar to the given content specific descriptor, the corresponding file is found. Therefore, a given content specific descriptor may be used to locate a file in an entity. As clear from the discussion, in the flow, at least two entities are present, and more typically multiple entities are present. Therefore, by supplying the content specific descriptor, a user may receive a list of entities comprising a file (or files) similar to the supplied content specific descriptor. In addition to a list of entities, a user may receive, for each entity, the location or locations of the corresponding file or files.
Accordingly, an embodiment of the method comprises
- receiving at least one predefined content specific descriptor,
- accessing a correspondence table 400, wherein the correspondence table comprises 400 an identity (e.g. Namel , Fig. 4) of data and in association with the identity, a descriptor specific to the content of data (e.g. CSD1 1 , Fig. 4),
- receiving the descriptor specific to the content of the data and the identity of the data associated with the descriptor specific to the content of the file, - determining that the predefined content specific descriptor is similar to the descriptor specific to the content of the data, and
- sending or displaying the identity of the data associated with the descriptor specific to the content of the data.
The "data" herein may refer to a file or a part of a file.
Here, the name of the file having the same content as the predefined CSD is sent, such as displayed. Moreover, the term "descriptor specific to the content" is used to more clearly make a difference between a user supplied descriptor, which is here called the "predefined content specific descriptor" and a descriptor specific to the content of data, wherein, as discussed, descriptor specific to the content of the data can be automatically determined from existing data. An embodiment further comprises
- using the identity of the data associated with the descriptor specific to the content of the data to identify an entity comprising the data, and
- sending or displaying information indicative of the entity. Here, in addition to the name, information on the entity wherein the data is located is sent or displayed. Under the Flow concept, the entity may be e.g. the second entity, i.e. arranged to receive data. In a corresponding environment, the identity is used to identify an entity comprising the data, wherein the entity is arranged to receive data.
An embodiment further comprises
- using the identity of the data associated with the descriptor specific to the content of the data to identify another entity comprising the data or other entities comprising the data, and
- sending or displaying information indicative of the other entity or the other entities.
Here, information on all the multiple entities comprising data having the content substantially similar to data described by the predefined CSD are sent or displayed. Under the Flow concept, a transferable file is typically located in at least two entities: the first and the second. Thus, an embodiment comprises
- using the identity of the data associated with the descriptor specific to the content of the data to identify at least two entities comprising the data, and - sending or displaying information indicative of the entities.
Moreover, under the flow concept, at least one of the entities is arranged to send data, and at least one of the entities is arranged to receive data. Moreover, under the flow concept, at least one of the at least two entities is arranged to send data to another entity of the at least two entities.
An example would be that a user supplies, via an interface a predefined content specific descriptors, such as "Orff and "Carmina burana" (the composer, and the composition, cf. Fig. 4). Based on the CSDs of the correspondence table, the composition can be found from the object pair PAIR(2); whereby the location of the two files can readily be found from the object pair. As the object pair is associated with a record of the configuration database (e.g. the correspondence table 400 may be a part of a record), the corresponding entities may be found from the corresponding record of the configuration database.
Still further, the predefined content specific descriptor is not necessarily given directly by a user. A user may e.g. point a file comprising the predefined content specific descriptor (using an interface), whereby the interface could return information indicative of whether a duplicate of such file is located in some entity (entities) or not, and is a duplicate exists, information indicative of the entity and location of the duplicate.
As is evident, other features related to determining similarity are equally applicable here. As an example, an embodiment comprises
- deriving the descriptor specific to the content of the from the content of the data, such as a file.
Moreover, a similarity value can be used to locate the data. Such an embodiment comprises - determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be located,
- determining a second set comprising at least the descriptor specific to the content of some data, such as a file,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- determining that the content specific descriptor is similar to the descriptor specific to the content of the data by using said similarity value.
The procedure can be repeated to multiple files, whereby all reasonably similar files can be found. Once found, e.g. their names, locations, and corresponding entities can be sent and/or displayed. As discussed above, the similarity value may have a numerical value, such as a numerical value, such as a continuous numerical value.
In addition to CSD, also at least one format specific descriptor and/or at least one file specific descriptor may be used to determine the absence of a duplicate. An such an embodiment
- the first set further comprises
o at least a first format specific descriptor and/or
o at least a first file specific descriptor; and
- the second set further comprises
o at least a second format specific descriptor and/or
o at least a second file specific descriptor.
In this embodiment, the items of the first set may be compared with the items of the second set, and the similarity value may be determined based on these comparisons.
In detecting the absence of the duplicate, the configuration database can be used to detect the file hierarchy at the second entity. Here the term "file hierarchy" refers to the mutual relation between a root folder/directory, the folders/directories in the root folder/directory, the sub-folder/sub-directories in the folders/directories or the sub-folders/sub-directories and the location of files therein. The file name and path can be found e.g. from the correspondence table using the identity of the data. Thus, the absence can be determined relatively fast as compared to the case, wherein the similarity or substantial similarity of each file (of the first entity) is checked with every file (of the second entity). In this embodiment, the configuration database comprises information indicative of the file hierarchy at the second location. Conversely, when the second or the first entity is connected to the performer 200 the first time, the method may comprise
- detecting the file hierarchy of an entity having an identity, and
- storing the file hierarchy of the entity in association with the identity to the correspondence table 400.
The file hierarchy of the second entity may change, e.g. by moving a file from a first location to a second location or by deleting some folders/sub- folders/directories/sub-directories. In this case the method may comprise
- detecting a change in the file hierarchy of an entity having an identity, and
- storing the file hierarchy of the entity in association with the identity to the correspondence table 400; such as a correspondence table 400 of the configuration database.
Referring to Figs. 3a to 3c, the data that is to be copied may be converted 240. In case the data is converted, before converting 240, the incompatibility of the data with the second entity is determined 235. This embodiment comprises
determining a set of valid data formats for the second entity. This may be determined from the type of the second entity 120. In the alternative, the configuration database 300 may comprise a list of valid data formats for the second entity. Moreover, a set of valid data formats may be requested from the second entity.
determining the data format of the data that is to be copied. The data format may be determined from the data that is to be copied; typically the file extension already comprises information on the data format. In the alternative, the CSD may comprise further information on the data format, such as at least one quality value.
determining the compatibility 235 of the data format of the data that is to be copied with the type of the second entity. As is evident, this determination 235 requires the information from the previous two steps. Depending on the embodiment, it is possible either to not copy such data that is incompatible with the second entity 120 (not shown), or to convert 240 the data that is to be copied, and copying the converted data. Moreover, information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied may be stored, as discussed.
When data is converted, the embodiment comprises
- determining that the data format is incompatible with the set of valid data formats for the second entity,
- converting the data that is to be copied to converted data such that the data format of the converted data belongs to the set of valid data formats for the second entity (i.e. the format is compatible with the type of the second entity), and
- copying, from the first entity to the second entity, directly or indirectly, the converted data.
The set of valid data format for the second entity 120 may be determined using information regarding the second entity 120. For example, the configuration database 300 may comprise information on the operating system of the second entity 120, and the information of the OS may be used to determine the set of valid formats. In the alternative, the configuration database itself may comprise, in association with the second entity, information indicative of the set of valid data formats for the second entity, or the set of valid data formats for the second entity.
In the embodiment it is determined that that the data format is incompatible with the set of valid data formats for the second entity, since the converting 240 takes place only if the format is incompatible. The determination of the incompatibility of the data format comprises
- accessing the configuration database 300,
- receiving, from the configuration database 300, information indicative of the set of valid data formats for the second entity 120,
- accessing the configuration database 300 or another database with the information indicative of the set of valid data formats for the second entity 120, - receiving, from a database (i.e. the configuration database 300 or the other database), a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
Preferably, the set of valid data formats for the second entity is received directly from the configuration database. The corresponding embodiment comprises
- accessing the configuration database 300,
- receiving, from the configuration database 300, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity 120 does not comprise the data format of the data that is to be copied. Moreover, in this embodiment, the configuration database 300 comprises, in association with the second identity ID2 of the second entity 120, the set of valid data formats for the second entity.
Alternatively, or in addition, the set of valid data formats for the second entity 120 may be determined from the second entity itself. Some entities are capable of providing information on valid data formats. In this case, the set of valid data formats may be received from the second entity. A corresponding embodiment comprises:
- requesting, from the second entity, information indicative of the set of valid data formats for the second entity,
- receiving information indicative of the set of valid data formats for the second entity. The information indicative of the set of valid data formats may e.g. comprise or consist of the set of valid data formats. The information indicative of the set of valid data formats may be received from the second entity. The set of valid data formats for the second entity may be determined e.g. by using a database and the information indicative of the set of valid data formats, and
- determining the set of valid data formats for the second entity using the information indicative of the set of valid data formats. As is clear, the information indicative of the set of valid data formats may comprise or consist of the set of valid data formats. For example, the media transfer protocol (MTP), designed for the Windows® operating system, is capable of providing information identifying the specific capabilities of device(s) (i.e. entities) with respect to file formats and functionality. Thus, e.g. the MTP or another protocol may be used in said determining the set of valid data formats using the information indicative of the set of valid data formats. The protocol may provide this information. The set of valid data formats may be stored in the configuration database. More precisely, the set of valid data formats may be stored in the each such record of the configuration database, wherein the aforementioned second entity is the second entity of the record. Furthermore, an embodiment comprises determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
Still further, it is possible to convert 240 the data even if it is compatible with the second entity 120, but the data is not in a preferred format. This can also be achieved by setting, as the set of valid data formats for the second entity, only the preferred format. Moreover, the set of valid data formats for the second entity may be an ordered list of valid formats, but the first format may be the preferable one in the sense that if conversion is performed, the data is converted such that the format of the converted data is the first format listed in the set of valid data formats for the second entity. The corresponding embodiments do not comprise determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied. However, the corresponding embodiment comprises determining that the data format of the data that is to be copied is not equal to a preferred data format. The preferred data format may be comprised by the set of valid data formats for the second entity. As discussed, the set of valid data formats for the second entity may be an ordered list, and the preferred data format may be the first item of the list. Naturally, the preferably format could be the last item of the list. What is important is that the flow may be enabled between multiple sources and targets, wherein no special software need to be installed. The method, as described, uses only regular protocols in communicating with the various entities. Naturally, the computer program enabling the flow itself has to be installed in a computer, and this computer may be, but not necessarily is, the first entity or the second entity.
In a preferred embodiment, the data transfer in indirect (Figs. 1 c and 1 d) such that the method steps are performed in the performer 200 (e.g. a computer), through which the data flows from the first entity 1 10 to the second entity 120. This embodiment comprises
- determining the presence of the first entity 1 10 and the second entity 120,
- determining the capability of the first entity 1 10 in sending data,
- determining the capability of the second entity 120 in receiving data, - requesting, from the first entity 1 10, the data that is to be copied,
- receiving, from the first entity 1 10, the data that is to be copied,
- optionally, converting the received data to converted data, and
- sending, to the second entity 120, at least one of (i) the received data and (ii) the converted data.
In this embodiment, the method steps are performed by a performer 200 that is neither the first entity 1 10 nor the second entity 120.
In a preferred embodiment, at least one of the first entity 1 10 and the second entity 120 is passive. Here an entity is defined as passive, provided that the passive entity cannot perform at least one of
- comparing a first content specific descriptor with a second content specific descriptor, and
- converting data to other format.
Typically, a passive entity cannot perform either of these tasks.
In addition or alternatively, a passive device does not provide information directly indicating that some files have been changed and/or added to the passive device. For a passive device, such information can only be found by comparing the present files to previously collected data. For example, file name, file size, and modification time, can be used to determine whether this files has been added and/or modified after last copying event.
Preferably at least the second entity 120 is passive. More preferably, both the first entity 1 10 and the second entity 120 are a passive entities.
In an embodiment, only such files are copied from the first entity 1 10 to the second entity 120, of which class belong to a set of transferable classes. Thus, transferable data refers to data that belongs to such a class that belong to a set of transferable classes. This further decreases the need for data transfer and/or the data storage needs for different entities. The corresponding embodiment comprises
- determining, using the configuration database 300, a set comprising at least one transferable data class,
- determining the class of the data that is to be copied from the first entity to the second entity; this may be determined (i) by determining the class of the data that has been changed in the first entity or (ii) by determining the class of the added new data to the first entity, and
- determining that the class of the data that is to be copied is comprised by the a set comprising at least one transferable data class.
It is further noted that even if data is converted, the converted data still belong to the same class. The data class may be e.g. one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general.
For example the set comprising at least one transferable data class may consist of the classes audio, video, and image. Thereby data flow for only audio, video, and image files from the first entity to the second entity would be enabled, since only the classes audio, video and image are comprised by the a set comprising at least one transferable data class. Correspondingly, the configuration database may comprise, in association with the identity ID1 of the first entity 1 10, the set of at least one transferable data class.
In an embodiment, information indicative of the time when the data transfer from the first entity 1 10 to the second entity 120 occurred the last time is stored in a database. Preferably it is stored in the configuration database, e.g. as the log information or in connection with the log information, as discussed above. This embodiment comprises
- determining a time-value indicative of the time at which the copying from the first entity 1 10 to the second entity 120 occurred, and
- storing, in association with the identity ID1 of the first entity 1 10, the identity ID2 of the second entity 120, and the indicator of direction INDd, the time-value; preferably storing the time-value to the configuration database 300. As discussed above, a log file may be associated or have been associated, in the configuration database 300, with the identity ID1 of the first entity 1 10, the identity ID2 of the second entity 120, and the indicator of direction INDd. Alternatively to storing to the configuration database, the time-value can be stored in the log file. This embodiment comprises
- storing, in a log file, the time-value, wherein the log file has been associated with the identity ID1 of the first entity 1 10, the identity ID2 of the second entity 120, and the indicator of direction INDd in the configuration database 300. This time-value can be used for determining whether some data should be copied or not. An embodiment comprises
- determining a first time-value indicative of the time of latest amendment of or addition to the data in the first entity 1 10,
- determining, using the configuration database 300 and optionally a log file, a second time-value indicative of the time of latest copy made from the first entity 1 10 to the second entity 120, and
- determining, using the first time value and the second time value, that the time of latest amendment of or addition to the data in the first entity 1 10 has been later than the time of latest copy made from the first entity 1 10 to the second entity 120.
The second time time-value may be determined directly from the configuration database 300, or through a pointer to a log file, wherein the log file comprises the second time-value. The first time-value can be determined e.g. by
- associating a name with the data that is to be copied, and - determining a first time-value indicative of the time of latest amendment of or addition to the data using the name. The name may be e.g. the name of a file comprising the data. In the method, identities of different entities are used. However, such identities are typically not known in advance. The identity may be generated e.g. when an entity is connected to the another entity, through the configuration database 300, the first time. An embodiment of the method comprises
- detecting the formation of a connection to an entity, such as the first entity 1 10 or the second entity 120,
- forming an identity (ID1 , ID2) for the entity; and
- storing the formed identity in to a database. An embodiment comprises,
- receiving, over an interface a first identity ID1 associated with a first entity
- receiving, over an interface an indication that the first entity should be associated with a second entity,
- forming a second identity ID2 for the second entity;
- associating the first identity ID1 with the second identity ID2, and
- storing the first identity ID1 in association with the second identity ID2 in the configuration database.
In addition to the identities, a direction indicator INDd may be stored.
In case, after detecting the formation of a connection to an entity, or after forming the identity, the performer notices that the entity is already known, and being coupled with another entity, i.e. the corresponding identity has already been stored in the configuration database as a first entity or a second entity, the identity needs not be stored in the database. In this case, the Flow determines a connection between the device, which triggers the flow, as indicated above, and in Fig. 3c.
Since the performer 200 is always an entity, at least the identity of the performer is known. Therefore, when the presence of an entity is detected, and the corresponding identity is formed, two identities are available, of which one may be the identity of the performer. Preferably the identity is a unique identity. The identities may be stored in the configuration database 300. However, the configuration database requires also the value for the direction indicator INDd, which may be later received over an interface. Moreover, the service type indicator may be obtained at the same time the presence of an entity is detected. The service type indicator may be stored in the database in association with the formed identity.
As indicated above, data flow can be enabled from a first entity 1 10 to a second entity 120. Furthermore, further data flow can be enabled in a similar way from the second entity 120 to another entity. In case the second entity is a service (such as a virtual hard drive like Google drive, or Skydrive), recognized by at least two computers, data flow in a large system can be formed (from camera to laptop; further to virtual drive; further to a table top computer; and further to a physical hard drive.) In each pair, the class of data that should flow can be determined, and, optionally, only part of the data copied. In case two computers are used in the dataflow, it is possible that each computer has its own configuration database, and own program configured to perform the flow. Thus, in the further data flow, another configuration database may be needed (cf. above, wherein the laptop has a first configuration database, and the table top computer has a second configuration database). A corresponding method comprises
- determining, using the configuration database or another configuration database, an identity of another entity to which data is to be copied, - determining the presence of a connection that enables direct or indirect data transfer from the second entity to the other entity,
- detecting the data that is to be copied from the second entity to the other entity,
- detecting the existence of a duplicate in the other entity,
- optionally converting the data that is to be copied to a conversion thereof, and
- copying, from the second entity to the other entity, directly or indirectly, one of
o the data that is to be copied (cf. ref 250),
o (ii) the conversion thereof (i.e. the converted data; cf. ref. 252), o (iiia) data that is substantially similar to the data that is to be copied (cf. ref 250, wherein the "data" is not the data that is to be copied), or
o (iiib) a conversion thereof (of the data that is substantially similar to the data that is to be copied; cf. ref 252, wherein the "data" is not the data that is to be copied).
In an embodiment, the information content between the first entity 1 10 and the second entity 120 is also synchronized. Synchronization here refers to the case, wherein the removal of a file in the first entity 1 10 automatically causes the removal of the same or substantially similar file from the second entity 120. This embodiment comprises
- receiving, from the configuration database 300, an indicator indicating that some data should be removed,
- detecting the absence, from the first entity 1 10, of data that is to be removed
- detecting the existence of a duplicate of the data that is to be removed in the second entity 120,
- removing the duplicate from the second entity.
The data that is removed is a duplicate of the data that is to be removed. The aforementioned correspondence table 400 can be used to determine the absence of the data that is to be removed. For example, if a file is listed in the correspondence table 400 as a source file, but the file is missing from the first entity, absence of the data that is to be removed can be determined. Moreover, after the removal, the corresponding object pair can be removed from the correspondence table. The corresponding object pair is the object pair, of which first part corresponds to the data that is to be removed. Some data may also be removed from the first entity. This is the case, e.g. when a two-directional data flow is enabled between the entities. In such a case, the absence of some data, from the second entity, may imply the removal of the corresponding duplicate from the second entity, and further imply a need for removing a duplicate from the first entity. The indicator indicating that some data should be removed, may be comprised in the direction indicator INDd. Here, as above, the term "duplicate" refers to the same data or data that is substantially similar. The substantial similarity can be determined using the content specific descriptor (CSD), as discussed above. Preferably the absence of the duplicate is determined using the correspondence table; moreover, during the generation of the table, at least one CSD is used, as discussed above.
As is clear, the method can be performed in or by a device. Therefore a device that is arranged to perform the method as described above, has been disclosed. Preferably the device comprises a computer or is a computer. Therefore a computer that is arranged to perform the method as described above, has been disclosed. As is clear, the method may be implemented with a computer program comprising computer program code. The computer program may be supplied as a computer program product. The computer program code of the computer program product may be embodied on a computer readable medium. The computer program code of the computer program product may be embodied on a non-transitory computer readable medium. The computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- access a configuration database,
- receive an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detect at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detect data that is to be copied from the first entity to the second entity, - detect, using at least one content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copy, to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof;
whereby the computer program code is arranged to provide a data flow from the first entity to the second entity. Pairing of entities e.g. for the configuration database
It has been observed, that in the context of the described method, the entities are preferably paired together with an intuitive user interface. However, as is evident to a person skilled in the art, such a method for pairing entities can be used also with other methods.
In particular the method is intuitive for pairing two entities, of which a first entity is arranged to send or receive data, and a second entity is, respectively, arranged to receive or send data. The pairing becomes even more intuitive particularly in the case, wherein the first entity is arranged to send data, and a second entity is arranged to receive data. Referring to Fig. 5a, the method is performed by a performer 200, such as a computer. Typically such a computer comprises a display device 500 and a pointer device 550 such as a mouse. The pointer device comprises a selector 560, such as a selection button 560. The display 500 is arranged to display information. The display 500 is arranged to display, at various locations, several icons 510, and at some location LOCp, a pointer 520. Specifically, the display 500 is arranged to display, at a first location LOC1 , a first icon 510a representing the first entity 1 10. Moreover, the display 500 is arranged to display, at a second location LOC2, a second icon 510b representing the second entity 120. By moving the pointer device 550, a user may change the location LOCp, wherein the pointer 520 is being displayed.
The entities can be dragged and dropped; the first entity may be dragged and dropped onto the second entity, or the second entity may be dragged and dropped onto the first entity. Preferably, the direction of the dragging determines the direction of data flow; however, the direction indication may be assigned a value later through another user interface.
Correspondingly, a method (M1 ) for pairing two entities, wherein a first entity is arranged to send data or receive data; a second entity is, respectively, arranged to receive data or send data; a first identity ID1 is associated with the first entity; and a second identity ID2 is associated with the second entity, comprises
- displaying, at a first location LOC1 , a first icon 510a associated with the first entity,
- displaying at a second location LOC2, a second icon 510b associated with the second entity,
- detecting a pointer 520 at the first location LOC1 (cf. Fig. 5b),
- detecting a first selection made using a pointer device 550, preferably by detecting a selection made by pressing a selection button 560 of the pointer device 550,
- detecting a movement made using the pointer device 550 to move at least the pointer 520 (as depicted by the arrow 530 of Fig. 5b), and
- displaying the pointer 520 and/or the first icon 510a at another location corresponding to said movement.
The method (M1 ) further comprises, after detecting the pointer 520 at the first location LOC1 ,
- detecting the pointer 520 and/or the first icon 510a at the second location LOC2 (Fig. 5c),
- detecting a second selection made using the pointer device 550, preferably by detecting a selection made by releasing the selection button 560 of the pointer device 550,
- associating the identity ID1 of the first entity with the identity ID2 of the second entity, and
- storing the first identity in association with the second identity in a database.
In the context of the flow, however, it has been defined that the first entity 1 10 is arranged to send data, and the second entity 120 is arranged to receive data. Thus, in the flow context, a method (M2) for pairing two entities, wherein a first entity 1 10 is arranged to send data; a second entity 120 is arranged to receive data; a first identity ID1 is associated with the first entity 1 10; a second identity ID2 is associated with the second entity 120 comprises
- (i a) displaying, at a first location LOC1 , a first icon 510a associated with the first entity 1 10, and (i b) at a second location LOC2, a second icon 510b associated with the second entity 120; OR (ii a) displaying, at a first location LOC1 , a first icon 510b associated with the second entity 120, and (ii b) at a second location LOC2, a second icon 510a associated with the first entity 1 10; cf. Fig. 5b,
- detecting a pointer 520 at the first location LOC1 ,
- detecting a first selection made using a pointer device 550, preferably by detecting a selection made by pressing a selection button 560 of the pointer device. It is noted, that with this terminology, the "first" icon is displayed at "the first location"; but the first icon can be associated with either the first or the second entity. Before the selection, it is assumed that a user moves the pointer device 550 such that the pointer 520 moves to the first location LOC1 . Thereafter the pointer 520 is detected at the first location LOC1 . Moreover, the first selection is detected, while the pointer is located at the first location LOC1 . As indicated above, at the first location LOC1 an icon, associated either with the first entity or the second entity, is shown. The first selection may be e.g. pressing the selection button 560 of the pointer device 550. Such a selection is detected.
Thereafter, a user moves the pointer device 550 to move at least the pointer 520, but preferably the pointer 520 and the first icon (510a, 510b) that was located at the first location LOC1 . The method comprises displaying the pointer (and optionally the first icon) at the new location. The user moves the pointer 520 (and the icon) to the second location LOC2 on the display, wherein the second icon (510b, 510a, respectively) is displayed. Thereafter, the user makes a second selection, e.g. by releasing the selection button 560 of the pointer device 550. The corresponding method, at the performer 200 side, further comprises
- detecting a movement made using the pointer device 550 to move at least the pointer 520, and
- displaying the pointer 520 and/or the first icon (510a, 510b) at another location corresponding to said movement. The detection and displaying are depicted by the arrow 530 in Fig. 5b. The method (M2) further comprises, after detecting the pointer 520 at the first location LOC1
- detecting the pointer 520 and/or the first icon (510a, 510b) at the second location LOC2; cf. Fig. 5c,
- detecting a second selection made using the pointer device 550, preferably by detecting a selection made by releasing the selection button 560 of the pointer device 560,
- associating the identity of the first entity 1 10 with the identity of the second entity 120, and
- storing the first identity in association with the second identity in a database.
Preferably the configuration database 300 is used as the database, especially, when the aforementioned method for pairing two entities is used in combination with the method for forming a data flow between the entities.
Preferably, the direction indicator INDd as assigned a value directly by said method, from the direction of the movement of the pointer. In the general method (M1 , cf. above) this means that the first entity is arranged to send data and the second entity is arranged to receive data; whereby the method comprises receiving an indicator indicating the direction of data flow, by said detecting the first selection and thereafter detecting the second selection. And the method further comprises storing the first identity of the first entity and/or the identity of the second entity in association with the indicator indicating the direction of data flow in a database. As the performer 200 itself may be the first or the second entity, it may suffice to store the identity of one entity only. Thus, at least by default, such a pairing may imply that all classes of data should be copied only from the first device to the second device. These default setting could be amended later, as will be discussed.
In the flow context (method M2, cf. above), the direction indicator INDd is assigned a value such that the source (first entity 1 10) is the entity that is associated with the icon displayed at the first location LOC1 , and the target (second entity 120) is the entity that is associated with the icon displayed at the second location LOC2. The corresponding method comprises displaying, at the first location LOC1 , a first icon 510a associated with the first entity 1 10, and (i b) at a second location LOC2, a second icon 510b associated with the second entity 120, whereby
the detection of the pointer 520 and/or the first icon 510a at the second location LOC2, after the detection of the pointer 520 at the first location LOC1 , forms an indicator INDd indicating the direction of data flow from the first entity to the second entity, and
storing the first identity ID1 in association with the second identity ID2 and the indicator INDd in the database, preferably the configuration database 300.
However, the direction indicator, INDd, can alternatively or in addition be received over another user interface. Figures 6a to 6d show examples of such interfaces. Figure 6a shows images of the two entities between which a data flow is formed. In the figure, and preferably in such a user interface, an image 610 of the source entity, i.e. the first entity 1 10 is shown on the left, while an image 620 of the target entity, i.e. the second entity 120 is shown on the right. Thus, data flows primarily from left to right. In addition, the figure 6a shows images 630 of the classes of data that may be copied between the devices. In this case the classes a contact, an event, a message, audio, image, and video are shown, in this order from top to bottom. The arrows 640, pointing from left to right, are displayed on the user interface for transferable data classes from the first entity 1 10 to the second entity 120. For example, in the case according to Fig. 6a, contacts, audio files, image files, and video files are copied from the first entity 1 10 to the second entity 120. The arrows 650, pointing from right to left, are displayed on the user interface for transferable data classes from the second 120 entity to the first entity 1 10. As graphically visualized, contacts and videos are copied from the second entity 120 to the first entity 1 10.
The user may enable (a disabled) arrow, by moving a pointer to a location of an arrow, and by making a selection with the selection button 560 of a pointer device. Enabling (or disabling) an arrow implies enabling (or disabling respectively) the data flow for the corresponding data class and the corresponding direction. For example, by moving a pointer to LOCA1 and by making a selection, an arrow would be displayed at the location LOCA1 , and the arrow would indicate, in this case, the enablement of data flow, from the first entity to the second entity, for the data class "event". For example, by moving a pointer to LOCA2 and by making a selection, the arrow would no longer be displayed at the location LOCA2, and the absence of the arrow would indicate, in this case, the disablement of data flow, from the second entity to the first entity, for the data class "video".
This embodiment comprises
- receiving, over an interface, at least an indicator INDd indicating the direction of data flow,
- receiving, over an interface, the identity ID1 of the first entity 1 10 and/or the identity ID2 of the second entity 120, and
- storing the first identity ID1 of the first entity 1 10 and/or the identity ID2 of the second entity 120 in association with the indicator INDd in the database, preferably in the configuration database 300.
As shown in the figure 6a, the indication of the classes that are to be copied can also be received over an interface. The method comprises
- receiving, over an interface, a set comprising at least one transferable data class,
- receiving, over an interface, the identity ID1 of the first entity 1 10,
- storing the identity ID1 of the first entity 1 10 in association with the set comprising at least one transferable data class to the database, preferably to the configuration database 300.
In particular, to enable a data flow in a prescribed direction, for a prescribed data class, a pointer is moved to an area LOCA1 that is in between a boundary indicator 680 and an entity indicator 610, 620. The boundary indicator 680 defines a boundary between the entities, represented by their images 610, 620. Selections made in between the boundary indicator 680 and the image 610 of the first entity indicate selections for the first entity. Selections made in between the boundary indicator 680 and the image 620 of the first entity indicate selections for the second entity. The boundary indicator 680 may be e.g. a flow indicator 660 (Figs. 6a, 6b, and 6d), or it may be a class indicator 630 (Fig. 6c). Preferably, at the location LOCA1 the contrast is low, i.e. nothing is displayed, when a user is enabling a previously disabled data flow.
Moreover, a selection for a first (or second) entity may be indicative of the first (or the second) entity being a target, while the other entity being the source. This can be visually shown by the direction of an arrow, such as the arrow 640 or 650. For example referring to Figs. 6a to 6c, a direction indicator (640, 650) may directed from the boundary indicator 680 towards to an entity indicator 610, 620. Alternatively, a direction indicator (640, 650) may directed from an entity indicator 610, 620 towards the boundary indicator 680 (Fig. 6d)
Thus, an embodiment comprises
- displaying
o at a first location, an image 610 of a first entity,
o at a second location, an image 620 of a second entity, and
o at a third location, a boundary indicator 680, wherein the third location is arranged in between the first location and the second location,
- detecting a selection made by a pointer device,
- determining the location of a pointer,
- determining a direction indicator INDd indicative of the direction of data flow, and a data class; based on the first, second, and third location, as well as the location of the pointer, and
- storing, in a database, an identity of the first entity, an identity of the second entity, the data class, and the direction indicator INDd indicative of the direction from the second entity to the first entity.
Determining the direction indicator INDd indicative of the direction of data flow is determined by
(A,i; when a direction indicator 640, 650 will be directed from the boundary indicator 680 towards an entity indicator 610, 620; Figs. 6a to 6c)
- determining that, at the time the selection is made by the pointer device, the pointer is located in between the first location and the third location, and - determining the direction indicator INDd, such that data is to be flow from the second entity to the first entity, OR
(A,ii; when a direction indicator 640, 650 will be directed from an entity indicator 610, 620 towards the boundary indicator 680; Fig. 6d)
- determining that, at the time the selection is made by the pointer device, the pointer is located in between the first location and the third location, and
- determining the direction indicator INDd, such that data is to be flow from the first entity to the second entity, OR
(B, i; when a direction indicator 640, 650 will be directed from the boundary indicator 680 towards an entity indicator 610, 620; Figs. 6a to 6c)
- determining that, at the time the selection is made by the pointer device, the pointer is located in between the second location and the third location, and
- determining the direction indicator INDd, such that data is to be flow from the first entity to the second entity.
(B, ii; when a direction indicator 640, 650 will be directed from an entity indicator 610, 620 towards the boundary indicator 680; Fig. 6d)
- determining that, at the time the selection is made by the pointer device, the pointer is located in between the second location and the third location, and
- determining the direction indicator INDd, such that data is to be flow from the second entity to the first entity. Determining the data class is by determined by determining that at the time the selection is made by the pointer device, the pointer is located
- (a) in between the third location and the first or the second location; wherein at the third location also an image indicative of a data class is shown (cf. Fig. 6c),
- (b) in between a location wherein an image indicative of a data class is shown and the first or the second location (cf. Fig. 6b),
- (c) in between the third location and a location wherein an image indicative of a data class is shown (cf. Fig. 6a or 6d), or
- (d) at a location wherein an image indicative of a data class is shown (cf.
Figs. 6a, 6b, or 6d). Preferably, as indicated in Figs. 6a to 6d, multiple images of data classes are shown; at least one image for each data class (Fig. 6c), or two images for each data class (Figs. 6a, 6b, 6d). Still further, after detecting a selection made by a pointer device, a direction indicator (640, 650), such as an arrow (640, 650), may be displayed at the corresponding location, i.e. LOCA1 . This is why, in the above sentences (A, i; A, ii; B, i; and B, ii), the expressions "will be" is used. Preferably, both the flow indicator(s) 660 and separate class indicators 630 are shown in different locations (Figs. 6a and 6b). In this embodiment, the flow indicator 660 forms the boundary indicator 680.
Most preferably, as discussed, the second location is located to right from the first location. Alternatively preferably, the second location is located downwards from the first location. In principle, the images of the entities can be arbitrarily displayed on the user interface
Referring specifically to the embodiment of Fig. 6a, this embodiment comprises
- displaying
o at a first location, an image 610 of a first entity,
o at a second location, an image 620 of a second entity,
o at a third location, a flow indicator 660, wherein the third location is arranged in between the first location and the second location, and
o at a fourth location, an image indicative of a data class
- detecting a selection made by a pointer device,
- determining the location of a pointer (e.g. LOCA1 ),
- determining a direction indicator INDd indicative of the direction of data flow, such that
o (A) INDd is indicative of a data flow from the second entity to the first entity if the pointer is located in between the first location and the third location when the selection is made, and o (B) INDd is indicative of a data flow from the first entity to the second entity if the pointer is located in between the second location and the third location when the selection is made,
- determining a data class such that the pointer is located in between the fourth location and the third location when the selection is made, and at the fourth location the image indicative of the data class is displayed, and
- storing, in a database, an identity of the first entity, an identity of the second entity, the data class, and the direction indicator INDd indicative of the direction from the second entity to the first entity.
In this way, in addition to the default data flow direction from the first entity to the second entity, indication of dataflow also from the second entity to the first entity can be received via a user interface. Preferably, before the detecting the selection, at the location LOCA1 the contrast is low, i.e. nothing is displayed, when a user is enabling data flow. Still further, after detecting a selection made by a pointer device, a direction indicator (640, 650), such as an arrow (640, 650), may be displayed at the corresponding location, i.e. LOCAL
Moreover, the flow from the first entity to the second entity may be disabled by making a selection at a location, wherein a direction indicator 640 indicative of flow from the first entity to the second entity is displayed (Figs. 6a, 6b, and 6c). Moreover, the flow from the second entity to the first entity may be disabled by making a selection at a location, wherein a direction indicator 650 indicative of flow from the second entity to the first entity is displayed (Figs. 6a, 6b, and 6c).
Thus, an embodiment comprises
- displaying
o at a first location, an image 610 of a first entity,
o at a second location, an image 620 of a second entity,
o at a third location, a boundary indicator 680, wherein the third location is arranged in between the first location and the second location, o at a fourth location, direction indicator (640, 650) indicative of flow of data of a data class from the first entity to the second entity,
- locating a pointer at the fourth location,
- detecting a selection made by a pointer device,
- determining, using the fourth location, a first entity, a second entity, a direction indicator, and a data class, and
- removing, from a database, a record indicative of file transfer
o from the first entity,
o to the second entity, and
o of the data class.
The method may further comprise turning off the direction indicator at the fourth location. Moreover, the data class may be determined by determining that the fourth location (i.e. that of the pointer at the time the selection is made; and also the location, wherein the direction indicator is shown) is
- (a) in between the third location and the first or the second location; wherein at the third location also an image indicative of a data class is shown (cf. Fig. 6c; e.g. direction indicators 640 and 650),
- (b) in between a location wherein an image indicative of a data class is shown and the first or the second location (cf. Fig. 6b, e.g. direction indicators 640 and 650), or
- (c) in between the third location and a location wherein an image indicative of a data class is shown (cf. Fig. 6a, e.g. direction indicators
640 and 650).
Moreover, the flow from the first entity to the second entity may be disabled as discussed above. Referring specifically to the embodiment of Fig. 6a, this embodiment comprises
- displaying
o at a first location, an image 610 of a first entity,
o at a second location, an image 620 of a second entity,
o at a third location, a flow indicator 660, wherein the third location is arranged in between the first location and the second location, o at a fourth location (e.g. LOCA2), direction indicator (640, 650), wherein the fourth location is arranged either in between the first location and the third location, or in between the second location and the third location,
o at a fifth location wherein the fifth location is arranged either in between the first location and the fourth location, or in between the second location and the fourth location, an image 630 of a class,
- locating a pointer at the fourth location,
- detecting a selection made by a pointer device,
- determining, a first entity, a second entity, a direction indicator, and a data class, such that
o (C) when the fourth location is arranged in between the first location and the third location the selection is indicative of the first entity, the second entity, and a direction from the second entity to the first entity, and
o (D) when the fourth location is arranged in between the second location and the third location the selection is indicative of the first entity, the second entity, and a direction from the first entity to the second entity, and
- determined the data class such that the fourth location is in between the third location and the fifth location, and
- removing, from a database, a record indicative of file transfer
o from the first entity,
o to the second entity, and
o of the data class.
The method may further comprise turning off the direction indicator at the fourth location. As is clear, the method can be performed in or by a device. Therefore a device that is arranged to perform the method as described above, has been disclosed. Preferably the device comprises a computer or is a computer. Therefore a computer that is arranged to perform the method as described above, has been disclosed. As is clear, the method may be implemented with a computer program comprising computer program code. The computer program may be supplied as a computer program product. The computer program code of the computer program product may be embodied on a computer readable medium. The computer program code of the computer program product may be embodied on a non-transitory computer readable medium. The computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- display, at a first location, a first icon associated with a first entity arranged to send or receive data,
- display at a second location, a second icon associated with a second entity arranged to, respectively, receive or send data,
- detect a pointer at the first location,
- detect a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detect a movement made using the pointer device to move at least one of the pointer and the first icon,
- display the pointer and/or the first icon at another location corresponding to said movement, wherein
the computer program code is further arranged to cause the computer to, after detecting the pointer at the first location,
- detect the pointer and/or the first icon at the second location,
- detect a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device, and
- store a first identity, associated with the first entity, in association with a second identity, associated with the second entity, in a database. Moreover, the computer program code may be arranged to perform a method as disclosed above.
The following examples 1 .1 to 1 .36 illustrate some aspects of the data flow 1 .1 . A method for providing a data flow from a first entity to a second entity, the method comprising - accessing a configuration database,
- receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting data that is to be copied from the first entity to the second entity,
- detecting, using at least one content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copying from the first entity to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof;
whereby a data flow is provided from the first entity to the second entity. 1 .2. The method of example 1 .1 , comprising
- deriving the content specific descriptor of the data from the content of the data that is to be copied.
1 .3. The method of example 1 .1 or 1 .2, wherein said detecting, using at least one content specific descriptor of the data to be copied, the absence of a duplicate from the second entity comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied,
- locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- detecting, using the similarity value, the absence of a duplicate from the second entity.
1 .4. The method of example 1 .3, wherein
- the first set further comprises
o at least a first format specific descriptor for the data that is to be copied and/or o at least a first file specific descriptor for the data that is to be copied and
- the second set further comprises
o at least a second format specific descriptor for the second data and/or
o at least a second file specific descriptor for the second data.
1 .5. The method of any of the examples 1 .1 to 1 .4, comprising
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity.
1 .6. A method for providing a data flow from a first entity to a second entity, the method comprising
- accessing a configuration database,
- receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting the data that is to be copied from the first entity to the second entity,
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity, and
- copying, from the first entity to the second entity, directly or indirectly, the data that is to be copied, a conversion thereof, or data or a conversion of data that is substantially similar to the data that is to be copied;
whereby a data flow is provided from the first entity to the second entity such that the capability of the second entity is taken into account.
1 .7. The method of example 1 .5 or 1 .6, wherein said determining the compatibility of the data format of the data that is to be copied with the second entity comprises - determining that the data format is incompatible with the set of valid data formats for the second entity; e.g. by determining that the data format of the data that is to be copied does not belong to the set of valid data formats for the second entity,
and the method comprises
- converting the data that is to be copied to said conversion such that the data format of the conversion belongs to the set of valid data formats for the second entity,
- copying, from the first entity to the second entity, directly or indirectly, at least the conversion of the data that is to be copied.
1 .8. The method of the example 1 .7, comprising
- storing in a database information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied; preferably storing the information indicative of identity of the first entity and an identity of the data that is to be copied in the correspondence table,
- using the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied to locate data that is substantially similar to the data that is to be copied, and
- copying, to the second entity, data that is substantially similar to the data that is to be copied; i.e. the data from which the data that is to be copied has been converted or a conversion of the data from which the data that is to be copied has been converted. 1 .9. The method of the example 1 .7 or 1 .8, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- requesting, from the second entity, information indicative of the set of valid data formats for the second entity,
- receiving information indicative of the set of valid data formats for the second entity,
- determining the set of valid data formats using the information indicative of the set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied. 1 .10. The method of any of the examples 1 .7 to 1 .9, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the configuration database,
- receiving, from the configuration database, information indicative of the set of valid data formats for the second entity,
- accessing the configuration database or another database with the information indicative of the set of valid data formats for the second entity,
- receiving, from a database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
1 .1 1 . The method of example 1 .10, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the configuration database,
- receiving, from the configuration database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
1 .12. The method of any of the examples 1 .1 to 1 .1 1 , comprising
- using a correspondence table to detect a file comprising the data that is to be copied from the first entity to the second entity,
- detecting that the file has been modified after last copying event, and
- copying, from the first entity to the second entity, directly or indirectly, the file or a conversion thereof. 1 .13. The method of any of the examples 1 .1 to 1 .12, comprising
- associating a first identity for the data that is to be copied from the first entity to the second entity,
- detecting the data that is to be copied from the first entity to the second entity, and
after said detecting, - determining the existence or absence of a duplicate of the data that is to be copied, at or from the second entity,
- provided that the duplicate is absent, copying, to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied; to make a duplicate of the data that is to be copied to the second entity,
- associating a second identity to the duplicate,
- forming an object pair comprising the first identity and the second identity, and
- storing said object pair to a correspondence table.
The object pair may be formed such that it further comprises at least one content specific descriptor for the data that is to be copied.
1 .14. The method of any of the examples 1 .1 to 1 .13, wherein the first or the second entity is or comprises
- a device such as a computer, a portable memory device, a camera, a video recorder, an audio recorder, a mobile phone, an audio player, a video player, a viewer for digital images, a GPS-logger, and a navigator, or
- a virtual device, such as a computer network accessible memory storage (e.g. Google drive, Skydrive, Dropbox, Cloud drive), a computer network accessible service (e.g. Flickr, Instagram), or a computer network accessible social network (e.g. Facebook, Twitter).
1 .15. The method of any of the examples 1 .1 to 1 .14, wherein
- the presence of a connection that enables direct data transfer from the first entity to the second entity is determined by
• determining the presence of the first entity and the second entity,
• determining the capability of the first entity in sending data, and
• determining the capability of the second entity in receiving data; or
- the presence of a connection that enables indirect data transfer from the first entity to the second entity is determined by • deternnining the presence of the first entity, the second entity, and a third entity,
• deternnining the capability of the first entity in sending data,
• deternnining the capability of the third entity in receiving data,
· deternnining the capability of the third entity in sending data, and
• deternnining the capability of the second entity in receiving data.
1 .16. The method of any of the examples 1 .1 to 1 .15 wherein
- the first entity or the second entity is a passive entity.
1 .17. The method of any of the examples 1 .1 to 1 .16, comprising
- determining the presence of the first entity and the second entity,
- determining the capability of the first entity in sending data,
- determining the capability of the second entity in receiving data,
- requesting, from the first entity, the data that is to be copied,
- receiving, from the first entity, the data that is to be copied, and
- sending, to the second entity, the received data and/or a conversion thereof. 1 .18. The method of example 1 .17, wherein
- the first entity and the second entity are a passive entities.
1 .19. The method of any of the examples 1 .1 to 1 .18 comprising
- determining, using the configuration database, a set comprising at least one transferable data class,
- determining the class of the data that is to be copied from the first entity to the second entity, and
- determining that the class of the data that is to be copied is comprised by the a set comprising at least one transferable data class.
1 .20. The method of example 1 .19 wherein
- the data class is one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general. 1 .21 . The method of any of the examples 1 .1 to 1 .20, comprising - (i) determining a time-value indicative of the time at which the copying from the first entity to the second entity occurred; and
- (iia) storing, in association with the identity of the first entity, the identity of the second entity, and the indicator of direction, the time-value in the configuration database or
- (iib) storing, in a log file, the time-value, wherein the log file has been associated with the identity of the first entity, the identity of the second entity, and the indicator of direction in the configuration database.
1 .22. The method of example 1 .21 wherein said detecting the absence of a duplicate comprises
- determining a first time-value indicative of the time of latest amendment of or addition to the data in the first entity,
- determining, using the configuration database and optionally a log file, a second time-value indicative of the time of latest copy made from the first entity to the second entity, and
- determining, using the first time value and the second time value, that the time of latest amendment of or addition to the data has been later than the time of latest copy made from the first entity to the second entity.
1 .23. The method of any of the examples 1 .1 to 1 .22, comprising
- detecting the formation of a connection to an entity, such as the first entity or the second entity,
- forming an identity for the entity; and
- storing the formed identity in to a database.
1 .24. The method of any of the examples 1 .1 to 1 .23, comprising
- determining, using the configuration database or another configuration database, an identity of another entity to which data is to be copied, - determining the presence of a connection that enables direct or indirect data transfer from the second entity to the other entity,
- detecting the data that is to be copied from the second entity to the other entity,
- detecting the existence of a duplicate in the other entity, and
- copying, to the other entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied.
1 .25. The method of any of the examples 1 .1 to 1 .24, comprising
- receiving, from the configuration database, an indicator indicating that some data should be removed,
- detecting the absence, from the first entity, of data that is to be removed,
- detecting the existence of a duplicate of the data that is to be removed in the second entity,
- removing from the second entity the duplicate.
1 .26. The method of any of the examples 1 .1 to 1 .25, comprising
- receiving, from the configuration database, an indicator indicating that some data should be removed,
- detecting the absence, from the second entity, of data that is to be removed,
- detecting the existence of a duplicate of the data that is to be removed in the first entity,
- removing from the first entity the duplicate.
1 .27. The method of any of the examples 1 .1 to 1 .26, further comprising the features of any of the examples 3.1 to 3.5 and/or the example 2.5 and/or the example 2.6. 1 .28. The method of any of the examples 1 .1 to 1 .27, comprising
- (i a) displaying, at a first location, a first icon associated with the first entity, and (i b) at a second location, a second icon associated with the second entity; OR (ii a) displaying, at a first location, a first icon associated with the second entity, and (ii b) at a second location, a second icon associated with the first entity,
- detecting a pointer at the first location,
- detecting a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detecting a movement made using the pointer device to move at least one of the pointer and the first icon, - displaying the pointer and/or the first icon at another location corresponding to said movement,
the method further comprising, after detecting the pointer at the first location,
- detecting the pointer and/or the first icon at the second location,
- detecting a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device,
- associating the identity of the first entity with the identity of the second entity, and
- storing the first identity in association with the second identity in the configuration database.
1 .29. The method of example 1 .28 comprising
- (i a) displaying, at the first location, a first icon associated with the first entity, and (i b) at the second location, a second icon associated with the second entity, whereby
- the detection of the pointer and or the first icon at the second location, after the detection of the pointer at the first location, forms an indicator indicating the direction of data flow from the first entity to the second entity, and
- storing the first identity in association with the second identity and the indicator in the configuration database.
1 .30. The method of the example 1 .28 or 1 .29 comprising
- receiving, over an interface, at least an indicator indicating the direction of data flow,
- receiving, over an interface, the identity of the first entity and/or the identity of the second entity, and
- storing the first identity of the first entity and/or the identity of the second entity in association with the indicator in the configuration database.
1 .31 . The method of any of the examples 1 .1 to 1 .30, comprising
- receiving, over an interface, a set comprising at least one transferable data class,
- receiving, over an interface, the identity of the first entity, - storing the identity of the first entity in association with the set comprising at least one transferable data class to the configuration database.
1 .32. A device, arranged to perform the method of any of the examples 1 .1 to 1 .31 .
1 .33. A computer, arranged to perform the method of any of the examples 1 .1 to 1 .31 . 1 .34. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- access a configuration database,
- receive an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detect at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detect data that is to be copied from the first entity to the second entity,
- detect, using at least one content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copy, to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof;
whereby the computer program code is arranged to provide a data flow from the first entity to the second entity.
1 .35. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 1 .1 to 1 .31 .
1 .36. A computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 1 .1 to 1 .31 .
The following examples 2.1 to 2.23 illustrate some aspects of pairing two entities, such as the entities of the data flow:
2.1 . A method for pairing two entities, wherein
- a first entity is arranged to send data or to receive data,
- a second entity is, respectively, arranged to receive data or to send data, - a first identity is associated with the first entity, and
- a second identity is associated with the second entity,
the method comprising
- displaying, at a first location, a first icon associated with the first entity,
- displaying at a second location, a second icon associated with the second entity,
- detecting a pointer at the first location,
- detecting a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detecting a movement made using the pointer device to move at least one of the pointer and the first icon,
- displaying the pointer and/or the first icon at another location corresponding to said movement,
the method further comprising, after detecting the pointer at the first location, - detecting the pointer and/or the first icon at the second location,
- detecting a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device,
- associating the identity of the first entity with the identity of the second entity, and
- storing the first identity in association with the second identity in a database.
2.2. The method of example 2.1 , wherein
- the first entity is arranged to send data and the second entity is arranged to receive data; whereby the method comprises - receiving an indicator indicating the direction of data flow from the first entity to the second entity, by said detecting the first selection and thereafter detecting the second selection.
In this way, the first entity is configured to send data and the second entity is configured to receive data by said detecting the first selection and thereafter detecting the second selection.
2.3. The method of the example 2.1 or 2.2, comprising
- receiving, over an interface, at least an indicator indicating the direction of data flow,
- receiving, over an interface, the identity of the first entity and/or the identity of the second entity, and
- storing the first identity of the first entity and/or the identity of the second entity in association with the indicator indicating the direction of data flow in the database or another database.
2.4. The method of any of the examples 2.1 to 2.3, comprising
- receiving, over an interface, a set comprising at least one transferable data class,
- receiving, over an interface, the identity of the first entity,
- storing the identity of the first entity in association with the set comprising at least one transferable data class to the database.
2.5. The method of any of the examples 2.1 to 2.4, comprising
- displaying
o at a first location, an image of a first entity,
o at a second location, an image of a second entity, and
o at a third location, a boundary indicator, wherein the third location is arranged in between the first location and the second location - detecting a selection made by a pointer device,
- determining the location of a pointer,
- determining based on the first, second, and third location, as well as the location of the pointer, a direction indicator indicative of the direction of data flow, and a data class, and storing in a database an identity of the first entity, an identity of the second entity, the data class, and the direction indicator indicative of the direction from the second entity to the first entity. 2.6. The method of any of the examples 2.1 to 2.5, comprising
- displaying
o at a first location, an image of a first entity,
o at a second location, an image of a second entity,
o at a third location, a boundary indicator, wherein the third location is arranged in between the first location and the second location, o at a fourth location, direction indicator, wherein the fourth location is arranged either in between the first location and the third location, or in between the second location and the third location,
- locating a pointer at the fourth location,
- detecting a selection made by a pointer device,
- determining using the fourth location: a first entity, a second entity, a direction indicator, and a data class, and
- removing, from a database, a record indicative of file transfer
o from the first entity,
o to the second entity, and
o of the data class.
2.7. The of any of the examples 2.1 to 2.6, further comprising
- accessing the database,
- receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting the data that is to be copied from the first entity to the second entity,
- detecting using at least one content specific descriptor of the data that is to be copied the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copying from the first entity to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied;
whereby a data flow is provided from the first entity to the second entity. 2.8. The method of the example 2.7, wherein said detecting, using at least one content specific descriptor of the data to be copied, the absence of a duplicate from the second entity comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied, - locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- detecting, using the similarity value, the absence of a duplicate from the second entity.
2.9. The method of example 2.8, wherein
- the first set further comprises
o at least a first format specific descriptor for the data that is to be copied and/or
o at least a first file specific descriptor for the data that is to be copied; and
- the second set further comprises
o at least a second format specific descriptor for the second data and/or
o at least a second file specific descriptor for the second data.
2.10. The method of any of the examples 2.7 to 2.9, comprising
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity. 2.1 1 . The method of any of the examples 2.1 to 2.10, further comprising
- accessing the database, - receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting the data that is to be copied from the first entity to the second entity,
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity, and
- copying from the first entity to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied;
whereby a data flow is provided from the first entity to the second entity such that the capability of the second entity is taken into account.
2.12. The method of example 2.10 or 2.1 1 , wherein said determining the compatibility of the data format of the data that is to be copied with the second entity comprises
- determining that the data format is incompatible with the set of valid data formats for the second entity,
and the method comprises
- converting the data that is to be copied to said conversion such that the data format of the conversion belongs to the set of valid data formats for the second entity,
- copying from the first entity to the second entity, directly or indirectly, the conversion of the data that is to be copied.
2.13. The method of example 2.12, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- requesting, from the second entity, information indicative of the set of valid data formats for the second entity, - receiving from the second entity, information indicative of the set of valid data formats for the second entity, and
- determining the set of valid data formats using the information indicative of the set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied..
2.14. The method of example 2.12 or 2.13, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the database,
- receiving, from the database, information indicative of the set of valid data formats for the second entity,
- accessing the database or another database with the information indicative of the set of valid data formats for the second entity,
- receiving, from a database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
2.15. The method of example 2.14, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the database,
- receiving, from the database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied. 2.16. The method of any of the examples 2.1 to 2.15, comprising
- using a correspondence table to detect a file comprising the data that is to be copied from the first entity to the second entity,
- detecting that the file has been modified after last copying event, and
- copying from the first entity to the second entity, directly or indirectly, the file and/or a conversion thereof. 2.17. The method of any of the examples 2.1 to 2.16, comprising
- associating a first identity for the data that is to be copied from the first entity to the second entity,
- detecting the data that is to be copied from the first entity to the second entity
after said detecting,
- determining the existence or absence of a duplicate of the data that is to be copied, at or from the second entity,
- provided that the duplicate is absent, copying, from the first entity to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied; to make a duplicate of the data that is to be copied to the second entity,
- associating a second identity to the duplicate,
- forming an object pair comprising the first identity and the second identity, and
- storing said object pair to a correspondence table. 2.18. The method of any of the examples 2.1 to 2.17, further comprising the features of at least one of the examples 1 .14 to 1 .27 and/or comprising or further comprising the features of at least one of the examples 3.1 to 3.5.
2.19. A device, arranged to perform the method of any of the examples 2.1 to 2.18.
2.20. A computer, arranged to perform the method of any of the examples 2.1 to 2.19. 2.21 . A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- display, at a first location, a first icon associated with a first entity arranged to send or receive data, - display at a second location, a second icon associated with a second entity arranged to, respectively, receive or send data,
- detect a pointer at the first location,
- detect a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detect a movement made using the pointer device to move at least one of the pointer and the first icon,
- display the pointer and/or the first icon at another location corresponding to said movement, wherein
the computer program code is further arranged to cause the computer to, after detecting the pointer at the first location,
- detect the pointer and/or the first icon at the second location,
- detect a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device, and
- store a first identity, associated with the first entity, in association with a second identity, associated with the second entity, in a database. 2.22. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 2.1 to 2.18. 2.23. A computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 2.1 to 2.18. The following examples 3.1 to 3.8 illustrate some aspects of locating data in an entity; and locating and entity comprising the data.
3.1 . A method for locating data in an entity, the method comprising
- receiving at least one content specific descriptor, - accessing a correspondence table, wherein the correspondence table comprises an identity of data and in association with the identity, a descriptor specific to the content of the data having the identity,
- receiving (i) the descriptor specific to the content of the data having the identity and (ii) the identity of the data,
- determining that the content specific descriptor is similar to the descriptor specific to the content of the data, and
- sending or displaying the identity of the data associated with the descriptor specific to the content of the data.
3.2. The method of example 3.1 , further comprising
- using the identity of the data to identify an entity comprising the data, and
- sending or displaying information indicative of the entity. 3.3. The method of example 3.2, further comprising
- using the identity of the data to identify another entity comprising the data or other entities comprising the data, and
- sending or displaying information indicative of the other entity or the other entities.
3.4. The method of any of the example 3.1 to 3.3, further comprising
- deriving the descriptor specific to the content of the data from the content of the data. 3.5. The method of any of the examples 3.1 to 3.4, wherein said determining that the content specific descriptor is similar to the descriptor specific to the content of the data, comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be located, - determining a second set comprising at least the descriptor specific to the content of the data having the identity,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- determining that the content specific descriptor is similar to the descriptor specific to the content of the file by using said similarity value. 3.6. A computer, arranged to perform the method of any of the examples 3.1 to 3.5.
3.7. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 3.1 to 3.5.
3.8. A computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the examples 3.1 to 3.5.

Claims

Claims:
1 . A method for providing a data flow from a first entity to a second entity, the method comprising
- accessing a configuration database and receiving from the configuration database an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting data that is to be copied from the first entity to the second entity,
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity,
- deriving a content specific descriptor of the data from the content of the data that is to be copied,
- detecting, using at least the content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copying from the first entity to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof;
whereby a data flow is provided from the first entity to the second entity.
2. The method of claim 1 , wherein said detecting, using at least one content specific descriptor of the data to be copied, the absence of a duplicate from the second entity comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied,
- locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and - detecting, using the similarity value, the absence of a duplicate from the second entity.
3. The method of claim 2, wherein
- the first set further comprises
o at least a first format specific descriptor for the data that is to be copied and/or
o at least a first file specific descriptor for the data that is to be copied and
- the second set further comprises
o at least a second format specific descriptor for the second data and/or
o at least a second file specific descriptor for the second data.
4. The method of any of the claims 1 to 3, wherein said determining the compatibility of the data format of the data that is to be copied with the second entity comprises
- determining that the data format of the data that is to be copied does not belong to the set of valid data formats for the second entity,
and the method comprises
- converting the data that is to be copied to said conversion such that the data format of the conversion belongs to the set of valid data formats for the second entity, and
- copying, from the first entity to the second entity, directly or indirectly, at least the conversion of the data that is to be copied.
5. The method of the claim 4, wherein said determining that the data format of the data that is to be copied does not belong to the set of valid data formats for the second entity further comprises
- requesting, from the second entity, information indicative of the set of valid data formats for the second entity,
- receiving information indicative of the set of valid data formats for the second entity, and
- determining the set of valid data formats using the information indicative of the set of valid data formats for the second entity.
6. The method of claims 4 or 5, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the configuration database,
- receiving, from the configuration database, information indicative of the set of valid data formats for the second entity,
- accessing the configuration database or another database with the information indicative of the set of valid data formats for the second entity,
- receiving, from a database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
7. The method of claim 6, wherein said determining that the data format is incompatible with the with the set of valid data formats for the second entity comprises
- accessing the configuration database,
- receiving, from the configuration database, a set of valid data formats for the second entity, and
- determining that the set of valid data formats for the second entity does not comprise the data format of the data that is to be copied.
8. The method of any of the claims 1 to 7, comprising
- storing in a database information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied,
- using the information indicative of (a) the identity of the first entity and (b) an identity of the data that is to be copied to locate data that is substantially similar to the data that is to be copied, and
- copying to the second entity data that is substantially similar to the data that is to be copied, or a conversion of data that is substantially similar to the data that is to be copied.
9. The method of any of the claims 1 to 8, comprising
- using a correspondence table to detect a file comprising the data that is to be copied from the first entity to the second entity,
- detecting that the file has been modified after last copying event, and - copying, from the first entity to the second entity, directly or indirectly, the file or a conversion thereof.
10. The method of any of the claims 1 to 9, comprising
- associating a first identity for the data that is to be copied from the first entity to the second entity,
- detecting the data that is to be copied from the first entity to the second entity, and
after said detecting,
- determining the absence of a duplicate of the data that is to be copied from the second entity,
- copying, to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied; to make a duplicate of the data that is to be copied to the second entity,
- associating a second identity to the duplicate,
- forming an object pair comprising the first identity and the second identity, and
- storing said object pair to a correspondence table.
1 1 . The method of any of the claims 1 to 10, wherein the first or the second entity is or comprises
- a device such as a computer, a portable memory device, a camera, a video recorder, an audio recorder, a mobile phone, an audio player, a video player, a viewer for digital images, a GPS-logger, and a navigator, or
- a virtual device, such as a computer network accessible memory storage (e.g. Google drive, Skydrive, Dropbox, Cloud drive), a computer network accessible service (e.g. Flickr, Instagram), or a computer network accessible social network (e.g. Facebook, Twitter).
12. The method of any of the claims 1 to 1 1 , wherein
- the presence of a connection that enables direct data transfer from the first entity to the second entity is determined by
• determining the presence of the first entity and the second entity, • deternnining the capability of the first entity in sending data, and
• deternnining the capability of the second entity in receiving data; or
- the presence of a connection that enables indirect data transfer from the first entity to the second entity is determined by
· determining the presence of the first entity, the second entity, and a third entity,
• determining the capability of the first entity in sending data,
• determining the capability of the third entity in receiving data,
• determining the capability of the third entity in sending data, and · determining the capability of the second entity in receiving data.
13. The method of any of the claims 1 to 12 wherein
- the first entity or the second entity is a passive entity.
14. The method of any of the claims 1 to 13, comprising
- determining the presence of the first entity and the second entity,
- determining the capability of the first entity in sending data,
- determining the capability of the second entity in receiving data,
- requesting, from the first entity, the data that is to be copied,
- receiving, from the first entity, the data that is to be copied, and
- sending, to the second entity, the received data and/or a conversion thereof.
15. The method of any of the claims 1 to 14, wherein
- the first entity and the second entity are a passive entities.
16. The method of any of the claims 1 to 15 comprising
- determining, using the configuration database, a set comprising at least one transferable data class,
- determining the class of the data that is to be copied from the first entity to the second entity, and
- determining that the class of the data that is to be copied is comprised by the a set comprising at least one transferable data class.
17. The method of claim 16 wherein
- the data class is one of a contact, an event, a message, a document, a bookmark, audio, video, image, or a file in general.
18. The method of any of the claims 1 to 17, comprising
- (i) determining a time-value indicative of the time at which the copying from the first entity to the second entity occurred; and
- (iia) storing, in association with the identity of the first entity, the identity of the second entity, and the indicator of direction, the time-value in the configuration database or
- (iib) storing, in a log file, the time-value, wherein the log file has been associated with the identity of the first entity, the identity of the second entity, and the indicator of direction in the configuration database.
19. The method of claim 18 wherein said detecting the absence of a duplicate comprises
- determining a first time-value indicative of the time of latest amendment of or addition to the data in the first entity,
- determining, using the configuration database and optionally a log file, a second time-value indicative of the time of latest copy made from the first entity to the second entity, and
- determining, using the first time value and the second time value, that the time of latest amendment of or addition to the data has been later than the time of latest copy made from the first entity to the second entity.
20. The method of any of the claims 1 to 19, comprising
- detecting the formation of a connection to an entity, such as the first entity or the second entity,
- forming an identity for the entity; and
- storing the formed identity in to a database.
21 . The method of any of the claims 1 to 20, comprising
- determining, using the configuration database or another configuration database, an identity of another entity to which data is to be copied, - determining the presence of a connection that enables direct or indirect data transfer from the second entity to the other entity,
- detecting the data that is to be copied from the second entity to the other entity,
- detecting the existence of a duplicate in the other entity, and
- copying, to the other entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied.
22. The method of any of the claims 1 to 21 , comprising
- receiving, from the configuration database, an indicator indicating that some data should be removed,
- detecting the absence, from the first entity, of data that is to be removed, - detecting the existence of a duplicate of the data that is to be removed in the second entity,
- removing from the second entity the duplicate.
23. The method of any of the claims 1 to 22, comprising
- receiving, from the configuration database, an indicator indicating that some data should be removed,
- detecting the absence, from the second entity, of data that is to be removed,
- detecting the existence of a duplicate of the data that is to be removed in the first entity,
- removing from the first entity the duplicate.
24. The method of any of the claims 1 to 23, comprising
- (i a) displaying, at a first location, a first icon associated with the first entity, and (i b) at a second location, a second icon associated with the second entity; OR (ii a) displaying, at a first location, a first icon associated with the second entity, and (ii b) at a second location, a second icon associated with the first entity,
- detecting a pointer at the first location, - detecting a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detecting a movement made using the pointer device to move at least one of the pointer and the first icon,
- displaying the pointer and/or the first icon at another location corresponding to said movement,
the method further comprising, after detecting the pointer at the first location,
- detecting the pointer and/or the first icon at the second location,
- detecting a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device,
- associating the identity of the first entity with the identity of the second entity, and
- storing the first identity in association with the second identity in the configuration database.
25. The method of claim 24 comprising
- (i a) displaying, at the first location, a first icon associated with the first entity, and (i b) at the second location, a second icon associated with the second entity, whereby
- the detection of the pointer and or the first icon at the second location, after the detection of the pointer at the first location, forms an indicator indicating the direction of data flow from the first entity to the second entity, and
- storing the first identity in association with the second identity and the indicator in the configuration database.
26. The method of the claim 24 or 25 comprising
- receiving, over an interface, at least an indicator indicating the direction of data flow,
- receiving, over an interface, the identity of the first entity and/or the identity of the second entity, and
- storing the first identity of the first entity and/or the identity of the second entity in association with the indicator in the configuration database.
27. The method of any of the claims 1 to 26, comprising
- receiving, over an interface, a set comprising at least one transferable data class,
- receiving, over an interface, the identity of the first entity,
- storing the identity of the first entity in association with the set comprising at least one transferable data class to the configuration database.
28. A device, arranged to perform the method of any of the claims 1 to 27.
29. A computer, arranged to perform the method of any of the claims 1 to 27.
30. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- access a configuration database and receive from the configuration database an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detect at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detect data that is to be copied from the first entity to the second entity,
- determine a set of valid data formats for the second entity,
- determine the data format of the data that is to be copied,
- determine the compatibility of the data format of the data that is to be copied with the second entity,
- deriving a content specific descriptor of the data from the content of the data that is to be copied,
- detect, using at least the content specific descriptor of the data that is to be copied, the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copy, to the second entity, directly or indirectly, the data that is to be copied or a conversion thereof;
whereby the computer program code is arranged to provide a data flow from the first entity to the second entity.
31 . A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the claims 1 to 27.
32. A computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the claims 1 to 27.
33. A method for pairing two entities, wherein
- a first entity is arranged to send data or to receive data,
- a second entity is, respectively, arranged to receive data or to send data,
- a first identity is associated with the first entity, and
- a second identity is associated with the second entity,
the method comprising
- displaying, at a first location, a first icon associated with the first entity,
- displaying at a second location, a second icon associated with the second entity,
- detecting a pointer at the first location,
- detecting a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detecting a movement made using the pointer device to move at least one of the pointer and the first icon,
- displaying the pointer and/or the first icon at another location corresponding to said movement,
the method further comprising, after detecting the pointer at the first location,
- detecting the pointer and/or the first icon at the second location,
- detecting a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device,
- associating the identity of the first entity with the identity of the second entity, and
- storing the first identity in association with the second identity in a database.
34. The method of claim 33, wherein
- the first entity is arranged to send data and the second entity is arranged to receive data; whereby the method comprises
- receiving an indicator indicating the direction of data flow from the first entity to the second entity, by said detecting the first selection and thereafter detecting the second selection.
35. The method of the claim 33 or 34, comprising
- receiving, over an interface, at least an indicator indicating the direction of data flow,
- receiving, over an interface, the identity of the first entity and/or the identity of the second entity, and
- storing the first identity of the first entity and/or the identity of the second entity in association with the indicator indicating the direction of data flow in the database or another database.
36. The method of any of the claims 33 to 35, comprising
- receiving, over an interface, a set comprising at least one transferable data class,
- receiving, over an interface, the identity of the first entity,
- storing the identity of the first entity in association with the set comprising at least one transferable data class to the database.
37. The method of any of the claims 33 to 36, comprising
- displaying
o at a first location, an image of a first entity,
o at a second location, an image of a second entity, and
o at a third location, a boundary indicator, wherein the third location is arranged in between the first location and the second location
- detecting a selection made by a pointer device,
- determining the location of a pointer,
- determining a direction indicator indicative of the direction of data flow, and a data class; based on the first, second, and third location, as well as the location of the pointer, and storing, in a database, an identity of the first entity, an identity of the second entity, the data class, and the direction indicator indicative of the direction from the second entity to the first entity.
38. The method of any of the claims 33 to 37, comprising
- displaying
o at a first location, an image of a first entity,
o at a second location, an image of a second entity,
o at a third location, a boundary indicator, wherein the third location is arranged in between the first location and the second location, o at a fourth location, direction indicator, wherein the fourth location is arranged either in between the first location and the third location, or in between the second location and the third location,
- locating a pointer at the fourth location,
- detecting a selection made by a pointer device,
- determining using the fourth location: a first entity, a second entity, a direction indicator, and a data class, and
- removing, from a database, a record indicative of file transfer
o from the first entity,
o to the second entity, and
o of the data class.
39. The of any of the claims 33 to 38, further comprising
- accessing the database,
- receiving an identity of the first entity, an identity of the second entity, and an indicator of direction such that data is to be copied from the first entity to the second entity,
- automatically detecting at least one of (i) a change in data stored in the first entity and (ii) an addition of new data to the first entity,
- detecting the data that is to be copied from the first entity to the second entity,
- detecting using at least one content specific descriptor of the data that is to be copied the absence, from the second entity, of a duplicate of the data that is to be copied, and
- copying from the first entity to the second entity, directly or indirectly, (i) the data that is to be copied, (ii) a conversion thereof, (iiia) data that is substantially similar to the data that is to be copied, or (iiib) a conversion of data that is substantially similar to the data that is to be copied;
whereby a data flow is provided from the first entity to the second entity.
40. The method of the claim 39, wherein said detecting, using at least one content specific descriptor of the data to be copied, the absence of a duplicate from the second entity comprises
- determining a first set comprising at least a first content specific descriptor, which describes the content of the data that is to be copied, - locating, from the second entity, second data,
- determining a second set comprising at least a second content specific descriptor, which describes the content of the second data,
- forming a similarity value by comparing at least one item of the first set with at least one item of the second set, and
- detecting, using the similarity value, the absence of a duplicate from the second entity.
41 . The method of claim 40, wherein
- the first set further comprises
o at least a first format specific descriptor for the data that is to be copied and/or
o at least a first file specific descriptor for the data that is to be copied; and
- the second set further comprises
o at least a second format specific descriptor for the second data and/or
o at least a second file specific descriptor for the second data.
42. The method of any of the claims 39 to 41 , comprising
- determining a set of valid data formats for the second entity,
- determining the data format of the data that is to be copied,
- determining the compatibility of the data format of the data that is to be copied with the second entity.
43. The method of claim 42, wherein said determining the compatibility of the data format of the data that is to be copied with the second entity comprises - determining that the data format is incompatible with the set of valid data formats for the second entity,
and the method comprises
- converting the data that is to be copied to said conversion such that the data format of the conversion belongs to the set of valid data formats for the second entity,
- copying from the first entity to the second entity, directly or indirectly, the conversion of the data that is to be copied.
44. The method of any of the claims 39 to 43, comprising
- deriving the content specific descriptor of the data from the content of the data that is to be copied.
45. A device, arranged to perform the method of any of the claims 33 to 44.
46. A computer, arranged to perform the method of any of the claims 33 to 44.
47. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to:
- display, at a first location, a first icon associated with a first entity arranged to send or receive data,
- display at a second location, a second icon associated with a second entity arranged to, respectively, receive or send data,
- detect a pointer at the first location,
- detect a first selection made using a pointer device, preferably by detecting a selection made by pressing a selection button of the pointer device,
- detect a movement made using the pointer device to move at least one of the pointer and the first icon,
- display the pointer and/or the first icon at another location corresponding to said movement, wherein
the computer program code is further arranged to cause the computer to, after detecting the pointer at the first location, - detect the pointer and/or the first icon at the second location,
- detect a second selection made using the pointer device, preferably by detecting a selection made by releasing the selection button of the pointer device, and
- store a first identity, associated with the first entity, in association with a second identity, associated with the second entity, in a database.
48. A computer program product comprising computer program code embodied on a computer readable medium, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the claims 33 to 44.
49. A computer program comprising computer program code, wherein said computer program code is, when executed on a processor of a computer, arranged to cause the computer to perform the method of any of the claims 33 to 44.
PCT/FI2014/050625 2013-08-16 2014-08-14 A method and a device for flowing data between entities WO2015022449A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
FI20135837A FI20135837A (en) 2013-08-16 2013-08-16 A method for pairing a source unit and a target unit
FI20135837 2013-08-16
FI20135836A FI20135836A (en) 2013-08-16 2013-08-16 Method and apparatus for generating a data stream between units
FI20135836 2013-08-16

Publications (1)

Publication Number Publication Date
WO2015022449A1 true WO2015022449A1 (en) 2015-02-19

Family

ID=51422104

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FI2014/050625 WO2015022449A1 (en) 2013-08-16 2014-08-14 A method and a device for flowing data between entities

Country Status (1)

Country Link
WO (1) WO2015022449A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030035005A1 (en) * 2001-08-14 2003-02-20 Kodosky Jeffrey L. Graphically deployment of a program with automatic conversion of program type
US20060101064A1 (en) * 2004-11-08 2006-05-11 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US20060242259A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Aggregation and synchronization of nearby media
WO2009150439A1 (en) * 2008-06-13 2009-12-17 Christopher Simon Gorman Content system
EP2336911A1 (en) * 2009-11-23 2011-06-22 Jordan Douglas Barnes Efficient change tracking of transcoded copies

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030035005A1 (en) * 2001-08-14 2003-02-20 Kodosky Jeffrey L. Graphically deployment of a program with automatic conversion of program type
US20060101064A1 (en) * 2004-11-08 2006-05-11 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US20060242259A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation Aggregation and synchronization of nearby media
WO2009150439A1 (en) * 2008-06-13 2009-12-17 Christopher Simon Gorman Content system
EP2336911A1 (en) * 2009-11-23 2011-06-22 Jordan Douglas Barnes Efficient change tracking of transcoded copies

Similar Documents

Publication Publication Date Title
US10552384B2 (en) Synchronizing media files available from multiple sources
US9986013B2 (en) Systems and methods for space management in file systems
US20170177692A1 (en) Arrangement for synchronizing media files with portable devices
JP5005726B2 (en) Managing media files from multiple sources
CA2661066C (en) Auto-selection of media files
CA2665867C (en) Unified media file architecture
JP4859943B2 (en) Media file management using metadata injection
US20100325153A1 (en) Synchronized distributed media assets
US20120095962A1 (en) Aggregating Media Content From Multiple Clients To A Server
US20070156779A1 (en) Synchronizing Media Within A Portable Device
JP2008134966A (en) Data management server, data management system, data management method and program
EP1711895A2 (en) Audio/video content synchronization through playlists
US8195635B1 (en) Indicating related but absent media content
EP1591927A2 (en) Method, recording medium, and apparatus for correcting the LastURL field in an MPV file
JP2008134967A (en) Data management server, data management system, data management method and program
WO2015022449A1 (en) A method and a device for flowing data between entities
TW201516705A (en) System and method of multimedia data arrangement for cloud service
KR100839014B1 (en) Direct encoding system following metadata
AU2012200108B2 (en) Synchronizing media files available from multiple sources
KR20080052525A (en) Direct encoding system following metadata
EP2120166A1 (en) Synchronizing media files available from multiple sources

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14756086

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14756086

Country of ref document: EP

Kind code of ref document: A1