簡體   English   中英

RDF與C#集成

[英]RDF integration with C#

我正在一個被要求進行語義搜索的項目中。 該方案是一個數據庫,其中的表包含3條信息,即醫生姓名,患者姓名和就診日期。 我被要求創建一個包含3個字段的表格:醫生,患者和日期。 因此,當用戶要搜索患者的相應醫生或相應患者的醫生或其日期時,他們只需輸入任何字段即可從數據庫中檢索信息。 我已經使用正則表達式在C#中完成了用於字符串處理和信息檢索的編碼。 但是主要任務是搜索應該使用RDF和URI進行。

既然我已經完成了大部分編碼工作,那么有人可以幫助我如何使用RDF和URI創建搜索嗎,是否有解決方案,如何將RDF集成到C#中,是否有任何文檔。

但是根據主管的要求,他曾要求我建立一個與RDF配合使用的搜索,我的意思是患者的詳細信息(例如,患者的姓名),醫生的姓名和日期將以URI的形式顯示,以查找患者,醫生的詳細信息日期和數據庫中的日期信息,因此,如果有人試圖搜索任何信息(例如醫生或患者),只需在相應字段中輸入其姓名並檢索該信息即可。 我附上我的代碼的2個快照,以供您理解。

圖片1: http//img29.imageshack.us/i/15035706.jpg
圖片2: http//img31.imageshack.us/img31/1117/86105845.jpg

第一個圖像是我將所有詳細信息輸入數據庫的位置,第二個圖像是搜索。

這是關於我的項目的總體思路,您能建議我如何做到這一點嗎?

如果有人可以盡快幫助我,我將非常感謝您。

首先進行基於RDF和URI的搜索將取決於您的數據是否位於RDF中。 如果不是,則必須將其從當前形式即時轉換為RDF或永久轉換為RDF。 為此,您可以使用D2R之類的技術將關系數據庫映射到RDF http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/

還有其他一些語義Web C#東西,例如Rowlex http://rowlex.nc3a.nato.int/ ,它更多基於OWL或我自己的dotNetRDF庫http://www.dotnetrdf.org,但這僅僅是一個Alpha的第一個發行版,因此我不建議將其用於任何生產系統。 亞歷克斯(Alex)提到的SemWeb相當不錯,並且擴展性特別好-唯一的缺點是它是.Net 2.0,因此如果要使用LINQ,則需要一個單獨的庫

有關您的問題的問題...

您的問題不清楚語義搜索的含義,您確定要真正進行RDF搜索還是有人在規范中指定“語義搜索”,然后在Google上搜索了有關RDF的文章? 語義搜索並不一定意味着需要RDF,這可能是您實際上想進行自然語言搜索。

我的意思是,這可能是因為您想要搜索“史密斯醫生的患者”之類的功能,並且您的搜索引擎應該能夠將此解釋為對醫生字段對應於史密斯醫生的患者的搜索。

同樣,我可能是錯的,您的確可以嘗試構建聽起來很像TimBL在其2001年《科學美國人》在語義網上的文章中的例子。

編輯

因此,當您確實要進行正確的RDF搜索時,我建議您將數據放入三重存儲而不是數據庫中,最好使用提供SPARQL查詢的三重存儲,以便將查詢表單上的輸入轉換為SPARQL查詢並查詢三元組存儲。

也許看看Talis http://www.talis.com或Virtuoso http://www.openlinksw.com/virtuoso/

如果您決定使用SemWeb,則可以使用它提供的Triple Store。

您可以使用LinqToRdf來完成所需的工作。 LinqToRdf公開了兩個LINQ查詢提供程序(即,您將需要.NET 3.5+),其中一個生成標准兼容的SPARQL查詢。

這是一個典型的LinqToRdf查詢,如果您熟悉LINQ to SQL,它應該是很自然的:

MusicDataContext ctx = new MusicDataContext(@"http://localhost/linqtordf/SparqlQuery.aspx");
var q = (from t in ctx.Tracks
     where t.Year == "2006" &&
           t.GenreName == "History 5 | Fall 2006 | UC Berkeley"
     orderby t.FileLocation
     select new {t.Title, t.FileLocation}).Skip(10).Take(5);

foreach (var track in q)
{
   Console.WriteLine(track.Title + ": " + track.FileLocation);
} 

我建議您嘗試RDFSharphttp://rdfsharp.codeplex.com/ ),因為據我所知,您可能需要快速設置能夠執行基本的基於三元組搜索的RDF應用程序,例如SUBJECT =“ XXX “; PREDICATE = NULL; OBJECT =” YYY”。
請隨意嘗試,當然,還有更強大的工具,但是對於您的情況,我認為它是最簡單的應用程序。

在您描述的場景中使用語義Web技術是過大的。 但是,如果您對使用.NET和SQL中的語義Web標准的成熟.NET庫感興趣,那么絕對可以看看Intellidimension的產品

用於RDF的AC#庫在LinqToRDF社區中似乎變得非常流行。 我認為該項目由安德魯·馬修斯(Andrew Matthews)發起,自2007b以來一直在進行。 該軟件位於Google COde上,可以在以下位置找到:

LinkToRDF

與庫一起,還有一個稱為“ LinqToRDF設計器”的文件,它適合Visual Studio,並允許您以圖形方式對RDF進行建模。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM