Как мне десериализовать документ OWL?

Я создал кучу классов, используя ROWLEX, и сериализовал их в RDF, используя

RdfDocument rdfDocument = Rdfizer.Serialize(ontology);

Теперь я хотел бы десериализовать его (аналогично тому, как работает XmlSerializer.Deserialize()), чтобы я мог заполнить данные в онтологии в моем объекте.

Я хотел бы сделать что-то вроде этого:

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

Может ли кто-нибудь сказать мне, как я могу десериализовать документ OWL обратно в свой объект с помощью ROWLEX?

Спасибо


person Community    schedule 16.08.2009    source источник


Ответы (1)


У меня очень простой и разочаровывающий ответ: десериализация не реализована.

Рациональное обоснование: .NET — очень строгая и формальная среда, а RDF — нет. Преобразование данных общим способом возможно только в менее ограничительном направлении. Сериализация/десериализация полного цикла может работать надежно, только если вы держите оба действия в своих руках. Если одна компания реализует сериализацию, отправляет RDF другой компании, которая реализует десериализацию, вы не можете ожидать слишком многого. Разные типы систем имеют разную бизнес-логику, и идеальное сопоставление 1:1 невозможно даже теоретически. Можно создать очень отказоустойчивую десериализацию, но вы не получите гарантии, что десериализованные объекты .NET будут иметь то же значение, что и исходный документ RDF. Потому что отдельные лица в документах RDF могут быть пристрастными по самой природе RDF.

Единственная оправданная причина, по которой я могу придумать, где может работать гарантированная сериализация/десериализация (поправьте меня, если я ошибаюсь), если бы вы использовали ROWLEX как уровень хранения данных, сохраняющий/извлекающий ваши объекты в/из RDF. Но есть так много других альтернатив для сохранения/извлечения ваших объектов. Вам это действительно нужно?

person ROWLEX Admin    schedule 18.08.2009