2009-07-28 2 views
0

Я работаю над проектом, в котором меня попросили выполнить семантический поиск. Сценарий представляет собой базу данных с таблицей, содержащей 3 части информации, имя доктора, имя пациента и дату посещения. Меня попросили создать форму, содержащую 3 поля: «Доктор», «Пациент и дата». Поэтому, когда пользователь хочет найти подходящего врача или врачей для соответствующих пациентов или их даты, они могут просто ввести любое из полей для получения информации из базы данных. Я сделал кодировку на C#, используя регулярные выражения для манипуляции строками и поиска информации. Но главная задача заключается в том, что поиск должен работать с использованием RDF и URI.Интеграция RDF с C#

Теперь, когда я работал над большей частью кодирования, кто-то может помочь мне создать поиск с использованием RDF и URI, есть ли какое-либо решение для этого, как я могу интегрировать RDF в C#, есть ли какая-либо документация.

Но, согласно требованиям моего руководителя, он попросил меня провести поиск, который работает с RDF, я имею в виду, что детали пациентов (например, имя пациента), имя и дата доктора были бы в форме URI, которая определяет детали пациентов, врачей и данных о дате в базе данных, поэтому, если кто-либо пытается найти какую-либо информацию, например, врач или пациент, может просто ввести свое имя в соответствующее поле и получить информацию. Я прикладываю 2 моментальных снимка своего кода для вашего понимания.

Изображение 1: http://img29.imageshack.us/i/15035706.jpg
Изображение 2: http://img31.imageshack.us/img31/1117/86105845.jpg

Первое изображение, где я ввожу все детали в базе данных, а второе изображение поиск.

Это общая идея о моем проекте, можете ли вы посоветовать мне, как это можно сделать?

Я был бы вам очень признателен, если бы кто-то мог помочь мне в этом как можно скорее.

ответ

2

Выполнение поиска по RDF и URI будет зависеть от того, будут ли ваши данные в RDF в первую очередь. Если это не так, вам нужно либо преобразовать его из текущей формы в RDF на лету, либо навсегда. Для того, чтобы сделать это на лету, вы можете использовать технологию как D2R, которая отображает реляционных баз данных RDF http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/

Там какая-то другая Semantic Web C# материал о как Rowlex http://rowlex.nc3a.nato.int/, который основан более OWL или есть моя собственная библиотека dotNetRDF http://www.dotnetrdf.org, но это только как раз первый релиз Alpha, поэтому я бы не рекомендовал его для каких-либо производственных систем. SemWeb Алекс упоминает довольно хорошо и масштабирует особенно хорошо - Единственным недостатком является то, что это .Net 2.0, так что вам нужно отдельную библиотеку, если вы хотите сделать LINQ с этим

вопрос о вашем вопросе ...

Ваш вопрос неясно о том, что вы подразумеваете под семантическим поиском, уверены ли вы, что на самом деле вы хотите сделать поиск по RDF, или кто-то просто указал «семантический поиск» в спецификации, и вы разобрали его и получили статьи о RDF? Семантический поиск не обязательно подразумевает необходимость RDF, может быть, вы действительно хотите выполнять поиск по естественному языку.

Под этим я подразумеваю, что вы можете искать такие вещи, как «пациенты доктора Смита» и что ваша поисковая система должна понимать это как поиск пациентов, где поле врача соответствует Доктор Смит.

В равной степени я мог ошибаться, и вы действительно можете попытаться создать что-то, что очень напоминает пример TimBL из его статьи 2001 года Scientific American о семантической сети.

Редактировать

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

Может быть, посмотрите на Талис http://www.talis.com или Виртуоз http://www.openlinksw.com/virtuoso/

Если вы решили использовать SemWeb, то вы можете просто использовать тройную магазин, который она предоставляет.

0

Использование семантических веб-технологий для описываемого вами сценария является излишним. Однако, если вас интересует зрелая библиотека .NET для работы со стандартами Semantic Web в .NET и SQL, обязательно взгляните на Intellidimension's offerings.

+0

При цене 1500 долл. США за компьютер или 5000 долл. США за лицензирование для предприятий только для SDK, и это до того, как вы попадаете в стоимость их магазина Triple, кажется, это слишком завышено. Я согласен с вами в том, что использование технологии SW для этого сценария кажется излишним – RobV

+0

RobV, SQL - это то, что 20k является корпоративной лицензией? Я не думаю, что цена является проблемой, когда вы работаете над бизнес-приложениями (их целевой рынок). Если вы просто работаете над хобби-проектом, чем ... да, это немного дорого :) –

+0

Также мой опыт заключается в том, что Intellidimension будет раздавать бесплатные лицензии на индивидуальной основе для образовательных и исследовательских проектов. –

0

Библиотека C# для RDF, которая, кажется, становится довольно популярной в сообществе LinqToRDF. Проект был задуман Эндрю Мэтьюсом и собирается с 2007 года, я думаю. Программное обеспечение на Google Code и его можно найти здесь:

LinkToRDF

вместе с библиотекой, есть также то, что называется «LinqToRDF дизайнер», который вписывается в Visual Studio и позволяет моделировать RDF графически.

2

Возможно, вы сможете сделать то, что вам нужно, используя LinqToRdf. LinqToRdf предоставляет два поставщика запросов LINQ (т. Е. Вам понадобится .NET 3.5+), в том числе тот, который обеспечивает соответствие стандартам SPARQL запросов.

Вот типичный LinqToRdf запрос, который, если вы знакомы с LINQ к 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); 
} 
1

Я предлагаю вам попробовать RDFSharp (http://rdfsharp.codeplex.com/), потому что, насколько я могу понять из вашего вопроса, вам, вероятно, нужно быстро настроить приложение RDF, способное выполнять элементарные поиски в три раза, такие как SUBJECT = "xxx", PREDICATE = NULL; OBJECT = "yyy".
Не стесняйтесь попробовать, конечно, существуют более мощные инструменты, но для вашего сценария я считаю, что это самый простой способ применения.

+2

Добро пожаловать в Stack Overflow! Благодарим за отправку ответа! Обязательно внимательно прочитайте [FAQ по самопомощи] (http://stackoverflow.com/faq#promotion).Также обратите внимание, что * требуется *, что вы публикуете отказ от ответственности каждый раз, когда вы ссылаетесь на свой собственный сайт/продукт. –

Смежные вопросы