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