C# — Преобразование файла RDF в определенный файл XML

У нас есть требование, в котором нам нужно преобразовать данный файл rdf в определенный файл xml. Итак, у нас есть три входных файла RDFS, файл RDF и файл XSD. С ними нам нужно создать файл XML (который должен соответствовать XSD), содержащий данные файла RDF. Схема RDF содержит простые и сложные объекты отношений. Отношения, определенные в RDF, отличаются от отношений, определенных в XSD.

Мы видим несколько способов реализации одного и того же:

  1. Создайте XSLT, определяющий логику преобразования файла RDF в файл XML.
  2. Создайте собственное приложение C#. для того же (с использованием библиотек RDF, таких как LinqToRDF и т. д.)

Пожалуйста, укажите, какой вариант будет лучше, и какие-либо указатели на то же самое.

С уважением,


person Jayanta Dey    schedule 12.04.2011    source источник


Ответы (2)


Прежде всего: это не решение типа «или… или». Вы можете легко комбинировать XSLT-преобразование с пользовательским кодом C#. Это сказало:

По моему опыту, XSLT — отличный выбор, если преобразование не содержит слишком много логики. Легко переименовывать теги, сглаживать или переупорядочивать иерархии, ... используя XSLT, но это может быть неприятно, если вам нужна логика «если-то-иначе», например «создать тег A, если значение ... но только если . .. иначе создайте тег B".

Предложение

Отношения, определенные в RDF, отличаются от отношений, определенных в XSD.

звучит как сложное преобразование, которое включает довольно много логики «если-то-иначе» и «поиска». В этом случае я бы, вероятно, выбрал более ориентированное на С# решение.

person Achim    schedule 12.04.2011
comment
Да, преобразование может потребовать реализации сложной логики, и решение на основе C# будет лучше. Но я не уверен, как двигаться в этом направлении. Я попытался использовать библиотеку LinqToRDF для анализа файла rdf, с помощью которого я могу получить все операторы, но возможно ли получить информацию RDF в виде классов и объектов (например, как мы десериализуем xml)? Можем ли мы сгенерировать эти классы из файла rdfs (например, с помощью инструмента, похожего на xsd.exe)? - person Jayanta Dey; 12.04.2011
comment
На самом деле это то, для чего был разработан LinqToRdf, есть инструмент RdfMetal, предназначенный для создания классов .Net из ваших онтологий RDF или OWL. К сожалению, документация о том, как это сделать, довольно скудна, и имейте в виду, что проект был заброшен некоторое время назад его автором и активно не поддерживается и не поддерживается. - person RobV; 12.04.2011

XSLT обычно является плохой идеей для преобразования RDF/XML в другие форматы, потому что одни и те же данные RDF могут быть закодированы в RDF/XML по-разному.

Таким образом, если ваши входные данные RDF/XML строго не контролируются, чистое XSLT-преобразование обычно довольно сложно и сложно поддерживать.

Для управления RDF на C# вы можете попробовать dotNetRDF (отказ от ответственности — я разрабатываю библиотеку ), который дает вам API для работы с RDF на тройном уровне. Если в вашем RDF есть регулярно повторяющиеся структуры, то самым простым способом извлечения этих данных будет использование запросов SPARQL для получения релевантных для вас данных из RDF. Когда у вас есть результаты (которые похожи на DataTable по структуре и могут быть преобразованы в DataTable, если вам с этим проще работать), вы можете сгенерировать свой XML-файл по желанию.

Если это похоже на то, что это может быть жизнеспособным вариантом для вас, не стесняйтесь, напишите мне по электронной почте в списках рассылки проекта, если вам нужна помощь / совет.

person RobV    schedule 12.04.2011