如何反序列化OWL文档?

时间:2009-08-16 09:20:43

标签: rdf owl ontology rowlex

我使用ROWLEX创建了一堆类,并使用

将它们序列化为RDF
RdfDocument rdfDocument = Rdfizer.Serialize(ontology);

现在我想反序列化它(类似于XmlSerializer.Deserialize()的工作方式),这样我就可以在我的对象中填充本体中的数据

我想做这样的事情:

RdfSerializer serializer = new RdfSeriailzer(typeof(MyOntology));
  MyOntology ontology = (MyOntology)serializer.Deserize(fileStream);

有谁能告诉我如何使用ROWLEX将OWL文档反序列化回我的对象​​?

由于

1 个答案:

答案 0 :(得分:2)

我有一个非常简单且令人失望的答案:反序列化未实现。

理性背后: .NET是一个非常严格和正式的环境,而RDF则不是。以通用方式转换数据仅对于限制较少的方向是可行的。只有在您自己手持两个活动时,完整循环序列化/反序列化才能可靠地工作。如果一家公司实现了序列化,那么将RDF发送给另一家实现反序列化的公司,你不能期望太多。不同类型的系统具有不同的业务逻辑,完美的1:1映射在理论上甚至是不可能的。可以构建一个非常容错的反序列化,但是你无法保证反序列化的.NET对象具有与原始RDF文档相同的含义。因为RDF文档中的个体可能因RDF的本质而偏袒。

我能想到保证序列化/反序列化可以起作用的唯一合理理由(如果我错了,请纠正我),如果你使用ROWLEX作为数据存储层,将对象保持/从RDF检索对象。但是还有很多其他替代方法可以存储/检索你的对象。你真的需要这个吗?