我对持久化单个有向图很感兴趣。这个问题不是要求一个全面的图形数据库解决方案,而是一个我可以用来保存和单个任意有向图的文档格式。 我不知道哪种表示法和文件格式是最明智的选择。
我主要担心的是:
表现力/灵活性——我希望能够表达不同类型的图表。虽然标准用例是一个简单的有向图,但应该可以表示树、循环图、多图。作为最低要求,我希望支持边缘和节点的标记和加权。用于描述higraph和边缘组合/超边缘的符号也是非常可取的,尽管我知道这样的解决方案可能不存在。
Type System-Independence - 我对表示图形的结构质量很感兴趣。一些解决方案包括用于类型化边和节点的可扩展类型系统(例如RDF / OWL)。如果有明确定义的类型元素到基元(节点/边缘/属性)的规范分解,我只会对这种表示感兴趣。我在这里试图避免的是等价图的多种表示的能力,其中等价是不可辨别的。
规范表示- 应该有一种机制可以规范地表示图(以这样一种方式,可以使用规范表示的词汇等价来确定等价)。
Presentation Independent - 我更喜欢不依赖于图形表示的符号。这将包括空间方向、颜色、字体等。我只对表示数据感兴趣。我不喜欢DOT 语言、DGML或SVG(至少对于这个特定目的)的一个特性是对视觉表示的关注。
标准化/开放/兼容- 我必须做的实施工作越少越好。如果格式是标准化的并且已经存在用于处理该格式的可靠工具,那么它是更可取的。伴随这一要求的是另一个要求,即格式应该是高度兼容的。微软 DGML的专有性质是我厌恶的一个原因,尽管 Visual Studio 工具和我主要使用 .NET(现在)工作的事实。W3C 发布 RDF 标准的事实是考虑将有限的 RDF 子集作为表示工具的动机。我也很欣赏GXL和GraphML,因为它们具有良好记录的 xml 模式,从而促进了将其数据与任何 xml 兼容的软件包集成的能力。
简单/可读性- 我欣赏人类可读的语法和易于解释。我也很欣赏简化解析的表示。出于这个原因,我喜欢GML,但我担心它不够主流,无法成为现实的选择。如果 JSON 或 YAML在表示复杂(非 DAG)结构的能力方面不受限制,我也会考虑使用JSON或YAML 。
效率/简洁表示- 值得考虑的是,无论我最终选择什么格式,都不可避免地必须通过某些网络进行持久化和传输。因此,文件大小是一个相关的考虑因素。
概述
我认识到我很可能无法找到满足我愿望清单上所有标准的解决方案。我只是要求最接近我想要的文件格式,并且不会限制不受支持的用例的可扩展性。