2011-04-12 80 views
2

我們需要將給定的rdf文件轉換爲特定的xml文件。所以我們有三個輸入RDFS文件,RDF文件和XSD文件。有了這些,我們需要創建具有RDF文件數據的XML文件(應符合XSD)。 RDF模式包含簡單的複雜關係實體。 RDF中定義的關係與XSD中定義的關係不同。C# - 將RDF文件轉換爲特定的XML文件

我們看到幾個實現相同的方式:

  1. 創建定義RDF文件轉換爲XML文件中的邏輯的XSLT。
  2. 構建一個自定義的C#應用​​程序。做同樣的(使用RDF庫LinqToRdf之類等)

請指導有關其選擇是好是相同的任何指針。

問候,

回答

0

首先:這不是一個 「要麼...或者」 決定。您可以輕鬆地將XSLT轉換與自定義C#代碼組合在一起。這就是說:

根據我的經驗,XSLT是一個很好的選擇,如果轉換不包含太多的邏輯。使用XSLT很容易重命名標籤,平鋪或重新排列層次結構......但是如果您需要「if-then-else」邏輯,比如「創建標籤A,如果......的值但只有當...」 ..否則創建標籤B「。

句子

在RDF中定義的關係 從關係不同的XSD定義 。

聽起來像一個複雜的轉換,這涉及到很多「if-then-else」和「look up」邏輯。在這種情況下,我可能會選擇更多以C#爲中心的解決方案。

+0

是的,轉換可能需要實現複雜的邏輯,基於C#的解決方案會更好。但我不知道如何繼續朝這個方向前進。我嘗試使用LinqToRDF庫來解析rdf文件,我可以得到所有的語句,但是有可能以類和對象的形式檢索RDF信息(比如我們如何反序列化一個xml)?我們可以從rdfs文件生成這些類(如使用類似於xsd.exe的工具)嗎? – 2011-04-12 09:22:54

+0

這實際上是LinqToRdf的設計目的,有一個工具調用RdfMetal,用於從您的RDF或OWL本體生成.Net類。不幸的是,關於如何做到這一點的文檔是相當差的,並且要意識到該項目前一段時間被其作者放棄,並沒有得到積極維護或支持 – RobV 2011-04-12 14:12:42

0

XSLT對於將RDF/XML轉換爲其他格式通常是一個壞主意,因爲相同的RDF數據可以用不同的方式編碼在RDF/XML中。

因此,除非嚴格控制RDF/XML輸入,否則純XSLT轉換通常相當困難且難以維護。

對於RDF的C#操縱你可能想嘗試dotNetRDF免責聲明 - 我開發庫),讓你在三重水平RDF工作的API。如果您的RDF具有常規重複結構,那麼提取該數據的最簡單方法是使用SPARQL查詢從RDF中獲取與您相關的數據。一旦你得到了結果(如果結構類似於結構中的DataTable,並且可以將結果轉換爲DataTable),則可以根據需要生成XML文件。

如果看起來這可能是一個可行的選擇,那麼如果您需要任何幫助/建議,請隨時在項目郵件列表中給我發一封電子郵件。