Свойство без класса в RDF

У меня есть класс Person. Он имеет два свойства hasAge и hasZipCode.

:Person :hasAge     <literal>
        :hasZipCode <literal>

Я хотел бы сказать, что hasAge и hasZipCode являются подсвойствами свойства hasColumn. Поэтому я упомянул это следующим образом.

:hasAge       rdfs:subPropertyOf :hasColumn
:hasZipCode   rdfs:subPropertyOf :hasColumn

Однако в моем RDF-графе нет ни одного класса, содержащего свойство hasColumn. Я имею в виду, что у меня нет чего-то вроде следующего:

:Table :hasColumn <literal>

Разрешено ли в RDF определять свойство (например, hasColumn) без класса?


person Beautiful Mind    schedule 25.08.2016    source источник


Ответы (1)


У меня есть класс ChicagoPerson. Он имеет два свойства hasAge и hasZipCode, и их значения указаны ниже.

:ChicagoPerson :hasAge     "30"
               :hasZipCode "60543"

Это не имеет смысла. В этом фрагменте ChicagoPerson — это индивидуум (или ресурс) со значениями для двух упомянутых вами свойств.

Я хотел бы сказать, что hasAge и hasZipCode являются подсвойствами свойства hasColumn. Поэтому я упомянул это следующим образом.

:hasAge       rdfs:subPropertyOf :hasColumn
:hasZipCode   rdfs:subPropertyOf :hasColumn

Это правильный способ сделать это. Это означает, что если у вас есть вывод RDFS, у вас будут данные:

:ChicagoPerson :hasAge     "30" ,
               :hasZipCode "60543" ,
               :hasColumn "30", "60543" .

Однако в моем RDF-графе нет ни одного класса, содержащего свойство hasColumn. Я имею в виду, что у меня нет чего-то вроде следующего:

:Table :hasColumn <literal>

Опять же, я думаю, вы путаете идею классов и отдельных лиц. Класс – это совокупность индивидуумов. Если у вас есть доступ к выводу RDFS, то аксиомы подсвойств, которые вы написали выше, позволят этому рассудку RDFS вывести дополнительные триплеты, о которых я упоминал. Дополнительные тройки, которые вы увидите,

:ChicagoPerson :hasColumn "30", "60543" .

не что-то с Таблицей в качестве предмета.

Разрешено ли в RDF определять свойство (например, hasColumn) без класса?

RDF на самом деле не имеет представления об определении свойств. В RDF есть только триплеты вида субъект, предикат, объект. Языки схем, такие как RDFS и OWL, присваивают особое значение определенным видам троек, обычно присваивая значение определенным предикатам. Например, в RDFS и OWL предикат rdfs:subPropertyOf приобретает особое значение.

У вас на самом деле есть логика RDFS, работающая с вашим набором данных?

person Joshua Taylor    schedule 26.08.2016
comment
Джошуа Тейлор: Я отредактировал свой вопрос. Теперь вместо индивидуального я показываю информацию на уровне класса. Это надуманный пример, и я не привожу никаких рассуждений. Короче говоря, мой вопрос был в RDF, можем ли мы сказать, что свойство является подсвойством другого свойства, не назначая это свойство какому-либо классу. Я думаю, что ваш ответ да. Поправьте меня, если я ошибаюсь. Какой аргумент я могу использовать? Есть ли в Virtuoso резонер? - person Beautiful Mind; 26.08.2016
comment
@SMShamimulHasan RDF не имеет понятия о присвоении свойства классу. Свойства не принадлежат классам. Вы можете объявлять домены и диапазоны свойств, но они не принадлежат классам. Индивидуум/ресурс x может иметь значение для свойства p, что просто означает, что в данных есть тройка (x, p, что-то). Вы можете сделать свойство p подсвойством свойства q, просто добавив тройку (p, subPropertyOf, q). Больше ничего не требуется. - person Joshua Taylor; 26.08.2016
comment
@SMShamimulHasan Я не понимаю, как редактирование помогает. Переименование ChicagoPerson в Person не означает, что у меня есть класс Person. Он имеет два свойства hasAge и hasZipCode. :Person :hasAge ‹буквальный› более разумный. Если Person является классом, и это домен этих свойств, вы должны указать это hasAge rdfs:domain Person, а затем использовать его как person72 rdf:type person ; hasAge 23 . - person Joshua Taylor; 26.08.2016
comment
Спасибо. Нужно ли мне также определять диапазон :hasAge? Как 2_. Допустим, :hasAge rdfs:range xsd:int и :hasZipcode rdfs:range xsd:string. Теперь :hasAge rdfs:subPropertyOf :hasColumn и :hasZipCode rdfs:subPropertyOf :hasColumn. Допустим :hasColumn rdfs:domain :AllColumn тогда какой будет диапазон hasColumn? - person Beautiful Mind; 26.08.2016
comment
Вам не нужно определять какие-либо диапазоны или домены. Диапазоны и домены обычно являются пересечениями, но это было описано много раз в других местах. Свойство может иметь несколько доменов (или диапазонов). Если свойство P имеет домен C, то это означает, что из тройки (x, P, _) мы можем вывести, что (x, rdf:type, C). Это все, что это значит. Итак, если P имеет несколько доменов, скажем, C и D, то из (x, P, _) вы можете вывести (x,rdf:type,C) и (x, rdf:type, Д). - person Joshua Taylor; 26.08.2016
comment
Большое спасибо. Пожалуйста, дайте мне знать о некоторых причинах, которые вы упомянули ранее. Все, что есть в Virtuoso, будет полезно. Я также хотел бы очистить свои концепции RDF. Не могли бы вы предложить мне какую-нибудь книгу или материалы для чтения с простыми примерами? Я знаю о некоторой литературе по RDF. Тем не менее, я ищу ваше предложение. - person Beautiful Mind; 26.08.2016