2013-05-10 3 views
6

Я новичок в RDF, и у меня есть один вопрос о RDF.Представление сложных предложений с использованием синтаксиса RDF

С помощью простого предложения типа «Ann study Math» нет проблем с представлением его с помощью RDF.

Но с более сложными предложениями, такими как: «Г-н Паркер учит« Машиноведение »и использует книгу« ML-for-newbie », я имею в виду, что мистер Паркер использует эту книгу для подготовки своих лекций. Есть 3 объекта: Mr Parker, Machine Learning, ML-for-newbie; 2 предикаты: преподавать, использовать. Итак, как представить это предложение в RDF? Насколько я знаю, один оператор RDF, как Subject --predicate -> Object, и 3 объекта и 2 предикаты делают меня путать :(

Plz Помощь благодаря

+0

Аналогичный вопрос: http://stackoverflow.com/questions/15820657/how-can-i-represent-a-5-tuple-in-rdf –

ответ

6

В вашем случае, вы можете либо! . разлагать эти предложения в 3 заявления RDF или использовать blank node

Примеры разложения, конечно, имеет свой собственный URI (:Course999):

:Mr_Parker :teaches :Course999 . 
:Course999 :courseName "Machine Learning" . 
:Course999 :hasSupportBook "ML-for-newbies" . 

с анонимными узлами (пустой узел _:b1), это тот же самый принцип, но конечно не явно захвачен:

:Mr_Parker :teaches _:b1 . 
_:b1 :courseName "Machine Learning" . 
_:b1 :hasSupportBook "ML-for-newbies" . 

Теперь, как упоминался в комментариях, строка «ML-для-новичков» на самом деле не книга, это просто представить название книги. Таким образом, вы можете добавить больше троек, чтобы получить дополнительную информацию об этом элементе (например, автор этой книги). Вы можете думать о повторном использовании уже разработанной лексики для решения этой задачи (как в Dublin Core):

:Mr_Parker :teaches _:b1 . 
_:b1 :hasSupportBook :book2 . 
:book2 dcterms:title "ML-for-newbies" . 
:book2 dcterms:creator "John Smith" . 

... а затем здесь строка представляет только имя автора, но не сам автор (например, для книга), поэтому вы можете расширить свои троек еще больше, представив этот тип объекта, если это необходимо.

+1

Хороший ответ, но строка - это не книга. Вы должны добавить еще один ресурс: book123 или somesuch, который имеет «ML для новичков» в качестве названия, а затем может иметь автора, isbn и т. Д. –

+0

Спасибо @loopasam, я думаю, что второй способ более подходит (и я об этом подумал). Еще раз спасибо :) – Songokute

+0

Хорошая точка от Иана: здесь это слишком упрощенное представление, чтобы вы начали, а затем можете увеличить уровень детализации вещей, которые вы хотите представить подобным образом. Я добавляю его к ответу. – loopasam

4

Принятый ответ хорош и имеет примеры, но стоит взглянуть на рабочую группу W3C Note Note Defining N-ary Relations on the Semantic Web, в которой обсуждаются эти проблемы с представлением. Подход в принятом ответе составляет Pattern 1: introducing a new class for a relation. Там также есть Pattern 2: Using lists for arguments in a relation, но это чувствует себя неуклюже, и я не думаю, что так много людей принимают такой подход.

+0

Привет @ Джошуа Тейлор, как представить заявление типа «** Если у одного ученика есть по меньшей мере 10 собак, то у него также есть 10 кошек **« используя сову ??? – Songokute

+0

@Songokute Это действительно не связанный вопрос, и его следует задавать как таковой (не в комментариях), но это довольно простой OWL: '(Student и hasPet min 10 Dog) subClassOf (hasPet min 10 Cat)'. –

+0

Спасибо, я задал новый вопрос об этом.:) В вашем случае: '(X) subClassOf (Y)', то X и Y являются анонимными или именованными классами (интересно, как назвать эти классы, если они имеют свое имя ...)? – Songokute

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