1. Technical Field
The present disclosure relates generally to computer-aided design, and more specifically to techniques for simplifying graphs representing complex information relationships in a model.
2. Background Information
To better manage the complexities of modern designs, engineers and designers often turn to computer-aided design. In computer-aided design, an engineer or designer creates a model that embodies, or otherwise represents, a physical entity. For example, a model may represent a three-dimensional object or structure, such a building or component. The model is typically refined and analyzed by engineers and/or designers, sometime aided by analytical tools. During refinement and analysis, the engineers and/or designers may review the model from different perspectives, and consider different features thereof. A completed model may be used to generate documents (such as plans) useful in building the physical entity, or for other purposes.
The models of many physical entities contain large amounts of information that have complex information relationships. Graphs are often maintained by computer systems to represent the complex information relationships, and to facilitate their display to a user. In general, a graph (G) is a structure that comprises two sets: a set (V) of nodes and a set (E) of links (alternatively referred to as “edges”) that connect nodes, such that a graph may be represented mathematically as G=<V,E>. The semantics (i.e., meaning) of a graph is typically defined by the semantics of the nodes (e.g., the portion of the physical entity each node represents), the semantics of the links (e.g., the relationship between portions of the physical entity the links signify), and the topology of the graph (e.g., the arrangement of the nodes and links). For example, in a graph corresponding to a three-dimensional structure being modeled, each node may represent a point, a line, a curve, a plane, etc., while each link may represent a relationship between nodes, and the arrangement of the nodes and links may define the contours of the three-dimensional object.
When a graph is presented to a user by a computer system, for example, on a display screen of the computer system, the user interprets (i.e., consumes) the semantics of the graph to understand the information being conveyed. When graphs are small and simple, the user may readily consume all the semantics being conveyed. For example, in a graph corresponding to a simple three-dimensional object, having a few nodes and links, the user may be able to readily interpret the semantics of the nodes, the semantics of the links, and the topology of the graph.
However, in the case of large, complex graphs, it may be difficult, or impossible, for a user to consume all the semantics of the graph at one time. The user may simply be overwhelmed by the amount of information presented. To address this issue, some modeling platforms attempt to group elements (e.g., links and nodes) to reduce the number of elements displayed to the user. In this manner, a simplified graph is created and then presented. However, such modeling platforms typically do not preserved all the semantics of the original graph. For instance, the semantics of the nodes and/or the semantics of the links are often not fully preserved in a form that permits a user to readily access the semantics (e.g., via a query) and/or to restore the graph to an unsimplified form (e.g., by ungrouping the elements). Typically, at least some semantics are not readily accessible and/or are not readily restorable. The loss of semantics may be particularly acute when graph simplification results in a large number of nested groups of elements, with semantics generally being lost when the levels of nesting increases beyond certain limits.
Accordingly, there is a need for improved techniques for simplifying a graph that represents complex information relations in a model of a physical entity, where such techniques better preserve graph semantics.
According to one embodiment of the present disclosure, graph elements, including both primitive elements and group elements, are represented by data structures that maintain graph semantics. Further, special recursive grouping and ungrouping algorithms are applied to these data structures to simplify a graph to a less-granular representation while preserving the graph semantics, and fully restoring the graph to a more-granular representation. While in a simplified form, a user may readily access the semantics via a query entered in a user interface of a modeling application. Further, if a user edits or changes the simplified form of the graph, via the user interface of the modeling application, such changes may be propagated through the set of data structures and reflected when a more-granular representation of the graph is displayed.
Example data structures may include a node data structure, instantiations of which are used to represent each primitive node and group node, as well as a link data structure, instantiations of which are used to represent each primitive link and group link. The node data structure may include a node name (i.e., an identifier of the node on the graph), and a node reference (i.e., an indication of the semantics of the node). If the node data structure corresponds to a primitive node, the node reference may be empty. However, if the node data structure corresponds to a group node, the node reference may indicate a set of nodes and links subsumed by the group node. Similarly, the link data structure may include a link origin identifier (i.e., an identifier of where the link originates in the graph topology), a link destination identifier (i.e., an identifier of where the link terminates in the graph topology) and a link reference (i.e., an indication of the semantics of the link). If the link data structure corresponds to a primitive link, the link reference may be empty. However, if the link data structure corresponds to a group link, the link reference may indicate a set of links.
An example recursive grouping algorithm may first create a group node corresponding to a group of two or more selected nodes (e.g., primitive nodes or group nodes) to be subsumed. Each of the selected nodes may be added to a set of nodes in the nodes data structure. Any links (e.g., primitive links or group links) that extend between ones of the selected nodes may be added to the set of links in the node's data structure. Any links that extend between a selected node and a non-selected node may be identified. If there is at least one unexamined link between a selected node and a non-selected node, one such link is examined, and a determination is made whether a group link already exists between the group node and the non-selected node. If not, a group link may be created between the group node and the non-selected node. The examined link between the selected node and the non-selected node may be added to the listing of links in the group link's link data structure. Execution then loops back, until there are no more links between a selected node and a non-selected node. Then any selected nodes, and any links that exist between a selected node and a non-selected node, are removed from the graph, to create a less-granular (simplified) representation.
An example recursive ungrouping algorithm may first create each node (e.g., a primitive node or group node) in a set of nodes in a group node's data structure. Each link (e.g., a primitive link or group link) in a set of links in the group node's data structure may also be created. If there is at least one unexamined group link that connects directly to the group node, a group link is examined and the listing of links of that group data structure is accessed. For each link found in the listing of links, a link is created in the graph. Execution then loops back. Eventually, if there is not at least one unexamined group link that connects directly to the group node, the group node, and any links that connect directly to the group node, are removed from the graph, to create a more granular (unsimplified) representation.
Various other techniques, adaptations of techniques, and the like, may also and/or alternatively be employed, and this summary is merely provided as an illustrative example.
The detailed description below refers to the accompanying drawings, of which:
In addition, the memory 130 may store portions of other software, including a including portions of a modeling application 145, and in some cases, one or more analytical applications 140 operating within a technology platform 147. The modeling application 145 may maintain a model that embodies, or otherwise represents, a physical entity, the information relationships in the model being maintained in at least one graph. As explained in more detail below, a number of data structure may be used to maintain a graph. Such data structures may be loaded into the volatile memory 130 from the persistent storage device 180 when needed.
In one embodiment, the modeling application 145 may be an associative and parametric modeling application, such as the MicroStation Generative Components™ associative and parametric modeling application, available from Bentley Systems Inc. Further details regarding certain aspects of the MicroStation Generative Components Extension™ associative and parametric modeling application may be found in U.S. patent application Ser. No. 12/030,408, published as U.S. Publication No. 2009/0204373, filed Feb. 13, 2008 and titled “System, Method and Computer Program Product for Computer Modeling with Generative Components”, which is incorporated by reference herein in its entirety. Further, in one embodiment, the technology platform 147 may be the MicroStation Triforma® technology platform, also available from Bentley Systems Inc.
It should be understood that both the modeling application 145 and the technology platform 147 may alternately be other applications. For example, the modeling application 145 may be a building analysis and design application, a plant design and engineering application, a communications network design application, a rail design application, an electric and gas utility network analysis and design application, a road and site design application, a water network analysis and design application, a mapping application, or any of a variety of other types of modeling applications that may maintain a model.
Returning to
The I/O bus 150 may further be coupled to a network interface 185 that interfaces via a computer network 187 with one or more servers 190. Each server 190 may include components similar to computer 105, and together with computer 105 may facilitate a variety of parallel, distributed, virtualized and other computing arrangements. In general, it should be understood that the arrangement of computing platforms depicted in
The primitive nodes 202-216 of the graph may be logically grouped to facilitate simplification of the graph. Groups may be discrete collections of primitive nodes, or may nest among each other, such that a group may include other groups, as well as individual primitive nodes. For example, referring to
Elements of a graph may be represented in a simplified graph topology as group elements, which replace the underlying graph elements. As user herein, the term “group element” refers to a type of graph element that includes at least two elements (either primitive elements or other group elements). A group element may be a “group node”, i.e., a type of graph node that includes at least two nodes (either primitive nodes or other group nodes), and optionally also includes one or more primitive links and/or one or more group links. Similarly, a group element may be a “group link”, i.e., a type of link that extends between a group node and a primitive node, or that extends between a group node and another group node.
When primitive nodes 202-216 are logically grouped, some primitive links 220-252 may be fully subsumed within a particular group. For example, primitive link (
Other primitive links, while not fully subsumed, may be merged or adapted to account for the establishment of groups. Primitive links may be merged where they would be redundant after formation of a group. For example, primitive link (
As discussed above, some modeling platforms do not fully preserved all the semantics of a graph when groups are established to simplify a graph. For instance, the semantics of the nodes and/or the semantics of the links, are typically not fully preserved in a form that permits a user to readily access the semantics (e.g., via a query) and/or to restore the graph to an unsimplified form (e.g., by ungrouping the elements). The loss of semantics may be particularly acute when the simplification results in a large number of nested groups of elements, with semantics being lost as the levels of nesting increases beyond certain limits. Such deficiencies may be addressed by the embodiments described herein.
According to one embodiment of the present disclosure, graph elements, including both primitive elements and group elements, are represented by data structures that maintain graph semantics. Further, special recursive grouping and ungrouping algorithms are applied to these data structures to simplify a graph to a less-granular representation, while preserving the graph semantics, to allow for fully restoring the graph to a more-granular representation. While in a simplified form, a user may readily access the semantics via a query entered in a user interface of the modeling application 145. Further, if a user edits or changes the simplified form of the graph, via the user interface of the modeling application 145, the such changes may be propagated through the set of data structures and reflected when a more-granular representation of the graph is displayed.
In one embodiment, the data structures include a node data structure, instantiations of which are used to represent each primitive node and group node, as well as a link data structure, instantiations of which are used to represent each primitive link and group link. The node data structure may include a node name (i.e., an identifier of a the node on the graph), and a node reference (i.e., an indication of the semantics of the node). If the node data structure corresponds to a primitive node, the node reference may be empty. However, if the node data structure corresponds to a group node, the node reference may indicate, for example, recursively, a set of nodes and links subsumed by the group node. Similarly, the link data structure may include a link origin identifier (i.e., an identifier of where the link originates in the graph topology), a link destination identifier (i.e., an identifier of where the link terminates in the graph topology) and a link reference (i.e., an indication of the semantics of the link). If the node data structure corresponds to a primitive link, the link reference may be empty. However, if the link data structure corresponds to a group link, the link reference may indicate, for example, recursively, a set of links.
The data structures, in one embodiment, are defined in a .NET languages understandable by the modeling application 145, such as C# and VB.NET. In other embodiments, the data structures may be defined in a wide variety of other programming languages.
For ease of describing the example grouping and ungrouping algorithms of the present disclosure, the example node data structure 400, is may be referred to with the shorthand expression:
Using the short hand discussed above, the example node data structure 470 corresponding to group node G1 305, may be abbreviated with the shorthand expression:
For ease of describing the grouping and ungrouping algorithms of the present disclosure, the example link data structure 500 may be referred to with the shorthand expression:
Using the short hand discussed above, the example link data structure 570 corresponding to group link X1 310 in
The above described data structures may be used with special recursive grouping and ungrouping algorithms to simplify a graph to a less-granular representation while preserving the graph semantics, and fully restoring the graph to a more-granular representation. Such algorithms may take advantage of the unified data structure formats for both primitive elements and group elements, which enable recursive operation.
Operation of the above described example grouping algorithm and ungrouping algorithm may be further illustrated by a sequence of examples. Referring to
Further, primitive links XA 220, XB 222, BC 234, AY 242, and BY 244 originally existed between primitive node A and primitive node B that are being subsumed and non-selected nodes. Beginning with link XA, a determination is made whether a group link already exists between the non-selected node (for instance X 202) and the group node G1 305. Since one does not, a group link X1 310 is created between node X 202 and group node G1 305. Link XA 220 is added to the listing of links (“Link Set”) 530 in the group link X1 310's Reference Object 520. Proceeding to primitive link XB 222, a determination is made that a group link X1 310 already exists between the non-selected node (here X 202) and the group node G1 305. Link XB 222 is thus added to the listing of links (“Link Set”) 530 in group link X1's 310 Reference Object 520.
Thereby, the following shorthand group link data structure is created:
Further, referring to
Further, group links X1 (
By repeating the operations of steps 730-750 of
{A, Y, Empty} and {B, Y, Empty} from group link 1Y
{A, C, Empty} and {B, C, Empty} from group link 1C
{B, D, Empty} from 1D
{B, E, Empty} from 1E
Finally, group node G1 205 and group links X1 310, 1Y 315, 1C 320, 1D 325, and 1E 330 of
As discussed above, the grouping algorithm and ungrouping algorithm permit nesting of group nodes.
To produce the further simplified graph depicted in
Further, group links X1 (
Thereby, the following shorthand group link data structure is created:
Further, referring to
Further, group links X2 (
In similar manner the following additional shorthand links data structures are also recreated:
By way of further example,
Further, primitive links XE (
The above described example ungrouping algorithm may be applied to group node G3 905 in similar manner as discussed above, to restore primitive node E 212 and primitive node F 214 and links XE 228, XF 230, DE, 240, EY 250, FY 252 and 2E 825, and to remove group node G3 905 and group links X3 910, 3Y 915, D3 920, and 23 925.
By way of further example,
Further, primitive links XD (
Finally, primitive node D 210, group node G3 905 and links D3 920, XD 226, DY 248, 2D 820, X3 910, 3Y 915 and 23 925 are removed to create the even further simplified graph of
The above described ungrouping algorithm may be applied to group node G4 1005 in similar manner as discussed above, to restore primitive node D 210, group node G3 905 and links D3 920, XD 226, DY 248, 2D 820, X3 910, 3Y 915 and 23 925, and remove group node G4 1005 and group links X4 1010, 4Y, 1015, and 24 1020.
By way of further example,
Further, group links X4 1010, 4Y 1015, X2 810 and 2Y 815 are adapted. In similar manner to as discussed above, the following shorthand group link data structures are created by the example grouping algorithm to account for these links:
The example ungrouping algorithm may be applied to group node G5 1105 in a similar manner as discussed above, to restore group node G2 805, group node G4 1005 and group links 24 1020, X4 1010, 4Y 1015, X2 810 and 2Y 815.
The modeling application 145 that implements the data structures, and the grouping and ungrouping algorithms, may take any of a variety of forms in different embodiments. For purposes of further illustrating the techniques described herein, consider an example where the modeling application 145 is an associative and parametric modeling application, such as the MicroStation Generative Components™ associative and parametric modeling application.
Further the graph includes a number of lines (unnumbered), which interconnect ones of the nodes 1310-1390. Such lines indicate which nodes affect which other nodes. Each of the lines in the graph may be maintained in memory by a corresponding line data structure 500, according to the format discussed above in reference to
By application of the above described grouping algorithm, the elements of the graph shown in
While the above description discusses various embodiments of the present disclosure, it should be apparent that a number of modifications and/or additions may be made without departing from the disclosure's intended spirit and scope.
For example, while an example format for a node data structure 400 and a link data structure 500 are described above, it should be understood that such data structures may alternatively have different formats, including different arrangements of data and tags, and may include additional data. Such data structures may alternatively be divided into a plurality of independent data structures, that each contain some subpart of the overall information maintained for the respective element. Similarly, such data structures may alternatively be combined into consolidated data structures that include information related to a plurality of elements. Accordingly, the above descriptions of the example node data structure 400 and the example link data structure 500 should be taken by way of example.
Further, it should be understood that many of the above-described techniques may be implemented in software, in hardware, or in a combination thereof. A software implementation may include computer-executable instructions stored in a non-transitory computer-readable storage medium, such as a volatile or persistent memory, a hard-disk, a compact disk (CD), or other tangible medium. A hardware implementation may include specially configured processors, logic circuits, application specific integrated circuits, and/or other types of hardware components. Further, a combined software/hardware implementation may include both computer-executable instructions stored in a non-transitory computer-readable storage medium, as well as one or more tangible hardware components, for example, processors, memories, etc. Accordingly, it should be understood that the above descriptions are meant to be taken only by way of example.
Number | Name | Date | Kind |
---|---|---|---|
4905163 | Garber et al. | Feb 1990 | A |
5333254 | Robertson | Jul 1994 | A |
5450535 | North | Sep 1995 | A |
5454068 | Ramanujam | Sep 1995 | A |
5537523 | Harashima et al. | Jul 1996 | A |
5559995 | Browning et al. | Sep 1996 | A |
5825369 | Rossignac et al. | Oct 1998 | A |
5896139 | Strauss | Apr 1999 | A |
5905507 | Rossignac et al. | May 1999 | A |
5940083 | Broekhuijsen | Aug 1999 | A |
6108698 | Tenev et al. | Aug 2000 | A |
6154220 | Prakriya et al. | Nov 2000 | A |
6184897 | Gueziec et al. | Feb 2001 | B1 |
6233571 | Egger et al. | May 2001 | B1 |
6259458 | Theisen et al. | Jul 2001 | B1 |
6285367 | Abrams et al. | Sep 2001 | B1 |
6452596 | Gueziec et al. | Sep 2002 | B1 |
6509898 | Chi et al. | Jan 2003 | B2 |
6563500 | Kim et al. | May 2003 | B1 |
6570564 | Sowizral et al. | May 2003 | B1 |
6741242 | Itoh et al. | May 2004 | B1 |
6751609 | Nomura | Jun 2004 | B2 |
6785674 | Vu | Aug 2004 | B2 |
6801200 | Prakriya et al. | Oct 2004 | B1 |
6952208 | Arquie et al. | Oct 2005 | B1 |
7324102 | Inzinga et al. | Jan 2008 | B2 |
7519603 | Parker | Apr 2009 | B2 |
7532133 | Ahn et al. | May 2009 | B2 |
7593009 | Woo et al. | Sep 2009 | B2 |
7788254 | Burges et al. | Aug 2010 | B2 |
7809758 | Thurnhofer et al. | Oct 2010 | B2 |
7855978 | Beaudoin | Dec 2010 | B2 |
8006230 | Agarwal et al. | Aug 2011 | B2 |
8026916 | Wen | Sep 2011 | B2 |
8204720 | Wiemer et al. | Jun 2012 | B2 |
8631041 | King et al. | Jan 2014 | B2 |
20010042062 | Tenev et al. | Nov 2001 | A1 |
20010045952 | Tenev et al. | Nov 2001 | A1 |
20020089499 | Lee et al. | Jul 2002 | A1 |
20020165701 | Lichtenberg et al. | Nov 2002 | A1 |
20040193705 | To et al. | Sep 2004 | A1 |
20050007383 | Potter et al. | Jan 2005 | A1 |
20050192986 | Butler | Sep 2005 | A1 |
20050234946 | Woo et al. | Oct 2005 | A1 |
20050256887 | Eiron et al. | Nov 2005 | A1 |
20050267902 | Thurnhofer et al. | Dec 2005 | A1 |
20060184566 | Lo et al. | Aug 2006 | A1 |
20070109302 | Tsuboshita et al. | May 2007 | A1 |
20080033987 | Carter | Feb 2008 | A1 |
20080098018 | King et al. | Apr 2008 | A1 |
20080300834 | Wiemer et al. | Dec 2008 | A1 |
20090204373 | Brown et al. | Aug 2009 | A1 |
20090213119 | Oh et al. | Aug 2009 | A1 |
20100085352 | Zhou et al. | Apr 2010 | A1 |
20100277481 | Cao et al. | Nov 2010 | A1 |
20100315416 | Pretlove et al. | Dec 2010 | A1 |
20110109626 | Geiger et al. | May 2011 | A1 |
20110169819 | Ian | Jul 2011 | A1 |
20110249002 | Duplessis et al. | Oct 2011 | A1 |
20120150819 | Lindahl et al. | Jun 2012 | A1 |
20130338858 | Cherepinsky et al. | Dec 2013 | A1 |
Number | Date | Country |
---|---|---|
1480136 | Nov 2009 | EP |
Entry |
---|
Aish, R., et al., “Multi-Level Interaction in Parametric Design,” Aug. 2005, pp. 1-12. |
Hennessey, D., et al., “A Simplification Algorithm for Visualizing the Structure of Complex Graphs,” Department of Computer Science, Drexel University, Philadelphia, PA, Jul. 2008, pp. 1-10. |
Kraftcheck, J., “Virtual Geometry: A Mechanism for Modification of CAD Model Topology for Improved Meshability,” Department of Mechanical Engineering, University of Wisconsin, Dec. 2000, pp. 1-62. |
Sugiyama, K., et al., “Visualization of Structural Information: Automatic Drawing of Compound Digraphs,” IEEE Transactions on Systems, Man and Cybernetics, vol. 21, No. 4, Jul./Aug. 1991, pp. 876-892. |