IP Library Granted Patent US 6,957,230
Granted Patent B2
US 6,957,230 · App. 09/995,414 · Granted Oct 18, 2005

Dynamically generating multiple hierarchies of inter-object relationships based on object attribute values

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 6,957,230
App. No.
09/995,414
Granted
Oct 18, 2005
Kind
B2
Abstract

The described arrangements and procedures dynamically generate a data polyarchy from information received from a data store (e.g., a directory or database). The data polyarchy represents multiple hierarchies of inter-object relationships based on values of attributes of the objects. These multiple hierarchies are generated and represented in a manner that is independent of object naming and predetermined hierarchical data structures.

Claims (142)

1. In a distributed computing environment, a computer-implemented method comprising:

receiving data from a data store, the data corresponding to a plurality of objects, each object of the objects comprising one or more respective attributes;

responsive to receiving the data, dynamically generating multiple hierarchies of inter-object relationships based on values of attributes of the objects, the multiple hierarchies of inter-object relationships being a data polyarchy; and

wherein generating the data polyarchy further comprises:

identifying a plurality of distinguishing attributes, each distinguishing attribute representing a respective object of the objects that is a root of a hierarchy, each distinguishing attribute being from a substantially unique distribution of similar attributes across the objects;

identifying one or more locating attributes for narrowing a search for an object of the objects; each locating attribute being from a relatively large distribution of similar attributes across the objects; and

identifying one or more classifying attributes for filtering out objects from a search for an object, each classifying attribute being from a relatively small distribution of similar attributes across the objects.

2. A method as recited in claim 1 , wherein the data store comprises a directory or a database.

3. A method as recited in claim 1 , wherein the data polyarchy comprises intersecting hierarchies of inter-object relationships.

4. A method as recited in claim 1 , wherein the data polyarchy comprises an elastic inter-object relationship.

5. A method as recited in claim 1 , wherein dynamically generating multiple hierarchies of inter-object relationships further comprises:

identifying a dimensional relationship of one or more dimensional relationships between a first and second object of the objects; and

inserting the first object into the second object such that the first object is represented in the second object with respect to the dimensional relationship, or inserting a link to the first object in the second object with respect to the dimensional relationship.

6. A method as recited in claim 5 , wherein the link is a jump gate.

7. A method as recited in claim 1 , wherein the multiple hierarchies of inter-object relationships are represented independent of object naming and independent of a predetermined hierarchical data structure.

8. A method as recited in claim 1 , wherein the inter-object relationships represent mono-directional object relationships and bi-directional object relationships.

9. A method as recited in claim 1 , wherein the data palyarchy comprises a membership hierarchy that provides for de-referenced dimensional navigation of a many-to-many object relationship.

10. A method as recited in claim 1 , wherein generating the data polyarchy further comprises:

relating a first and a second object of the objects to a third object of the objects to facilitate de-referenced dimensional navigation of a many-to-many object relationship between the first, second, and third objects.

11. A method as recited in claim 1 , further comprising naming an inter-object relationship in the data polyarchy with a natural language.

12. A method as recited in claim 1 , wherein generating the data polyarchy further comprises establishing, for individual ones of the objects, a plurality of predicates to indicate how to access the individual ones of the objects.

13. A method as recited in claim 1 , wherein generating the data polyarchy further comprises establishing for individual ones of the objects a plurality of domain properties to index the individual ones of the objects.

14. A method as recited in claim 13 , wherein the domain properties comprise a data type, a data precision indication, a scale indication, and a nullability indication.

15. A method as recited in claim 1 , wherein generating the data polyarchy further comprises determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes.

16. A method as recited in claim 1 , wherein generating the data polyarchy further comprises:

determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes, and wherein the strategy comprises one or more of the following operations:

a first operation to find a default search object of the objects;

a second operation to locate a particular object of the objects;

a third operation to obtain a default hierarchy of data relationships that correspond to a particular object of the objects;

a fourth operation to obtain a particular hierarchy of data relationships that correspond to a particular object of the objects;

a fifth operation to identify at least one subset of a plurality of hierarchies of data relationships that correspond to a particular object of the objects; and

a sixth operation to obtain multiple hierarchies of data relationships that correspond to a particular object of the objects.

17. A method as recited in claim 16 , wherein the strategy comprises a recursive access strategy or a linear scan access strategy.

18. A method as recited in claim 16 , wherein the domain properties comprise a logical domain property comprising a distinguishing domain, a locating domain, or a classifying domain.

19. A computer for representing directory-based object relationships, the computer comprising:

a processor; and

a memory coupled to the processor, the memory comprising computer-executable instructions and data, the processor for fetching and executing the computer-executable instructions, the computer-executable instructions comprising instructions for:

receiving data from a data store, the data corresponding to a plurality of objects, each object of the objects comprising one or more respective attributes;

responsive to receiving the data, dynamically generating multiple hierarchies of inter-object relationships based on values of attributes of the objects, the multiple hierarchies of inter-object relationships being a data polyarchy; and

wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

identifying a plurality of distinguishing attributes, each distinguishing attribute representing a respective object of the objects that is a root of a hierarchy, each distinguishing attribute being from a substantially unique distribution of similar attributes across the objects;

identifying one or more locating attributes for narrowing a search for an object of the objects; each locating attribute being from a relatively large distribution of similar attributes across the objects; and

identifying one or more classifying attributes for filtering out objects from a search for an object, each classifying attribute being from a relatively small distribution of similar attributes across the objects.

20. A computer as recited in claim 19 , wherein the data store comprises a directory or a database.

21. A computer as recited in claim 19 , wherein the data polyarchy comprises intersecting hierarchies of inter-object relationships.

22. A computer as recited in claim 19 , wherein the data polyarchy comprises an elastic inter-object relationship.

23. A computer as recited in claim 19 , wherein the computer-executable instructions for dynamically generating multiple hierarchies of inter-object relationships further comprise instructions for:

identifying a dimensional relationship of one or more dimensional relationships between a first and second object of the objects; and

inserting the first object into the second object such that the first object is represented in the second object with respect to the dimensional relationship.

24. A computer as recited in claim 19 , wherein first and second objects of the objects are respectively represented in the data polyarchy as separate entities, and wherein the computer-executable instructions for dynamically generating multiple hierarchies of inter-object relationships further comprise instructions for:

identifying a dimensional relationship of one or more dimensional relationships between the first object and the second object; and

inserting a link to the first object in die second object with respect to the dimensional relationship.

25. A computer as recited in claim 24 , wherein the link is a jump gate.

26. A computer as recited in claim 19 , wherein the multiple hierarchies of inter-object relationships are represented independent of object naming and independent of a predetermined hierarchical data structure.

27. A computer as recited in claim 19 , wherein the inter-object relationships represent mono-directional object relationships and bi-directional object relationships.

28. A computer as recited in claim 19 , wherein is the data polyarchy comprises a membership hierarchy that provides for de-referenced dimensional navigation of a many-to-many object relationship.

29. A computer as recited in claim 19 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

relating a first and a second object of the objects to a third object of the objects to facilitate de-referenced dimensional navigation of a many-to-many object relationship between the just, second, and third objects.

30. A computer as recited in claim 19 , wherein the computer-executable instructions for generating the data polyarchy further comprises instructions for establishing, for individual ones of the objects, a plurality of predicates to indicate how to access the individual ones of the objects.

31. A computer as recited in claim 19 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for establishing for individual ones of the objects a plurality of domain properties identify to index the individual ones of the objects.

32. A computer as recited in claim 31 , wherein the domain properties comprise a data type, a data precision indication, a scale indication, and a nullability indication.

33. A computer as recited in claim 19 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes.

34. A computer as recited in claim 19 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes, and wherein the strategy comprises one or more of the following operations:

a first operation to find a default search object of the objects;

a second operation to locate a particular object of the objects;

a third operation to obtain a default hierarchy of data relationships that correspond to a particular object of the objects;

a fourth operation to obtain a particular hierarchy of data relationships that correspond to a particular object of the objects;

a fifth operation to identify at least one subset of a plurality of hierarchies of data relationships that correspond to a particular object of the objects; and

a sixth operation to obtain multiple hierarchies of data relationships that correspond to a particular object of the objects.

35. A computer as recited in claim 34 , wherein the strategy comprises a recursive access strategy or a linear scan access strategy.

36. A computer as recited in claim 36 wherein the domain properties comprise a logical domain property comprising a distinguishing domain, a locating domain, or a classifying domain.

37. A computer-readable medium comprising computer-executable instructions for:

receiving data from a data store, the data corresponding to a plurality of objects;

responsive to receiving the data, dynamically generating multiple hierarchies inter-object relation based on values of attributes of the object, the multiple hierarchies of inter-object relationships being a data polyarchy; and

wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

identifying a plurality of distinguishing attributes, each distinguishing attribute representing a respective object of the objects that is a root of a hierarchy, each distinguishing attribute being from a substantially unique distribution of similar attributes across the objects;

identifying one or more locating attributes for narrowing a search for an object of the objects; each locating attribute being from a relatively large distribution of similar attributes across the objects; and

identifying one or more classifying attributes for filtering out objects from a search for an object, each classifying attribute being from a relatively small distribution of similar attributes across the objects.

38. A computer-readable medium as recited in claim 37 , wherein the data store comprises a directory or a database.

39. A computer-readable medium as recited in claim 37 , wherein the data polyarchy comprises intersecting hierarchies of inter-object relationships.

40. A computer-readable medium as recited in claim 37 , wherein the data polyarchy comprises an elastic inter-object relationship.

41. A computer-readable medium as recited in claim 37 , wherein the data polyarchy comprises a complex object that is related to one or more sub-objects in the data polyarchy, and wherein the computer-executable instructions for determining inter-object relationships further comprise instructions for:

representing the complex object as an independent surface entity; and

referencing the one or more sub-objects in the independent surface entity as separate entities, the one or more sub-objects being referenced independent of object naming and independent of a hierarchical data relationship between the surface entity and the one or more sub-objects.

42. A computer-readable medium as recited in claim 37 , wherein the data polyarchy comprises a first object that is related to one or more sub-objects in the data polyarchy, and wherein the computer-executable instructions for determining the inter-object relationships further comprise instructions for:

representing the first object as a surface entity;

representing each of the one or more sub-objects as respective separate entities that are independent of the surface entity; and

referencing the surface object in each of the one or more sub-objects independent of any object naming or hierarchical relationship.

43. A computer-readable medium as recited in claim 37 , wherein the multiple hierarchies of inter-object relationships are represented independent of object naming and independent of a predetermined hierarchical data structure.

44. A computer-readable medium as recited in claim 37 , wherein the inter-object relationships represent mono-directional object relationships and bi-directional object relationships.

45. A computer-readable medium as recited in claim 37 , wherein is the data polyarchy comprises a membership hierarchy that provides for de-referenced dimensional navigation of a many-to-many object relationship.

46. A computer-readable medium as recited in claim 37 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

relating a first and a second object of the objects to a third object of the objects to facilitate de-referenced dimensional navigation of a many-to-many object relationship between the first, second, and third objects.

47. A computer-readable medium as recited in claim 37 , wherein the computer-executable instructions for generating the data polyarchy further comprises instructions for establishing, for individual ones of the objects, a plurality of predicates to indicate how to access the individual ones of the objects.

48. A computer-readable medium as recited in claim 37 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes.

49. A computer-readable medium as recited in claim 37 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for establishing for individual ones of the objects a plurality of domain properties identify to index the individual ones of the objects.

50. A computer-readable medium as recited in claim 49 , wherein the domain properties comprise a data type, a data precision indication, a scale indication, and a nullability indication.

51. A computer-readable medium as recited in claim 37 , wherein the computer-executable instructions for generating the data polyarchy further comprise instructions for:

determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes, and wherein the strategy comprises one or more of the following operations:

a first operation to find a default search object of the objects;

a second operation to locate a particular object of the objects;

a third operation to obtain a default hierarchy of data relationships that correspond to a particular object of the objects;

a fourth operation to obtain a particular hierarchy of data relationships that correspond to a particular object of the objects;

a fifth operation to identify at least one subset of a plurality of hierarchies of data relationships that correspond to a particular object of the objects; and

a sixth operation to obtain multiple hierarchies of data relationships that correspond to a particular object of the objects.

52. A computer-readable medium as recited in claim 51 , wherein the strategy comprises a recursive access strategy or a linear scan access strategy.

53. A computer-readable medium as recited in claim 51 , wherein the domain properties comprise a logical domain property comprising a distinguishing domain, a locating domain, or a classifying domain.

54. A computer for representing directory-based object inter-object relationships, the computer comprising processing means for:

receiving data from a data store, the data corresponding to a plurality of objects, each object of the objects comprising one or more respective attributes;

responsive to receiving the data, dynamically generating multiple hierarchies of inter-object relationships based on values of attributes of the objects, the multiple hierarchies of inter-object relationships being a data polyarchy; and

and wherein the processing means for generating the data polyarchy further comprise processing means for:

identifying a plurality of distinguishing attributes, each distinguishing attribute representing a respective object of the objects that is a root of a hierarchy, each distinguishing attribute being from a substantially unique distribution of similar attributes across the objects;

identifying one or more locating attributes for narrowing a search for an object of the objects; each locating attribute being from a relatively large distribution of similar attributes across the objects; and

identifying one or more classifying attributes for filtering out objects from a search for an object, each classifying attribute being from a relatively small distribution of similar attributes across the objects.

55. A computer as recited in claim 54 , wherein the data polyarchy comprises intersecting hierarchies of inter-object relationships.

56. A computer as recited in claim 54 , wherein the data polyarchy comprises an elastic inter-object relationship.

57. A computer as recited in claim 54 , wherein the means for dynamically generating multiple hierarchies of inter-object relationships further comprise means for:

identifying a dimensional relationship of one or more dimensional relationships between a first and second object of the objects; and

inserting the first object into the second object such that the first object is represented in the second object with respect to the dimensional relationship.

58. A computer as recited in claim 54 , wherein first and second objects of the objects are respectively represented in the data polyarchy as separate entities, and wherein the means for dynamically generating multiple hierarchies of inter-object relationships further comprise means for:

identifying a dimensional relationship of one or more dimensional relationships between the first object and the second object; and

inserting a link to the first object in the second object with respect to the dimensional relationship.

59. A computer as recited in claim 58 , wherein the link is a jump gate.

60. A computer as recited in claim 54 , wherein the multiple hierarchies of inter-object relationships are represented independent of object naming and independent of a predetermined hierarchical data structure.

61. A computer as recited in claim 54 , wherein is the data polyarchy comprises a membership hierarchy that provides for de-referenced dimensional navigation of a many-to-many object relationship.

62. A computer as recited in claim 54 , wherein the means for generating the data polyarchy further comprise means for:

relating a first and a second object of the objects to a third object of the objects to facilitate de-referenced dimensional navigation of a many-to-many object relationship between the first, second, and third objects.

63. A computer as recited in claim 54 , wherein the means for generating the data polyarchy further comprises means for establishing, for individual ones of the objects, a plurality of predicates to indicate how to access the individual ones of the objects.

64. A computer as recited in claim 54 , wherein the means for generating the data polyarchy further comprise means for establishing for individual ones of the objects a plurality of domain properties identify to index the individual ones of the objects.

65. A computer as recited in claim 64 , wherein the domain properties comprise a data type, a data precision indication, a scale indication, and a nullability indication.

66. A computer as recited in claim 54 , wherein the means for generating the data polyarchy further comprise means for determining the relative distribution of attributes of the objects to establish a strategy to present or search for objects that comprise the attributes.

67. A computer as recited in claim 54 , wherein the means for generating the data polyarchy further comprise means for:

determining the relative distribution of values assumed by attributes of the objects to establish a strategy to present or search for objects that comprise the attributes, and wherein the strategy comprises one or more of the following operations:

a first operation to find a default search object of the objects;

a second operation to locate a particular object of the objects;

a third operation to obtain a default hierarchy of data relationships that correspond to a particular object of the objects;

a fourth operation to obtain a particular hierarchy of data relationships that correspond to a particular object of the objects;

a fifth operation to identify at least one subset of a plurality of hierarchies of data relationships that correspond to a particular object of the objects; and

a sixth operation to obtain multiple hierarchies of data relationships that correspond to a particular object of the objects.

68. A computer as recited in claim 67 , wherein the strategy comprises a recursive access strategy or a linear scan access strategy.

69. A computer as recited in claim 67 , wherein the domain properties comprise a logical domain property comprising a distinguishing domain, a locating domain, or a classifying domain.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2002
From: CAMERON, KIM; ROBERTSON, GEORGE G.; BROWN, MARK R.
To: MICROSOFT CORPORATION
Reel/Frame 012741/0125 →
Continuity (2)
Provisional Application 6025034400 · Nov 30, 2000
Related Publication 20030004964A1 · Jan 2, 2003