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.

звучи като сложна трансформация, която включва доста "ако-тогава-иначе" и "погледни" логика. В такъв случай вероятно бих избрал по-ориентирано към C# решение.

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 трансформация обикновено е доста трудна и трудна за поддръжка.

За C# манипулиране на RDF може да опитате dotNetRDF (отказ от отговорност - аз разработвам библиотеката ), който ви дава API за работа с RDF на ниво Triple. Ако вашият RDF има редовни повтарящи се структури в него, тогава най-лесният начин да извлечете тези данни ще бъде да използвате SPARQL заявки, за да извлечете данните, които са от значение за вас, от RDF. След като имате резултатите (които са подобни на DataTable по структура и могат да бъдат прехвърлени към DataTable, ако това ви е по-лесно за работа), можете да генерирате своя XML файл по желание.

Ако това изглежда като жизнеспособна опция за вас, не се колебайте да ми изпратите имейл в пощенските списъци на проекта, ако искате помощ/съвет.

person RobV    schedule 12.04.2011