Language selection

Search

Patent 2507424 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2507424
(54) English Title: MAINTAINING TIME-DATE INFORMATION FOR SYNCING LOW FIDELITY DEVICES
(54) French Title: MISE A JOUR D'INFORMATION D'HORODATAGE POUR SYNCHRONISER DES DISPOSITIFS A BASSE FIDELITE
Status: Deemed expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 13/00 (2006.01)
  • G06F 17/30 (2006.01)
(72) Inventors :
  • STARBUCK, BRYAN T. (United States of America)
(73) Owners :
  • MICROSOFT TECHNOLOGY LICENSING, LLC (United States of America)
(71) Applicants :
  • MICROSOFT CORPORATION (United States of America)
(74) Agent: SMART & BIGGAR
(74) Associate agent:
(45) Issued: 2013-10-08
(86) PCT Filing Date: 2004-07-30
(87) Open to Public Inspection: 2005-10-30
Examination requested: 2009-07-30
Availability of licence: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US2004/024708
(87) International Publication Number: WO2005/111808
(85) National Entry: 2005-06-10

(30) Application Priority Data:
Application No. Country/Territory Date
10/835,830 United States of America 2004-04-30
10/878,717 United States of America 2004-06-28
10/878,095 United States of America 2004-06-28

Abstracts

English Abstract


For low fidelity devices without time-date fields, the present invention
provides for formatting, identifying and storing time-date information (350)
corresponding to remote property values in a standard format (305) on the
remote
device. The time-date information is parsable by several devices and used in
resolving conflicts between property values. Other example embodiments provide
for
determined if a value for a property on a remote device has changed since a
last sync
between the remote device and a local machine by comparing a remote
representation
(320) of a property value to a local representation associated with the same
property
value. Still other example embodiments provide for preserving memory resources
by
selecting property values to be assigned time-date information used in
resolving
conflicts between sync values. The property values may be selected based on,
e.g.,
the available resources of a remote device or based on historical information.


French Abstract

Pour les dispositifs A faible fidElitE sans champs heure-date, la prEsente invention permet le formatage, l'identification et le stockage de donnEes heure- information (350) correspondant A des valeurs de propriEtE distantes dans un format standard (305) sur le dispositif distant. Les donnEes heure-date sont analysables par plusieurs dispositifs et utilisEes pour rEsoudre des conflits entre valeurs de propriEtE. D'autres modes de réalisation présentés à titre d'exemple permettent de dEterminer si une valeur de propriEtE sur un dispositif distant a changE depuis une derniEre synchronisation entre le dispositif distant et une machine locale, en comparant une reprEsentation distante (320) d'une valeur de propriEtE A une reprEsentation locale associEe A la mEme valeur de propriEtE. D'autres modes de réalisation cités à titre d'exemple permettent la conservation des ressources mEmoire en sElectionnant les valeurs de propriEtE A affecter aux donnEes heure-date utilisEes pour rEsoudre les conflits entre valeurs synchronisEes. Les valeurs de propriEtE peuvent Etre sElectionnEes sur la base, par exemple, des ressources disponibles d'un dispositif distant ou sur la base de donnEes historiques.

Claims

Note: Claims are shown in the official language in which they were submitted.


24
CLAIMS:
1. In a distributed computing system having a device that stores
properties in a database without a corresponding time-date field, a method of
associating time-date information with a property value in the database, the
method comprising the acts of:
identifying time-date information corresponding to one or more
remote property values in a remote database that stores properties without a
corresponding time-date field, wherein the one or more property values are a
subset of a total number of associated property values, and the one or more
property values are selected to have the identified time-date information
formatted
in the standard format based on values associated with the time-date
information,
and wherein a remaining portion of property values from the total number of
property values not selected are represented in the field associated with the
one
or more remote property values by a combined representation value, the
combined representation value having associated time-date information based on

time-date information for the remaining portion of property values;
formatting the identified time-date information in a standard format
parsable by one or more devices in the distributed computing system; and
sending the formatted time-date information to the remote database
for storage in a field associated with the one or more remote property values.
2. The method of claim 1, wherein the standard format is a uniform
resource identifier.
3. The method of claim 2, wherein the uniform resource identifier is a
uniform resource locator parsed into segments, each segment including a
property
identifier, a representation of one of the one or more property values and a
representation of the time-date information corresponding to the one of the
one or
more property values.

25
4. The method of claim 3, wherein the representation of the one of the
one or more property values is a hash of the one of the one or more property
values.
5. The method of claim 3, wherein the representation of the time-date
information corresponding to the one of the one or more property values is one
or
more of a Hexadecimal number of the time-date information, stored down to the
seconds, stored down to the minutes or stored in a time zone independent
format.
6. The method of claim 1, wherein the field associated with the one or
more remote property values is a note field.
7. The method of claim 1, wherein the field associated with the one or
more remote property values is an unused field.
8. The method of claim 1, wherein the values associated with the time-
date information for the one or more property values are most recent time-date

values, and wherein the time-date information associated with the combined
representation value is one or more of a most recent time-date value or an
oldest
time-date value associated with the remaining portion of property values.
9. The method of claim 8, wherein the combined representation is a
hash of the remaining portion of property values.
10. In a distributed computing system having a device that stores
properties in a database without a corresponding time-date field, a method of
associating time-date information with a property value in the database, the
method comprising the acts of:
receiving formatted time-date information associated with the one or
more property values, the formatted time-date information formatted in a
standard
format parsable by one or more devices in the distributed computing system;
and
storing the formatted time-date information in a database field
associated with the one or more property values such that the formatted time-
date
information can be utilized to resolve data conflicts involving the one or
more
property values, wherein the one or more property values are a subset of a
total

26
number of associated property values, and the one or more property values are
selected to have the identified time-date information formatted in the
standard
format based on values associated with the time-date information, and wherein
a
remaining portion of property values from the total number of property values
not
selected are represented in the field associated with the one or more remote
property values by a combined representation value, the combined
representation
having associated time-date information based on time-date information for the

remaining portion of property values.
11. The method of claim 10, further comprising the acts of:
changing at least one of the one or more property values;
identifying the formatted time data information as being associated
with the one or more property values; and
updating the formatted time-date information in the database field in
accordance with the changed at least one of the one or more property values.
12. The method of claim 11, wherein the formatted time data information
is received and stored on a remote device, and wherein a user of the remote
device made the change.
13. The method of claim 11, wherein the formatted time-date information
is received and stored on a remote device and a user of a local machine made
the
change, the local machine storing unformatted time-date information properties

associated with the one or more property values in a database with a
corresponding time-date field.
14. The method of claim 10, wherein the standard format is a uniform
resource identifier.
15. The method of claim 14, wherein the uniform resource identifier is a
uniform resource locator parsed into segments, each segment including a
property
identification, a representation of one of the one or more property values and
a
representation of the time-date information corresponding to the one of the
one or
more property values.

27
16. The method of claim 15, wherein the representation of the one of the
one or more property values is a hash of the one of the one or more property
values.
17. The method of claim 16, wherein the representation of the time-date
information corresponding to the one of the one or more property values is one
or
more of a Hexadecimal number of the time-date information, stored down to the
seconds, stored down to the minutes or stored in a time zone independent
format.
18. The method of claim 10, wherein the field associated with the one or
more remote property values is a note field.
19. The method of claim 10, wherein the field associated with the one or
more remote property values is an unused field.
20. The method of claim 10, wherein the values associated with the
time-date information for the one or more property values are most recent time-

date values, and wherein the time-date information associated with the
combined
representation is one or more of a most recent time-date value or an oldest
time-
date value associated with the remaining portion of property values.
21. The method of claim 20, wherein the combined representation is a
hash of the remaining portion of property values.
22. In a distributed computing system having a device that stores
properties in a database without a corresponding time-date field, a method of
resolving a data conflict between devices in the distributed computing system,
the
method comprising the acts of:
receiving a remote property value for a remote property and
corresponding remote time-date information from a database without a
corresponding time-date field, the remote time-date information formatted in a

standard format parsable by one or more devices in the distributed computing
system, wherein the standard format is a uniform resource identifier, and
wherein
the uniform resource identifier is a uniform resource locator parsed into
segments,
one of the segments including a property identification corresponding to the

28
remote property value, a remote representation of the remote property value
and a
representation of the time-date information corresponding to the remote
property
value, and wherein the representation of the time-date information
corresponding
to the remote property value is one or more of a Hexadecimal number of the
time-
date information, stored down to the seconds, stored down to the minutes or
stored in a time zone independent format;
detecting a conflict between the remote property value and a
corresponding local property value;
parsing the remote time-date information according to the standard
format to identify a remote time and date, the remote time and date indicating

when the remote property value was changed;
comparing the remote time and date to a local time and date, the
local time and data indicated when the one or more local property values were
changed; and
resolving the conflict based on the results of the comparison.
23. The method of claim 22, wherein the remote representation of the
remote property value is a hash of the remote property value.
24. The method of claim 22, further comprising the acts of:
generating a local representation of the remote property from the
remote property value;
comparing the remote representation to the local representation; and
determining, based on the comparison, the remote property value
has not changed after the remote representation was generated.
25. A computer program product for use in a distributed computing
system that stores properties in a database without a corresponding time-date
field, the computer program product for implementing a method of resolving a
data
conflict between devices in the distributed computing system, the computer
program product comprising one or more computer readable media having stored

29
thereon computer executable instructions that, when executed by a processor,
can cause the distributed computing system to perform the following:
receive a remote property value for a remote property and
corresponding remote time-date information from a database without a
corresponding time-date field, the remote time-date information formatted in a

standard format parsable by one or more devices in the distributed computing
system, wherein the standard format is a uniform resource identifier, and
wherein
the uniform resource identifier is a uniform resource locator parsed into
segments,
one of the segments including a property identification corresponding to the
remote property value, a remote representation of the remote property value
and a
representation of the time-date information corresponding to the remote
property
value, wherein the remote representation of the remote property value is a
hash of
the remote property value, and wherein the representation of the time-date
information corresponding to the remote property value is a Hexadecimal number

of the time-date information;
detect a conflict between the remote property value and a
corresponding local property value;
parse the remote time-date information according to the standard
format to identify a remote time and date, the remote time and date indicating

when the remote property value was changed;
compare the remote time and date to a local time and date, the local
time and data indicated when the one or more local property values were
changed; and
resolve the conflict based on the results of the comparison.
26. The computer program product of claim 25, further comprising the
acts of:
generating a local representation of the remote property from the
remote property value;
comparing the remote representation to the local representation; and

30
determining, based on the comparison, the remote property value
has not changed after the remote representation was generated.
27. In a distributed computing system having a device that stores
properties in a database without a corresponding time-date field, a method of
associating time-date information with a property value in the database, the
method comprising the acts of:
identifying time-date information corresponding to one or more
remote property values in a remote database that stores properties without a
corresponding time-date field;
formatting the identified time-date information in a standard format
parsable by one or more devices in the distributed computing system, wherein
the
standard format is a uniform resource identifier, and wherein the uniform
resource
identifier is a uniform resource locator parsed into segments, each segment
including a property identifier, a representation of one of the one or more
property
values and a representation of the time-date information corresponding to the
one
of the one or more property values, and wherein the representation of the time-

date information corresponding to the one of the one or more property values
is
one or more of a Hexadecimal number of the time-date information, stored down
to the seconds, stored down to the minutes or stored in a time zone
independent
format; and
sending the formatted time-date information to the remote database
for storage in a field associated with the one or more remote property values.
28. The method of claim 27, wherein the representation of the one of the
one or more property values is a hash of the one of the one or more property
values.
29. The method of claim 27, wherein the field associated with the one or
more remote property values is a note field.
30. The method of claim 27, wherein the field associated with the one or
more remote property values is an unused field.

31
31. The method of claim 27, wherein the one or more property values
are a subset of a total number of associated property values, and the one or
more
property values are selected to have the identified time-date information
formatted
in the standard format based on values associated with the time-date
information.
32. The method of claim 31, wherein the values associated with the
time-date information for the one or more property values are most recent time-

date values, and wherein the time-date information associated with the
combined
representation value is one or more of a most recent time-date value or an
oldest
time-date value associated with the remaining portion of property values.
33. The method of claim 32, wherein the combined representation is a
hash of the remaining portion of property values.
34. In a distributed computing system having a device that stores
properties in a database without a corresponding time-date field, a method of
associating time-date information with a property value in the database, the
method comprising the acts of:
receiving formatted time-date information associated with the one or
more property values, the formatted time-date information formatted in a
standard
format parsable by one or more devices in the distributed computing system,
wherein the standard format is a uniform resource identifier, and wherein the
uniform resource identifier is a uniform resource locator parsed into
segments,
each segment including a property identification, a representation of one of
the
one or more property values and a representation of the time-date information
corresponding to the one of the one or more property values, and wherein the
representation of the time-date information corresponding to the one of the
one or
more property values is one or more of a Hexadecimal number of the time-date
information, stored down to the seconds, stored down to the minutes or stored
in a
time zone independent format; and
storing the formatted time-date information in a database field
associated with the one or more property values such that the formatted time-
date

32
information can be utilized to resolve data conflicts involving the one or
more
property values.
35. The method of claim 34, further comprising the acts of:
changing at least one of the one or more property values;
identifying the formatted time data information as being associated
with the one or more property values; and
updating the formatted time-date information in the database field in
accordance with the changed at least one of the one or more property values.
36. The method of claim 35, wherein the formatted time data information
is received and stored on a remote device, and wherein a user of the remote
device made the change.
37. The method of claim 35, wherein the formatted time-date information
is received and stored on a remote device and a user of a local machine made
the
change, the local machine storing unformatted time-date information properties

associated with the one or more property values in a database with a
corresponding time-date field.
38. The method of claim 34, wherein the field associated with the one or
more remote property values is a note field.
39. The method of claim 34, wherein the field associated with the one or
more remote property values is an unused field.
40. The method of claim 34, wherein the one or more property values
are a subset of a total number of associated property values, and the one or
more
property values are selected to have the identified time-date information
formatted
in the standard format based on values associated with the time-date
information.

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02507424 2005-06-10
_______________________________________________________________________ _
= _
1
MAINTAINING TIME-DATE INFORMATION FOR
SYNCING LOW FIDELITY DEVICES
The Field of the Invention
The present invention generally relates to synchronizing data within a
distributed computing system. More particularly, the present invention
provides for
the following: (1) maintaining time-date information for properties when
resolving
sync conflicts between two devices, wherein one of the devices does not
provide a
database with time-date fields corresponding to the properties; (2)
determining if a
property value on a remote low fidelity device has changed since a last
synchronization with a local machine; and (3) preserving memory resources by
limiting time-date information for a subset of properties, the time-date
information
used for resolving conflicts between sync values.
Background and Related Art
Laptop, handheld, and other portable computers or computing devices have
increased in popularity as the devices become smaller in size and less
expensive.
Additionally, improved operating speed and processing power of portable
computers
has increased their popularity. Many portable computers are capable of storing
multiple application programs, such as address books, games, calculators, and
the
like. The application programs can be permanently installed in the portable
computer
during manufacture (e.g., on Read-Only Memory (ROM)). Alternatively, one or
more
application programs may be installed by the user after purchasing the
portable
computer.
With the increased popularity and computing power of such devices, people
are beginning to store data and applications using more than just a single
computing
device. Many people, for example, often use laptop computers in addition to
their
regular desktop computer. Other devices such as cellular telephones, Personal
Digital
Assistance (PDAs), Internet services, and the like are also used for storing
data and
applications.
Each of these computing devices may be part of a distributed computing
system wherein related information can be correlated and stored on multiple
such

CA 02507424 2005-06-10
2
devices. For example, a user may have a digital address book stored on their
desktop
work computer, on their PDA, on their cell phone, on an Internet service, etc.

Accordingly, while at work, it may be convenient for the user to access
contact
information, which may include phone numbers and other general contact
information. While away from work, however, the user may be able to use the
address book in a mobile form such as a personal digital assistance (PDA) or
other
mobile information storage system. Ideally, the contact information of the PDA

should match the contact information at the desktop work computer.
When the same or related information is stored in two places, it is possible
for
to the data to change in one location and not in the other. This problem may
be
overcome through synchronization, which is an automated process that attempts
to
ensure that each device within the distributed system has the most current
information
or data. Synchronization, however, has its own set of problems. For example,
when
synchronization is initialized between the two devices, current systems detect
changed
property values by comparing corresponding property values from each device.
Such
comparison, however, gives no indication as to which device made the change.
As
such, when a property change has occurred on either device, a conflict occurs
and a
conflict resolution process must be performed.
Other systems mark a changed property with a tag indicating that a change has
occurred, e.g., "change," "delete," "add," or other tag, as appropriate. In
such
systems, however, when two devices start syncing, a local device can create
these
markers in memory after comparing the data for what needs to be applied.
Further,
because the tags are only tracked in memory, these tags are not stored in a
remote
database for use during synchronization with other devices. In other words,
conflicts
must first be reconciled and then the properties can be marked and tracked in
local
memory only.
Typically, conflicts can be resolved through comparing metadata associated
with the property values that give, e.g., time-date information. The latest
time-date
information is considered the most up-to-date information and the properties
can be
updated accordingly. Resolving a conflict by comparing time-date information
becomes particularly problematic when the data to be synchronized does not
include
_ _

CA 02507424 2005-06-10
3
time-date information, which is referred to as low fidelity data. For example,
many
smaller computing devices have limited physical resources and are incapable of

maintaining time-date information for properties of a data structure item. As
such,
when a computer syncs data in from such low fidelity device, it doesn't know
when
the user originally set that property. This prevents the computer from syncing
in a
property from another computing device and confidently using "last-writer-
wins"
resolution logic to pick the most up-to-date property. Further, even if no
conflict
existed, there is typically no way to sync the property change to the
receiving device
without a conflict resolution process.
BRIEF SUMMARY OF THE INVENTION
The above-identified deficiencies and drawbacks of current synchronization
systems are overcome by the present invention. For example, in a distributed
computing system capable of synchronizing data between devices, the
distributed
computing system may have a device that stores property in a database without
a
corresponding time-date field. In such instances, the present invention
provides for
associating time-date information with a property value in the database.
Example embodiments provide for identifying time-date information
corresponding to remote property values in a remote database that stores
properties
without a corresponding time-date field. The identified time-date information
is
formatted in a standard format parsable by devices in the distributed
computing
system. The formatted time-date information is sent to a remote database for
storage
in a field associated with the remote property values.
Other example embodiments provide for a distributed computing system
having a device that stores properties in a database without a corresponding
time-date
field. Formatted time-date information is received in a standard format
parsable by
devices in the distributed computing system, the formatted time-date
information
associated with property values. Further, the formatted time-date information
is
stored in a database field associated with the property values such that the
formatted
time-date information can be utilized to resolve data conflicts involving the
property
values.

CA 02507424 2009-07-30
51007-69
3a
Other example embodiments provide in a distributed computing
system having a device that stores properties in a database without a
corresponding time-date field, a method of associating time-date information
with
a property value in the database, the method comprising the acts of:
identifying
time-date information corresponding to one or more remote property values in a
remote database that stores properties without a corresponding time-date
field,
wherein the one or more property values are a subset of a total number of
associated property values, and the one or more property values are selected
to
have the identified time-date information formatted in the standard format
based
on values associated with the time-date information, and wherein a remaining
portion of property values from the total number of property values not
selected
are represented in the field associated with the one or more remote property
values by a combined representation value, the combined representation value
having associated time-date information based on time-date information for the
remaining portion of property values; formatting the identified time-date
information in a standard format parsable by one or more devices in the
distributed computing system; and sending the formatted time-date information
to
the remote database for storage in a field associated with the one or more
remote
property values.
Other example embodiments provide in a distributed computing
system having a device that stores properties in a database without a
corresponding time-date field, a method of associating time-date information
with
a property value in the database, the method comprising the acts of: receiving

formatted time-date information associated with the one or more property
values,
the formatted time-date information formatted in a standard format parsable by
one or more devices in the distributed computing system; and storing the
formatted time-date information in a database field associated with the one or

more property values such that the formatted time-date information can be
utilized
to resolve data conflicts involving the one or more property values, wherein
the
one or more property values are a subset of a total number of associated
property
values, and the one or more property values are selected to have the
identified
time-date information formatted in the standard format based on values
associated with the time-date information, and wherein a remaining portion of

CA 02507424 2009-07-30
51007-69
3b
property values from the total number of property values not selected are
represented in the field associated with the one or more remote property
values by
a combined representation value, the combined representation having associated

time-date information based on time-date information for the remaining portion
of
property values.
Other example embodiments provide in a distributed computing
system having a device that stores properties in a database without a
corresponding time-date field, a method of resolving a data conflict between
devices in the distributed computing system, the method comprising the acts
of:
receiving a remote property value for a remote property and corresponding
remote
time-date information from a database without a corresponding time-date field,
the
remote time-date information formatted in a standard format parsable by one or

more devices in the distributed computing system, wherein the standard format
is
a uniform resource identifier, and wherein the uniform resource identifier is
a
uniform resource locator parsed into segments, one of the segments including a
property identification corresponding to the remote property value, a remote
representation of the remote property value and a representation of the time-
date
information corresponding to the remote property value, and wherein the
representation of the time-date information corresponding to the remote
property
value is one or more of a Hexadecimal number of the time-date information,
stored down to the seconds, stored down to the minutes or stored in a time
zone
independent format; detecting a conflict between the remote property value and
a
corresponding local property value; parsing the remote time-date information
according to the standard format to identify a remote time and date, the
remote
time and date indicating when the remote property value was changed; comparing
the remote time and date to a local time and date, the local time and data
indicated when the one or more local property values were changed; and
resolving the conflict based on the results of the comparison.
Other example embodiments provide a computer program product
for use in a distributed computing system that stores properties in a database
without a corresponding time-date field, the computer program product for
implementing a method of resolving a data conflict between devices in the

CA 02507424 2009-07-30
51007-69
3c
distributed computing system, the computer program product comprising one or
more computer readable media having stored thereon computer executable
instructions that, when executed by a processor, can cause the distributed
computing system to perform the following: receive a remote property value for
a
remote property and corresponding remote time-date information from a database
without a corresponding time-date field, the remote time-date information
formatted in a standard format parsable by one or more devices in the
distributed
computing system, wherein the standard format is a uniform resource
identifier,
and wherein the uniform resource identifier is a uniform resource locator
parsed
into segments, one of the segments including a property identification
corresponding to the remote property value, a remote representation of the
remote
property value and a representation of the time-date information corresponding
to
the remote property value, wherein the remote representation of the remote
property value is a hash of the remote property value, and wherein the
representation of the time-date information corresponding to the remote
property
value is a Hexadecimal number of the time-date information; detect a conflict
between the remote property value and a corresponding local property value;
parse the remote time-date information according to the standard format to
identify
a remote time and date, the remote time and date indicating when the remote
property value was changed; compare the remote time and date to a local time
and date, the local time and data indicated when the one or more local
property
values were changed; and resolve the conflict based on the results of the
comparison.
Other example embodiments provide in a distributed computing
system having a device that stores properties in a database without a
corresponding time-date field, a method of associating time-date information
with
a property value in the database, the method comprising the acts of:
identifying
time-date information corresponding to one or more remote property values in a

remote database that stores properties without a corresponding time-date
field;
formatting the identified time-date information in a standard format parsable
by
one or more devices in the distributed computing system, wherein the standard
format is a uniform resource identifier, and wherein the uniform resource
identifier
is a uniform resource locator parsed into segments, each segment including a

CA 02507424 2009-07-30
51007-69
3d
property identifier, a representation of one of the one or more property
values and
a representation of the time-date information corresponding to the one of the
one
or more property values, and wherein the representation of the time-date
information corresponding to the one of the one or more property values is one
or
more of a Hexadecimal number of the time-date information, stored down to the
seconds, stored down to the minutes or stored in a time zone independent
format;
and sending the formatted time-date information to the remote database for
storage in a field associated with the one or more remote property values.
Other example embodiments provide in a distributed computing
system having a device that stores properties in a database without a
corresponding time-date field, a method of associating time-date information
with
a property value in the database, the method comprising the acts of: receiving

formatted time-date information associated with the one or more property
values,
the formatted time-date information formatted in a standard format parsable by
one or more devices in the distributed computing system, wherein the standard
format is a uniform resource identifier, and wherein the uniform resource
identifier
is a uniform resource locator parsed into segments, each segment including a
property identification, a representation of one of the one or more property
values
and a representation of the time-date information corresponding to the one of
the
one or more property values, and wherein the representation of the time-date
information corresponding to the one of the one or more property values is one
or
more of a Hexadecimal number of the time-date information, stored down to the
seconds, stored down to the minutes or stored in a time zone independent
format;
and storing the formatted time-date information in a database field associated
with
the one or more property values such that the formatted time-date information
can
be utilized to resolve data conflicts involving the one or more property
values.

CA 02507424 2005-06-10
4
Still yet other example embodiments provide for resolving a data conflict
between devices in a distributed computing system. A remote property value is
received for a remote property. Also received is a corresponding remote time-
date
information from a database without a corresponding time-date field. The
remote
time-date information being formatted in standard format parsable by devices
in the
distributed computing system. Further, a conflict between the remote value and
the
corresponding local property value is detected. The remote time-date
information is
parsed according to the standard format to identify a remote time and date
that
indicate when the remote property values changed. Further, the remote time and
date
is compared to a local time and date, the local time and date indicating when
the one
or more local property values where changes. The conflict is then resolved
based on
the results of the comparison.
Other deficiencies and drawbacks of current synchronization systems are
overcome by the present invention. For example, in a distributed computing
system
capable of synchronizing data between devices, example embodiments provide for
determining if a value for a property on a remote device has changed since a
last
synchronization of the property between the remote device and a local machine.

Example embodiments provide that during synchronization of data between a
remote device and a local device, a current value for a remote property and a
remote
representation for a prior value of the remote property is received. A local
representation of the remote property from the current value for the remote
property is
then generated. Accordingly, the remote representation is compared to the
local
representation, and based on the comparison, it is determined that the prior
value of
the remote property was changed after the remote representation was generated.
Other example embodiments provide that during synchronization of data
between a remote device and a local device, a remote value for a remote
property and
a remote representation for the remote value of the remote property is
received. A
local representation of the remote property is then generated from the remote
value
for the remote property. Accordingly, the remote representation is compared to
the
local representation, and based on the comparison, it is determined that the
remote

CA 02507424 2005-06-10
-
value of the remote property has not changed after the remote representation
was
generated.
Still other deficiencies and drawbacks of current synchronization systems are
overcome by the present invention. For example, exemplary embodiments provide
5 for preserving memory resources by selecting property values to be
assigned time-
date information used in resolving conflicts between sync values.
Example embodiments provide for receiving a plurality of property values
from a remote device. A limited set of property values from among the
plurality of
property values received are selected based on the available resources of the
remote
device. Further, a set of time-date information from a plurality of time-date
information corresponding to the plurality of property values is identified.
Each of
the property values in the limited set corresponding to a different portion of
the set of
time-date information and indicating when each of the property values within
the
limited set where last modified. The different portions of time-date
information are
then stored in a remote database of the remote device.
Other example embodiments provide that the selection of the limited set of
property values may also be based historical information associated with the
modification of the plurality of property values. For example, the historical
information may be the frequency for which each of the plurality of property
values
are modified, and the most frequently modified property values may then be
selected.
Alternatively, or in conjunction, the historical information may be time-date
information for the plurality of property values, and the most recently
modified
property values may then be selected.
Still other example embodiments provide for identifying a portion of time-date

information from the above-identified plurality of time-date information for
remaining property values not within the limited set of property values. The
portion
of time-date information corresponding to when one or more of the remaining
property values where modified by a user. The identified portion of time-date
information may then be stored in one location in the remote database such
that the
identified portion of time-date information corresponds to all of the one or
more
remaining property values.

CA 02507424 2005-06-10
6
Additional features and advantages of the invention will be set forth in the
description which follows, and in part will be obvious from the description,
or may be
learned by the practice of the invention. The features and advantages of the
invention
may be realized and obtained by means of the instruments and combinations
particularly pointed out in the appended claims. These and other features of
the
present invention will become more fully apparent from the following
description and
appended claims, or may be learned by the practice of the invention as set
forth
hereinafter.
BRIEF DESCRIPTION OF THE DRAWINGS
In order to describe the manner in which the above-recited and other
advantages and features of the invention can be obtained, a more particular
description of the invention briefly described above will be rendered by
reference to
specific embodiments thereof which are illustrated in the appended drawings.
Understanding that these drawings depict only typical embodiments of the
invention
and are not therefore to be considered to be limiting of its scope, the
invention will be
described and explained with additional specificity and detail through the use
of the
accompanying drawings in which:
Figure 1A illustrates a distributed system with high fidelity and low fidelity

devices in which the present invention may be implemented;
Figure 1B illustrates the detection of a conflict between two devices within
the
distributed system in accordance with example embodiments of the present
invention;
Figure 2 illustrates updating and use of time-date information in a
distributed
system with a low fidelity device in accordance with example embodiments of
the
present invention;
Figure 3 illustrates an example standard format of time-date information
within a field in accordance with example embodiments of the present
invention;
Figure 4 illustrates a flow chart of a method of associating time-date
information with a property value in a database without a corresponding time-
date
field in accordance with example embodiments;

CA 02507424 2005-06-10
_ ______
7
Figure 5 illustrates a flow chart of a method of receiving and storing time-
date
information with a property value in a database without a corresponding time-
date
field in accordance with example embodiments;
Figure 6 illustrates a flow chart of a method resolving data conflicts between
devices in a distributed computing system using time-date information received
from
a database without a corresponding time-date field in accordance with example
embodiments;
Figure 7 illustrates a flow chart of a method of determining when a value for
a
property on a remote has changed since a last synchronization of the property
in
to accordance with example embodiments;
Figure 8 illustrates a flow chart of a method of selecting a limited set of
property values from among a plurality of property values that are to be
assigned
time-date information in accordance with example embodiments; and
Figure 9 illustrates an example system that provides a suitable operating
environment for the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
The present invention extends to methods, systems and computer program
products for storing and maintaining time-date information for a device that
stores
properties in a database without a corresponding time-date field. Further, the
present
invention provides for identifying when data has changed on a remote device.
The
present invention also provides for selecting a limited set of property values
to assign
time-date information for preserving restricted or limited memory resources.
The
embodiments of the present invention may comprise a special purpose or general-

purpose computer including various computer hardware, as discussed in greater
detail
below.
Generally, the present invention provides for a distributed computing system
that is capable of associating time-date information with a property value in
the
database. The distributed computing system has a device that stores properties
in a
database without corresponding time-date fields, and thus is considered a low
fidelity
or legacy device. Example embodiments provide that time-date information
corresponding to remote property values can be identified and formatted in a
standard

CA 02507424 2005-06-10
_
8
format parsable by one or more devices in the distributed computing system.
The
formatted time-date information is sent to the remote database for storage in
a field
associated with the remote property values. The formatted time-date
information can
then subsequently be used in resolving conflicts between property values.
Other example embodiments provide for determining when a value for a
property on a remote device has changed since the last synchronization of the
property between the remote device and a local machine. Moreover, other
example
embodiments provide for selecting a limited set of property values from among
a
plurality of property values based on available resources of the remote
device.
Reference will now be made to the figures wherein like structures will be
provided with like or similar reference designations. It is understood that
the
drawings are examples of schematic representations of embodiments of the
invention,
and are not meant to limit or otherwise narrow the scope of the present
invention.
Figure 1 A illustrates several nodes within a distributed computing network
100 to illustrate the connections and how each node syncs with other nodes
within the
system. For example, as shown in the distributed computing system 100 work
computer 105 can sync with several various devices such as email server 110,
PDA
115, mobile phone 120, and instant message server 125. The purpose for
synchronizing data within such a distributed computing system 100 is to ensure
that
the most up-to-date information is provided on all devices used by one or more
users.
Data needing to be synchronized may be, e.g., contact information wherein
each item would correspond to information about an individual person, company,

corporation, or any other similar contact. An example of the properties
associated
with each contact item may be first name, middle name, last name, company
name,
address, phone number, email address, website information, etc. As one would
recognize, however, the local data may be information other than contact
information.
For example, the local data could be a calendar and/or scheduling information,
a file,
an application or any other such information needing to be synced between two
devices. Accordingly, reference to contact information is used for
illustrative
purposes only and is not meant to limit or otherwise narrow the scope of the
present
invention except where explicitly claimed.

CA 02507424 2005-06-10
9
Similar to work computer 105, home laptop 130 may be able to be synced
between instant message server 125, mobile phone 120, PDA 115, and email
server
110. The distributed computing system 100 may be made up of low fidelity
(e.g., a
device whose database is not capable of storing time-date information for
properties)
and high fidelity devices. This is important to consider since ideally every
database
would have time-date information for each property in an item to indicate the
last time --
the user modified the property. If that was the case, then the sync adapters
could use
a "last-writer-wins" rule to let the last time-date information pick the
winner. This
would solve some looping problems and result in the best property winning each
conflict (provided the clocks used within the distributed computing system 100
are
synchronized as well). Because many distributed computing systems 100 are made

up of at least some low fidelity or legacy clients with limited memory
resources for
storing such time-date information, and because it is desirable to support
such legacy
clients, there needs to be other ways to resolve conflicts between devices
while
avoiding potentially infinite sync loops.
Figure 1B illustrates a portion of the distributed computing network 100 with
remote devices 116 (such as mobile phone 120 or PDA 115) and a local machine
132
(such as home laptop 130 or work computer 105). As shown, remote device 116
changed a property value from A to B at some point after the last
synchronization
between remote device 116 and local machine 132. Similarly, local machine 132
changed the same property value from A to C subsequent to the last
synchronization
between the two devices 116, 132. As such, remote device 116 has a needs sync
arrow 135 showing that the value of B for the property should be synced down
to
local machine 132. Similarly, local machine 132 has a needs sync up arrow 140
indicating that the value of C should be synced up to remote device 115.
Because
both devices 116, 132 have needs sync arrows to sync property values down and
up,
respectively, a conflict can result.
As previously mentioned, typically conflicts like the one identified in Figure

1B can be resolved through the comparison of time-date information associated
with
the property values. Resolving a conflict by comparing time-date information,
however, becomes particularly problematic when the data to be synced does not

CA 02507424 2005-06-10
include time-date information, as in the case of low fidelity devices. This
prevents the
computer from syncing in a property from another computing device and
confidently
using "last-writer-wins" resolution logic to pick most up-to-date property.
Further,
another related problem associated with low fidelity devices is there is no
way to
5 identify when a property has changed. Accordingly, even if time-date
information
can be associated with the low fidelity data, such information or time-date
information is potentially unreliable based on the fact that the properties
may have
been changed at the low fidelity device.
The above-identified deficiencies and drawbacks of current distributed
10 computing networks are overcome through exemplary embodiments of the
present
invention. For example, the present invention provides for associating time-
date
information with property values in a database, where a device stores
properties
without a corresponding time-date field (i.e., a low fidelity device).
Further, the
present invention provides for determining when a value for a property on a
remote
device has changed since the last synchronization of the property, even if the
remote
device is a low fidelity device.
Figure 2 illustrates a distributed computing network 200 with a system capable

of creating, using, and updating time-date information for a low fidelity
device in
accordance with example embodiments of the present invention. Distributed
computing system 200 includes two high fidelity machines, local machine 210
and
remote machine 220. Also included within the distributing computing system 200
is a
low fidelity device, i.e., remote device 205. Remote device 205 is low
fidelity in that
the database associated with remote device 205 is not capable of storing time-
date
information with each property. In other words, remote device 205 stores
properties
in its database without a corresponding time-date field.
Although remote device 205 does not have time-date fields for properties in
its
database, example embodiments provide for associating the time-date
information
with the property values in remote device 205 and allowing remote device 205
to
store the time-date information in a standard format and within a field that
is unused.
For instance, local machine 210 can identify time-date information
corresponding to
remote property values in remote devices 205 database. The identified time-
date

CA 02507424 2005-06-10
11
information may then be formatted in a standard format parsable by several
devices
within the distributed computing system 200. The standard format may be, e.g.,
a
Uniform Resource Identifier (URI). For instance, URI may be in the form of a
Sync
Uniform Resource Locator (URL) that identifies the property and includes the
identified time-date information associated with each property. As will be
described
in greater detail below with regard to Figure 3, this Sync URL format is
desirable
because it is readily identifiable and parsable by many devices, thus ideal as
a
standard format.
Local machine 210 can send to remote device 205 the formatted time-date
information, which will be stored in a field associated with the remote
property
values. For example, as shown in Figure 2, local machine 210 sends item 1
(215)
with Time-Date (T/D) information and updated properties when syncing with
remote
device 205. Remote device 205 then stores item 1 (215) that includes the time-
date
information. The formatted time-date information is stored in an unused
property
filed on the remote device 205. For example, remote device 205 can store the
formatted time-date information in a normal property, a hidden property, a
private
expanded property or even appended it to the end of a notes field. It should
be noted
that although other information may be stored in a property field (e.g., text
in a notes
field), the present invention refers to such fields as unused because the
field is not
reserved for storing time-date information. Accordingly, the use of term
"unused"
property field should be interpreted broadly to encompass any property field
not
reserved for storing time-date information.
Example embodiments provide that the formatted time-date information can
be used for several different purposes, such as resolving conflicts, or
identifying when
a property has changed. For instance, a sync is initiated between remote
device 205
and remote machine 220. Accordingly, item 1 (215) can be sent down to remote
machine 220 with the properties and the formatted time-date information.
Because
the formatting of the time-date information is in a standard parsable format,
remote
machine 220 can parse the remote time-date information and identify remote
time and
date information associated with each property. This remote time and date

CA 02507424 2005-06-10
12
information can then be compared with the remote machine's 220's time-date
information in resolving any conflicts between property values.
Other example embodiments provide for detecting when a property has
changed at the remote device 205. For example, the formatted time-date
information
within item 1 (215) may include a representation of the property value last
synced
with local machine 210 within each segment of the time-date information. The
representation may be, e.g., in the form of a hash, which would be a hash of
the last
synchronized property value that was associated with the time-date
information.
When remote machine 220 receives item 1 (215) for syncing, the received
properties
to within item 1 (215) can also be hashed using the same standard hash
function used to
hash the last synced property value. Standard hash functions that may be used
include, but are not limited to, SHA-1, MD5, or other similar hash function.
The hash value within the formatted time-date information may be compared
with the hash value generated by the remote machine 220. If the values do not
match,
it can be deduced that the property value associated with the time-date
information
was changed at remote device 205. Accordingly, the time-date information is
potentially unreliable and may therefore be discarded by remote machine 220.
In
such instance, because the time-date information is potentially unreliable, a
user
interface can be provided to the user in order to resolve the conflict. Of
course, other
ways of resolving the conflict are also available through standard practices
well-
known in the industry.
It should be noted that the above use of a hash or representation of a
property
value in order to determine when a change has occurred at remote device 205 is
not
limited to formatted time-date information. For example, comparison of
property
representations in order to determine when a property value has changed can be
used
without time-date information. Such instances would be useful in determining
when
properties need to be synced down from remote device 205, without having to
compare values of the properties stored on remote machine 220. Accordingly,
the use
of the hash or remote property representation within the Sync URL or formatted
time-
date information is used for illustrative purposes only is not meant to limit
or

CA 02507424 2005-06-10
_
13
otherwise narrow the scope of the present invention, unless otherwise
explicitly
claimed.
Figure 3 illustrates how time-date information may be formatted and stored at
remote device 205. As shown in Figure 3, item 355 has various fields for a
contact,
which include property identifiers, property names and an initial value for
the
properties. Of course, other items, properties, fields, etc. are also
available, with the
exception of a reserved time-date property field. Accordingly, reference to
item 355
contact information and the fields therein are used for illustrative purposes
only and
are not meant to limit or otherwise narrow the scope of the present invention,
except
where explicitly claimed.
Also shown in Figure 3, formatted time-date information can be stored in
property field 375 as a field value 350. Example embodiments provide that the
formatting may be in the form of Sync URL as shown in field 350. An exploded
view
of parsed portions of field 350 are also shown in Figure 3. The first portion
of field
350 includes Sync URL 305. This portion identifies to devices that are
scanning item
355 that the following segments of the Sync URL include time-date information
for
various properties within item 355. It is noted, that the place holder 315
normally
reserved for locator information in the Sync URL 305 may or may not be used.
Each of the following segments can be separated by an ampersand 340 and
identified through a property identification, e.g., property value 310. Also
included
within each segment of the Sync URL 305 in field 350 is time-date information
associated with the property identification (e.g., time_date_l 330 is
associated with
Prop ID_1). Example embodiments provide that a simple representation of the
time-
date information may be used in order to conserve valuable memory resources.
For
example, the time-date information may be stored as a Hexadecimal number. To
save
further space, the time date information can also be stored at a lower
resolution. For
instance, time-date values are normally stored down to a thousandth of a
second.
Example embodiments, however, provide for creating the formatted time-date
information or Sync URL with time-date values stored down to the second or to
the
minute. In addition, example embodiments provided that the time-date
information

CA 02507424 2005-06-10
14
can be stored in a time zone independent way. Accordingly, this will allow
comparable times when the nodes in the sync topology are in different time
zones.
Also provided within each segment of the Sync URL 305 is a property
representation, e.g., property representation 320. Example embodiments provide
that
the property representation 320 may be in the form of a hash, which as
previously
described, can be used in determining if a property value has been changed
since the
property representation 320 was generated. This indicates whether or not the
time-
date information 330 is potentially unreliable.
With the exception of few fields, such as the notes field, the memory
available
to store formatted time-date information is limited. As such, memory for
storing
time-date information for each and every property may not be available or
practical.
Accordingly, the present invention provides for determining and choosing a
limited
set of property values from among the total number of property values within
an item
355. A choice of property values to include time-date information within the
Sync
URL 305 of the present invention may be chosen based on various
considerations.
For example, the choice may be based on those property values that were most
recently changed. Alternatively, the property values chosen to have time-date
information associated with them within the Sync URL 305 or formatted time-
date
information may be based on heuristical data such as the frequency of change
for a
particular property value. Of course, any other number of various ways for
choosing
property values to associate time-date information with is also provided.
Accordingly, the use of how the properties are chosen, e.g., most recent
changed
properties, is used for illustrative purposes only and is not meant to limit
or otherwise
narrow the scope of the present invention unless otherwise explicitly claimed.
Because space is a consideration, and typically a subset of the properties
will
need to be selected to have time-date information associated therewith, the
present
invention can also provide for determining if the other properties have
changed since
a last synchronization, as well as associates time-date information with them,
within a
reduced space. For example, the present invention provides for representing
the rest
of the properties in a reduced format and associating upper and/or lower bound
time-
date information for the representation. For instance, as shown in Figure 3;
appended

CA 02507424 2005-06-10
to the end of the Sync URL 305 in field 350 is a segment with a property
identifier
360 holding a rest value. The property identifier 360 indicates to devices
that are
scanning the Sync URL 305 that the properties that do not have specific time
date
information associated with them are presented in this segment. Accordingly, a
5 property representation 365 of the remaining property values can be used.
As with the other property representations previously described, e.g. property

representation 320, property representation 365 for the rest of the property
values may
be in the form of a hash of all the remaining property values. As such, this
property
representation 365 may be used in a similar way as those previously described
10 property representations to identify when one or more of the remaining
property
values has changed since the last sync between a remote machine and a local
machine. Other example embodiments also provide time-date information 370 can
also be associated with the rest property to give an upper and/or lower
boundary on
when the remaining property values were changed.
15 Although the rest segment was described as an additional segment of Sync
URL, one would recognize that the rest segment may be formatted in its own
field.
For example, where space or memory needs to be reserved, the rest segment can
be
used to identify when one or more the properties within an entire item 355 has

changed. Accordingly, the use of the rest segment appended to the end of the
Sync
URL 305 is used for illustrative purposes only and is not meant to limit or
otherwise
narrow the scope of the present invention except where explicitly claimed.
The present invention may also be described in terms of methods comprising
functional steps and/or non-functional acts. The following is a description of
steps
and acts that may be performed in practicing the present invention. Usually,
functional steps describe the invention in terms of results that are
accomplished,
whereas non-functional acts describe more specific actions for achieving a
particular
result. Although the functional steps and non-functional acts may be described
or
claimed in any particular order, the present invention is not necessarily
limited to any
particular order or combination of acts and/or steps. Further, the use of acts
and/or
steps in the recitation of the claims and in the following description of the
flow chart
for Figures 4-8 are used to indicate the desired specific use of such terms.

CA 02507424 2005-06-10
16
Figure 4-8 illustrates example flow charts for various exemplary embodiments
of the present invention. The following description of Figures 4-8 will
occasionally
refer to corresponding elements from Figures 1B, 2 and 3. Although reference
may
be made to a specific element from these figures, such elements are used for
illustrative purposes only and are not meant to limit or otherwise narrow the
scope of
the present invention unless otherwise explicitly claimed.
Figure 4 illustrates an example flow chart of a method 400 of associating time-

date information with a property value within a remote database that stores
properties
without a corresponding time-date field. Method 400 includes an act of
identifying
405 time-date information. The time-date information will correspond to one or
more
property values in the remote database. Method 400 also includes an act of
formatting 410 the identified time-date information. The time-date information
is
formatted in a standard format parsable by one or more devices 210, 220 within
the
distributed computing system 200. The standard formatting may be a URI such as
the
Sync LTRL 305. The Sync URL 305 may be parsed into segments separated by
ampersand 340. Each segment may include a property identifier 310, a
representation
of the property values 320 and a representation of the time-date information
330
corresponding to the property values. Example
embodiments provide the
representation for the property values 320 may be a hash of the particular
property
value. Further, the representation of the time-date information may be a
Hexadecimal
number and/or can be stored down to the seconds or minutes and/or in a time
zone
independent format.
Method 400 also includes an act of sending 420 the formatted time-date
information. For example, the formatted time-date information may be sent to
the
remote database for storage in a field 350 associated with the remote property
values.
The field 350 may be, e.g., a notes field, hidden property, private expanded
property,
or any other similar unused field.
Other example embodiments provide that the property values that have time-
date information associated with them within the field 305 are a subset of the
total
number of property values. The subset may be chosen based on values associated
with the time-date information. For example, the most recent time-date
information

CA 02507424 2005-06-10
. - __ -
17
may be used to select the property values included within the subset.
Alternatively,
the frequency for which the property values have changed may be used to choose
the
subset.
In still other embodiments, the remaining portion of property values from the
total number of property values may be combined in a representation value 365
and
have time-date information associated with it 370. For example, the time-date
information 370 may be a most recently changed value for a total number of
properties within the rest of the properties. Alternatively, it may also be
bounded by a
lower time-date information 370 indicating when one of the properties within
the
remaining portion of property values was earliest in time to be synced.
Further, the
combined representation value 365 may be in the form of a hash of the
remaining
portion of property values.
Figure 5 illustrates a method 500 of receiving and storing time-date
information with a property value in the database, wherein the properties in a
database
are stored without corresponding time-date field. Method 500 includes an act
of
receiving 505 formatted time-date information. Time-date information being
associated with property values and formatted in a standard format parsable by
one or
more devices 210, 220 in the distributed computing system 200. Method 500 also

includes an act of storing 510 the formatted time-date information. The time-
date
information that is formatted may be stored in a database field 350 associated
with the
property value such that the formatted time-date information can be utilized
to resolve
data conflicts involving the property values.
Exemplary embodiments also allow for identifying and updating the formatted
time-date information. For example, when a property value has changed, the
formatted time-date information may be identified as being associated with the
property values. This formatted time-date information can then be updated in
the
database field in accordance with the changed property value. Example
embodiments
provide that this may be done by the remote device 205 with the appropriate
application software. For example, the formatted time-date information may be
received and stored on the remote device 205, and a user of the remote device
may
have made the change. Alternatively, a local machine 210, 220 may have made
the

CA 02507424 2005-06-10
18
change. The local machine 210, 220 storing unformatted time-date information
for
properties associated with the one or more property values in a database and
stores
this information within corresponding time-date fields. In other words, the
local
machine 210, 220 are high fidelity device.
Figure 6 illustrates a method 600 of resolving a data conflict between devices
in a distributed system. One of the devices within the distributed computing
system
stores properties in a database without a corresponding time-date field.
Method 600
includes an act of receiving 605 a remote property value. The remote property
value
received for a remote property and corresponding remote time data information
is also
received. Further, the remote time-date information is formatted in a standard
format
parsable by one or more devices in the distributed computing system, e.g., URI
or
Sync URL format. Method 600 also includes an act of detecting 610 a conflict.
The
conflict is between the remote property value and a corresponding local
property
value.
Method 600 may also include a functional result-oriented step for utilizing
620
remote time-date information. The time-date information may be utilized to
select an
appropriate property value to synchronize between a local device and a remote
device.
A step 620 may include an act of parsing 622 remote time-date information. The

remote time-date information parsed according to a standard format to identify
the
remote time and date, which indicates when the remote property value was
changed.
Step 620 may also include an act of comparing 624 remote time and date to
local time
and date. The local time and date indicating when a local property value was
changed. Finally, step 620 may include an act of resolving 626 the conflict.
The
resolution of the conflict will be based on the results of the comparison.
As previously mentioned, a standard format may be in the form of a URI. For
example, the URI may be a URL parsed into segments. Segments may include a
property identification corresponding to the remote property value, a
representation of
the remote property value and a representation of the time-date information.
Further,
the representation of the remote property value may be a hash and the
representation
of the time-date information may be a Hexadecimal number.

CA 02507424 2005-06-10
-
19
Other example embodiments provide for generating a local representation of
the remote property from the remote property value. The local representation
may
then be compared to the above-mentioned remote representation for determining
if the
remote property value has changed.
Figure 7 illustrates a method 700 for determining when a value for a property
has changed since a last synchronization of the property between the remote
device
and a local machine. Method 700 includes an act of receiving 705 a current
value for
a remote property. Further, a remote representation of a prior value of the
remote
property is also received. Method 700 may also include an act of generating
710 local
representation of remote property. The local representation being generated
from the
current value for the remote property. Method 700 also includes an act of
comparing
715 the remote representation to the local representation. Finally, method 700

includes an act of determining 720 prior remote property was changed. This
determination indicates that the property value was changed after the remote
representation was generated. Accordingly, if time-date information is
associated
with the remote property in, e.g., Sync URL 305, such information is
potentially
unreliable, and it may be discarded.
Figure 8 illustrates a method 800 of selecting a limited set of property
values
from among a plurality of property values. The property values are to be
assigned
time-date information for a device that stores properties in a database
without a
corresponding time-date fields. Method 800 includes an act of receiving 805
property
values from a remote device. Method 800 also includes an act of selecting 810
a
limited set of time-date information. A limited set of property values may be
selected
from the plurality of property values based on the available resources of the
remote
device. Method 800 also includes an act of identifying 815 a set of time-date
information. Each of the property values in the limited set corresponding to a

different portion of the set of time-date information. Method 800 also
includes an act
of storing 820 different portions of time-date information in a remote
database.
Method 800 may also include identifying the remaining portions of property
values and storing them as a representation value and associating time-date
information with them. For example, a portion of time-date information for the

CA 02507424 2005-06-10
- - - - - __
remaining property values may be identified (the remaining property values not
being
in the limited set of property values). The identified portion of time-date
information
may be stored in one location in the remote database such that the identified
portion
of time-date information corresponds to all of the remaining property values.
5 Embodiments within the scope of the present invention also include
computer-
readable media for carrying or having computer-executable instructions or data

structures stored thereon. Such computer-readable media can be any available
media
that can be accessed by a general purpose or special purpose computer. By way
of
example, and not limitation, such computer-readable media can comprise RAM,
10 ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage
or
other magnetic storage devices, or any other medium which can be used to carry
or
store desired program code means in the form of computer-executable
instructions or
data structures and which can be accessed by a general purpose or special
purpose
computer. When information is transferred or provided over a network or
another
15 communications connection (either hardwired, wireless, or a combination of
hardwired or wireless) to a computer, the computer properly views the
connection as a
computer-readable medium. Thus, any such connection is properly termed a
computer-readable medium. Combinations of the above should also be included
within the scope of computer-readable media. Computer-executable instructions
20 comprise, for example, instructions and data which cause a general
purpose computer,
special purpose computer, or special purpose processing device to perform a
certain
function or group of functions.
Figure 9 and the following discussion are intended to provide a brief, general

description of a suitable computing environment in which the invention may be
implemented. Although not required, the invention will be described in the
general
context of computer-executable instructions, such as program modules, being
executed by computers in network environments. Generally, program modules
include routines, programs, objects, components, data structures, etc. that
perform
particular tasks or implement particular abstract data types. Computer-
executable
instructions, associated data structures, and program modules represent
examples of
the program code means for executing steps of the methods disclosed herein.
The

CA 02507424 2005-06-10
21
particular sequence of such executable instructions or associated data
structures
represents examples of corresponding acts for implementing the functions
described
in such steps.
Those skilled in the art will appreciate that the invention may be practiced
in
network computing environments with many types of computer system
configurations, including personal computers, hand-held devices, multi-
processor
systems, microprocessor-based or programmable consumer electronics, network
PCs,
minicomputers, mainframe computers, and the like. The invention may also be
practiced in distributed computing environments where tasks are performed by
local
and remote processing devices that are linked (either by hardwired links,
wireless
links, or by a combination of hardwired or wireless links) through a
communications
network. In a distributed computing environment, program modules may be
located
in both local and remote memory storage devices.
With reference to Figure 9, an exemplary system for implementing the
invention includes a general purpose computing device in the form of a
conventional
computer 920, including a processing unit 921, a system memory 922, and a
system
bus 923 that couples various system components including the system memory 922
to
the processing unit 921. The system bus 923 may be any of several types of bus

structures including a memory bus or memory controller, a peripheral bus, and
a local
bus using any of a variety of bus architectures. The system memory includes
read
only memory (ROM) 924 and random access memory (RAM) 925. A basic
input/output system (BIOS) 926, containing the basic routines that help
transfer
information between elements within the computer 920, such as during start-up,
may
be stored in ROM 924.
The computer 920 may also include a magnetic hard disk drive 927 for
reading from and writing to a magnetic hard disk 939, a magnetic disk drive
928 for
reading from or writing to a removable magnetic disk 929, and an optical disk
drive
930 for reading from or writing to removable optical disk 931 such as a CD-ROM
or
other optical media. The magnetic hard disk drive 927, magnetic disk drive
928, and
optical disk drive 930 are connected to the system bus 923 by a hard disk
drive
interface 932, a magnetic disk drive-interface 933, and an optical drive
interface 934,
__________ _ __

CA 02507424 2005-06-10
22
respectively. The drives and their associated computer-readable media provide
nonvolatile storage of computer-executable instructions, data structures,
program
modules and other data for the computer 920. Although the exemplary
environment
described herein employs a magnetic hard disk 939, a removable magnetic disk
929
and a removable optical disk 931, other types of computer readable media for
storing
data can be used, including magnetic cassettes, flash memory cards, digital
versatile
disks, Bernoulli cartridges, RAMs, ROMs, and the like.
Program code means comprising one or more program modules may be stored
on the hard disk 939, magnetic disk 929, optical disk 931, ROM 924 or RAM 925,
including an operating system 935, one or more application programs 936, other

program modules 937, and program data 938. A user may enter commands and
information into the computer 920 through keyboard 940, pointing device 942,
or
other input devices (not shown), such as a microphone, joy stick, game pad,
satellite
dish, scanner, or the like. These and other input devices are often connected
to the
processing unit 921 through a serial port interface 946 coupled to system bus
923.
Alternatively, the input devices may be connected by other interfaces, such as
a
parallel port, a game port or a universal serial bus (USB). A monitor 947 or
another
display device is also connected to system bus 923 via an interface, such as
video
adapter 948. In addition to the monitor, personal computers typically include
other
peripheral output devices (not shown), such as speakers and printers.
The computer 920 may operate in a networked environment using logical
connections to one or more remote computers, such as remote computers 949a and

949b. Remote computers 949a and 949b may each be another personal computer, a
server, a router, a network PC, a peer device or other common network node,
and
typically include many or all of the elements described above relative to the
computer
920, although only memory storage devices 950a and 950b and their associated
application programs 936a and 936b have been illustrated in Figure 9. The
logical
connections depicted in Figure 9 include a local area network (LAN) 951 and a
wide
area network (WAN) 952 that are presented here by way of example and not
limitation. Such networking environments are commonplace in office-wide or
enterprise-wide computer networks, intranets and the Internet.

CA 02507424 2012-08-10
51007-69
23
When used in a LAN networking environment, the computer 920 is connected
to the local network 951 through a network interface or adapter 953. When used
in a
WAN networking environment, the computer 920 may include a modem 954, a
wireless link, or other means for establishing communications over the wide
area
network 952, such as the Internet. The modem 954, which may be internal or
external, is connected to the system bus 923 via the serial port interface
946. In a
networked environment, program modules depicted relative to the computer 920,
or
portions thereof, may be stored in the remote memory storage device. It will
be
appreciated that the network connections shown are exemplary and other means
of
establishing communications over wide area network 952 may be used.
The present invention may be embodied in other specific forms without
departing from the scope of the claims. The
described embodiments are
to be considered in all respects only as illustrative and not restrictive. The
scope of
the invention is, therefore, indicated by the appended claims rather than by
the
foregoing description. All changes which come within the meaning and range of
equivalency of the claims are to be embraced within their scope.

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2013-10-08
(86) PCT Filing Date 2004-07-30
(85) National Entry 2005-06-10
(87) PCT Publication Date 2005-10-30
Examination Requested 2009-07-30
(45) Issued 2013-10-08
Deemed Expired 2019-07-30

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $400.00 2005-06-10
Registration of a document - section 124 $100.00 2005-10-24
Registration of a document - section 124 $100.00 2005-10-24
Registration of a document - section 124 $100.00 2005-10-24
Maintenance Fee - Application - New Act 2 2006-07-31 $100.00 2006-06-08
Maintenance Fee - Application - New Act 3 2007-07-30 $100.00 2007-06-05
Maintenance Fee - Application - New Act 4 2008-07-30 $100.00 2008-06-04
Maintenance Fee - Application - New Act 5 2009-07-30 $200.00 2009-06-09
Request for Examination $800.00 2009-07-30
Maintenance Fee - Application - New Act 6 2010-07-30 $200.00 2010-06-08
Maintenance Fee - Application - New Act 7 2011-08-01 $200.00 2011-06-07
Maintenance Fee - Application - New Act 8 2012-07-30 $200.00 2012-06-11
Maintenance Fee - Application - New Act 9 2013-07-30 $200.00 2013-06-21
Final Fee $300.00 2013-07-23
Maintenance Fee - Patent - New Act 10 2014-07-30 $250.00 2014-06-17
Registration of a document - section 124 $100.00 2015-03-31
Maintenance Fee - Patent - New Act 11 2015-07-30 $250.00 2015-06-17
Maintenance Fee - Patent - New Act 12 2016-08-01 $250.00 2016-07-06
Maintenance Fee - Patent - New Act 13 2017-07-31 $250.00 2017-07-05
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
MICROSOFT TECHNOLOGY LICENSING, LLC
Past Owners on Record
MICROSOFT CORPORATION
STARBUCK, BRYAN T.
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Cover Page 2005-10-14 1 49
Abstract 2005-06-10 1 26
Description 2005-06-10 23 1,224
Claims 2005-06-10 16 750
Drawings 2005-06-10 7 131
Representative Drawing 2005-09-07 1 11
Claims 2005-06-11 12 429
Claims 2009-07-30 9 413
Description 2009-07-30 27 1,454
Claims 2012-08-10 9 374
Description 2012-08-10 27 1,452
Abstract 2013-05-03 1 26
Cover Page 2013-09-09 1 51
Prosecution-Amendment 2009-07-30 1 44
Fees 2009-05-13 1 30
Prosecution-Amendment 2009-07-30 15 690
Assignment 2005-06-10 2 82
Prosecution-Amendment 2005-06-10 13 461
Correspondence 2005-07-11 1 26
Assignment 2005-10-24 15 720
Correspondence 2006-03-24 1 48
Prosecution-Amendment 2009-07-30 1 43
Prosecution-Amendment 2012-06-27 2 62
Prosecution-Amendment 2012-08-10 12 494
PCT 2013-05-14 7 303
Correspondence 2013-07-23 2 67
Assignment 2015-03-31 31 1,905