Я намагаюся осягнути концепцію Semantic Web. Мені важко зрозуміти, у чому саме різниця між RDF та OWL. Чи OWL є розширенням RDF або ці дві абсолютно різні технології?
Я намагаюся осягнути концепцію Semantic Web. Мені важко зрозуміти, у чому саме різниця між RDF та OWL. Чи OWL є розширенням RDF або ці дві абсолютно різні технології?
Відповіді:
Семантична павутина буває шарами. Це короткий підсумок тих, які я думаю, що вас цікавлять.
Оновлення : Зверніть увагу, що RDFS використовується для визначення структури даних, а не OWL. OWL описує семантичні відносини, які звичайне програмування, наприклад, С-структура, не метушиться і наближається до теорії досліджень та наборів ШІ.
Трійки та URI
Subject - Predicate - Object
Вони описують один факт. Як правило, URI використовуються для предмета та предиката. Об'єкт є або іншим URI, або літералом, таким як число або рядок. Літерали можуть мати тип (який також є URI), і вони також можуть мати мову. Так, це означає, що трійки можуть мати до 5 біт даних!
Наприклад, трійка може описати той факт, що Чарльз є батьком Гарріса.
<http://example.com/person/harry> <http://familyontology.net/1.0#hasFather> <http://example.com/person/charles> .
Трійці - це нормалізація бази даних, яка доходить до логічної межі. Вони мають перевагу в тому, що ви можете завантажувати трійки з багатьох джерел в одну базу даних без перенастроювання.
RDF та RDFS
Наступний шар - RDF - Рамка опису ресурсів. RDF визначає деяку додаткову структуру до трійки. Найголовніше, що визначає RDF, - це предикат під назвою "rdf: type". Це використовується для того, щоб сказати, що речі певного типу. Усі використовують rdf: type, що робить його дуже корисним.
RDFS (схема RDF) визначає деякі класи, які представляють поняття предметів, об’єктів, предикатів тощо. Це означає, що ви можете почати робити заяви про класи речі та типи відносин. На самому простому рівні ви можете констатувати такі речі, як http://familyontology.net/1.0#hasFather - це стосунки між людиною та людиною. Це також дозволяє описати в читаному людиною тексті значення стосунків чи класу. Це схема. Він розповідає про юридичне використання різних класів та відносин. Він також використовується для позначення того, що клас або властивість є підтипом більш загального типу. Наприклад, "HumanParent" - це підклас "Person". "Любить" - це підклас "Знає".
Серіалізація RDF
RDF можна експортувати в декілька форматів файлів. Найпоширенішим є RDF + XML, але це має деякі недоліки.
N3 - це не-XML-формат, який легше читати, і є деякі підмножини (Turtle та N-Triples), які суворіші.
Важливо знати, що RDF - це спосіб роботи з трійками, а не формати файлів.
XSD
XSD - це простір імен, який здебільшого використовується для опису типів властивостей, таких як дати, цілі числа тощо. Зазвичай це спостерігається в даних RDF, що ідентифікують конкретний тип літералу. Він також використовується в XML-схемах, що є дещо іншим чайником риби.
OWL
OWL додає семантику до схеми. Це дозволяє уточнити набагато більше про властивості та класи. Він також виражається в трійках. Наприклад, це може вказувати, що "Якщо A єMarriedTo B", це означає "B isMarriedTo A". Або що якщо " C isAncestorOf D " і " D isAncestorOf E ", то " C isAncestorOf E"". Ще одна корисна річ, яку додає сова - це можливість сказати дві речі однакові, це дуже корисно для об’єднання даних, виражених в різних схемах. Ви можете сказати, що відносини "sired" в одній схемі - це сова: ті ж, що і "інші" в інших схемах. Ви також можете використовувати його, щоб сказати, що дві речі однакові, наприклад, "Елвіс Преслі" у Вікіпедії є той самий, що і на BBC.
Ви також можете використовувати OWL для висновку про неявні факти, наприклад " C isAncestorOf E ".
Коротко:
Як писав попередній плакат, RDF - це специфікація, яка говорить про те, як визначити трійки.
Проблема полягає в тому, що RDF дозволяє вам визначити все, щоб ви могли скласти декларацію так:
| subject | predicate | object |
|---------|-----------|--------|
| Alex | Eats | Apples |
| Apples | Eats | Apples |
| Apples | Apples | Apples |
Ці трійки утворюють дійсні документи RDF.
Але, семантично, ви розумієте, що ці твердження неправильні, і RDF не може допомогти вам перевірити те, що ви написали.
Це неправдива онтологія.
Специфікація OWL визначає, що саме ви можете писати за допомогою RDF, щоб мати дійсну онтологію.
Онтології можуть мати кілька властивостей.
Ось чому OWL (версія 1) визначає кілька версій, як OWL DL, OWL Lite, OWL Full.
RDF, RDFS та OWL - це засоби висловлювати все більш складну інформацію чи знання. Усі вони можуть бути серіалізовані в синтаксисі RDF / XML (або будь-який інший синтаксис серіалізації RDF, наприклад, Черепаха або N3).
Ці технології пов'язані між собою і повинні бути сумісними, але вони мають різний початок, тому, можливо, стосунки між ними складні для розуміння. Вибір того чи іншого залежить від того, наскільки складність потребує ситуація, яку ви моделюєте.
Підсумок експресивності
RDF : прямолінійне представлення, зосереджене на екземплярах та на відображенні їх типів ( rdf:type
). Можна встановити власні властивості для зв’язку даних та створення трійки. Дані RDF запитуються за допомогою SPARQL. Приклад RDF, серіалізованого у черепахи:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
RDFS: Деякі ситуації не легко моделюються лише RDF, іноді цікаво представити більш складні відносини, наприклад, підкласи ( тип типу ). RDFS надає спеціальні засоби для подання таких випадків, з конструктами подобаються rdfs:subClassOf
, rdfs:range
або rdfs:domain
. В ідеалі раціоналіст може зрозуміти семантику RDFS та розширити кількість трійки на основі співвідношень: Наприклад, якщо у вас є трійки John a Man
таMan rdfs:subClassOf
Human
тоді ви повинні генерувати, а трійку John a Human
. Зауважте, що це неможливо зробити лише з RDF. Дані RDFS запитуються за допомогою SPARQL. Приклад RDFS, серіалізованого у Turtle:
@prefix : <http://www.example.org/> .
:john rdf:type :Man .
:Man rdfs:subClassOf :Human .
:john :livesIn "New-York" .
:livesIn rdf:type rdf:Property .
# After reasoning
:john rdf:type :Human .
OWL: Найвищий рівень експресивності. Співвідношення між класами можна формально моделювати на основі логіки опису (математична теорія). OWL в значній мірі покладається на повторний сигнал, можна виразити складні конструкції, такі як ланцюгові властивості, наприклад, або обмеження між класами. OWL служить для побудови онтологій або схеми у верхній частині наборів даних RDF. Оскільки OWL може бути серіалізований як RDF / XML, теоретично можливо запитувати його через SPARQL, але набагато інтуїтивніше запитувати онтологію OWL за допомогою DL-запиту (як правило, це стандартний вираз класу OWL). Приклад конструкцій OWL, серіалізованих у Turtle.
@prefix : <http://www.example.org/> .
:livesIn rdf:type owl:DatatypeProperty .
:Human rdf:type owl:Class .
:Man rdf:type owl:Class .
:Man rdfs:subClassOf :Human .
:John rdf:type :Man .
:John rdf:type owl:NamedIndividual .
По-перше, як було зазначено раніше, сову можна серіалізувати в RDF.
По-друге, OWL додає онтологічну здатність до RDF (що само по собі забезпечує надзвичайно обмежену можливість формального представлення відомих знань), забезпечуючи апарат для визначення компонентів вашої трійки за допомогою формальної обчислюваної логіки опису першого порядку. Це те, що тут мають на увазі плакати, коли вони говорять про "смислове багатство".
По-третє, важливо усвідомити, що в OWL-Full (для OWL 1) rdfs: class та owl: class еквівалентні, а в OWL-DL, Owl: class - це підклас rdfs: class. Фактично це означає, що ви можете використовувати онтологію OWL як схему для RDF (формально не вимагаючи схеми).
Я сподіваюся, що це допоможе з’ясувати далі.
Коли ви використовуєте термін RDF, вам слід розрізнити дві речі:
Ви можете посилатися на RDF як на поняття :
Спосіб опису речей / логіки / нічого, використовуючи колекції трійки.
Приклад:
«У Анни яблука». "Яблука здорові".
Ви маєте дві трійки, які описують два ресурси "Анна" та "яблука". Концепція RDF (Resource Description Framework) полягає в тому, що ви можете описувати ресурси (що завгодно) за допомогою наборів усього 3 слова (терміни). На цьому рівні вам не байдуже, як ви зберігаєте інформацію, чи є у вас рядок з 3-х слів, або малюнок на стіні, або таблиця з 3 стовпцями тощо.
На цьому концептуальному рівні важливим є лише те, що ви можете представляти все, що завгодно, використовуючи потрійні висловлювання.
Ви можете посилатися на RDF як словниковий запас
Лексика - це лише сукупність визначень термінів, що зберігаються у файлі чи десь. Ці визначені терміни мають на меті бути повторно використаними в інших описах, щоб люди могли легше та стандартніше описувати дані (ресурси).
В Інтернеті ви можете знайти деякі стандартні словники, такі як:
RDF ( https://www.w3.org/1999/02/22-rdf-syntax-ns )
RDFS ( https://www.w3.org/2000/01/rdf-schema# )
OWL ( https://www.w3.org/2002/07/owl )
RDF-вокабаларність визначає терміни, які допомагають описати (на самому базовому рівні) людей / екземпляри класів. Приклад: rdf: type, rdf: Властивість.
За допомогою rdf: type можна описати, що деякий ресурс є екземпляром класу:
<http://foo.com/anna> rdf:type <http://foo.com/teacher>
Таким чином, словник RDF має терміни, які орієнтовані на основні описи екземплярів класу та деякі інші описи (наприклад, визначення потрійного висловлювання або визначення предиката ... загалом, речі, що відносяться до концепції RDF).
У лексиці RDFS є термінові визначення, які допомагають описати класи та зв’язки між ними. Лексика RDFS не переймається випадками класів (осіб), як словник RDF. Приклад: властивість rdfs: subClassOf, яке можна використовувати для опису, що клас A є підкласом класу B.
Словники RDF та RDFS залежать один від одного. RDF визначає його терміни, використовуючи RDFS, а RDFS використовує RDF для визначення власних термінів.
Словники RDF / RDFS містять терміни, які можна використовувати для створення дуже основних описів ресурсів. Якщо ви хочете мати більш складні та точні описи, ви повинні використовувати словник OWL.
Словник OWL постачається з набором нових термінів, орієнтованих на більш детальні описи. Цей термін визначається за допомогою термінів із словників RDF / RDFS.
owl:ObjectProperty a rdfs:Class ;
rdfs:label "ObjectProperty" ;
rdfs:comment "The class of object properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:DatatypeProperty a rdfs:Class ;
rdfs:label "DatatypeProperty" ;
rdfs:comment "The class of data properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf rdf:Property .
owl:TransitiveProperty a rdfs:Class ;
rdfs:label "TransitiveProperty" ;
rdfs:comment "The class of transitive properties." ;
rdfs:isDefinedBy <http://www.w3.org/2002/07/owl#> ;
rdfs:subClassOf owl:ObjectProperty .
Як видно вище, словник OWL розширює поняття rdf: Властивість, створюючи нові типи властивостей, які є менш абстрактними та можуть надавати більш точні описи ресурсів.
Висновки:
RDF - це спосіб визначити потрійний "предмет", "предикат", "значення" . Наприклад, якщо я хочу сказати,
"мене звуть П'єр"
Я б написав
<mail:me@where.com> <foaf:name> "Pierre"
Дивіться <foaf:name>
? вона є частиною онтології FOAF . Онтологія - це формальний спосіб описати властивості, класи даного предмета, а OWL - це (RDF) спосіб визначення онтології.
Для визначення класу, підкласу, поля тощо ви використовуєте C ++, Java тощо ...
class Person
{
String email_as_id;
String name;
}
RDF використовує OWL для визначення таких типів операторів.
Ще одне місце, щоб задати подібне запитання: http://www.semanticoverflow.com/
Я намагаюся осягнути концепцію Semantic Web. Мені важко зрозуміти, у чому саме різниця між RDF та OWL. Чи OWL є розширенням RDF або ці дві абсолютно різні технології?
Коротше кажучи, так, можна сказати, що OWL - це розширення RDF.
Більш детально, за допомогою RDF ви можете описати спрямований графік, визначивши трійки предмет-предикат-об'єкт. Суб'єкт і об’єкт - це вузли, присудок - це край, або іншими словами, предикат описує відношення між предметом і об'єктом. Наприклад:Tolkien :wrote :LordOfTheRings
або:LordOfTheRings :author :Tolkien
тощо ... Системи пов'язаних даних використовують ці трійки для опису графіків знань, і вони надають способи їх зберігання, запиту. Зараз це величезні системи, але ви можете використовувати RDF для менших проектів. Кожна програма має специфічну для домену мову (або всюдисущу мову за умовами DDD). Ви можете описати цю мову у своїй онтології / лексиці, так що ви можете описати доменну модель вашої програми за допомогою графіка, який ви зможете візуалізувати, показати її на бізнес-ppl, поговорити про бізнес-рішення на основі моделі та побудувати додаток зверху. того. Ви можете прив’язати vocab вашої програми до даних, які вона повертає, та до лексики, відомої пошуковими системами, наприклад мікроданих(наприклад, ви можете використовувати HTML з RDFA для цього), і тому пошукові системи можуть легко знаходити ваші програми, оскільки знання про те, що це робиться, буде оброблятися машиною. Так працює семантична веб. (Принаймні, так я собі уявляю.)
Тепер для опису об'єктно-орієнтованих програм вам потрібні типи, класи, властивості, екземпляри тощо ... За допомогою RDF ви можете описувати лише об'єкти. RDFS (схема RDF) допомагає описати класи, успадкування (на основі об'єктів ofc.), Але воно занадто широке. Для визначення обмежень (наприклад, одна дитина на кожну китайську родину) вам потрібен інший словник. OWL (мова онтології) виконує цю роботу. OWL - онтологія, яку ви можете використовувати для опису веб-додатків. Він інтегрує XSD simpleTypes.
Так само RDF -> RDFS -> OWL -> MyWebApp
є наказ описати ваш веб-додаток більш конкретно.
personA friendsWith personB
), що (2) RDFS розширює це, надаючи можливість задавати зв'язки між object classes
- тобто class Person <has 'friendsWith' relationship> Person
. Це дозволяє потім фразу RDF з допомогою класу: A:typeof:person friendsWith B:<typeof:person>
. І (3) OWL дозволяє вам задати обмеження відносин?
RDFS дозволяє висловити зв'язки між речами, стандартизуючи їх у гнучкому, потрійному форматі, а потім надаючи словниковий запас ("ключові слова", такі як rdf:type
або rdfs:subClassOf
), які можна використовувати для вимови .
OWL схожий, але більший, кращий і гірший. OWL дозволяє говорити набагато більше про вашу модель даних, вона показує, як ефективно працювати з запитами до бази даних та автоматичними повторними переглядачами, а також дає корисні примітки для переведення ваших моделей даних у реальний світ.
З відмінностей між RDFS та OWL, найважливішим є лише те, що OWL надає набагато більший словник, який ви можете використовувати, щоб сказати щось .
Наприклад, OWL включає в себе всі ваші старі друзі з RDFS , таких як rdfs:type
, rdfs:domain
і rdfs:subPropertyOf
. Однак OWL також дає вам нових і кращих друзів! Наприклад, OWL дозволяє описати вам дані з точки зору встановлених операцій:
Example:Mother owl:unionOf (Example:Parent, Example:Woman)
Це дозволяє визначати еквівалентність у базі даних:
AcmeCompany:JohnSmith owl:sameAs PersonalDatabase:JohnQSmith
Це дозволяє обмежувати значення властивостей:
Example:MyState owl:allValuesFrom (State:NewYork, State:California, …)
насправді OWL пропонує стільки нового, складного словника, який можна використовувати при моделюванні даних та міркуванні, що отримує власний урок!
Інша основна відмінність полягає в тому, що на відміну від RDFS, OWL не тільки говорить вам про те, як ви можете використовувати певний словник, але фактично розповідає, як ви не можете ним користуватися. На відміну від цього, RDFS дає вам все що завгодно, до якого ви можете додати майже будь-яку трійку, яку захочете.
Наприклад, в RDFS все, що вам здається, може бути примірником rdfs:Class
. Ви можете вирішити сказати, що Бігль є, rdfs:Class
а потім сказати, що Фідо є екземпляром Бігла :
Example: Beagle rdf:Type rdfs:Class
Example:Fido rdf:Type Example: Beagle
Далі ви можете вирішити, що хочете сказати речі про біглів, можливо, ви хочете сказати, що Бігль - це екземпляр собак, розведених в Англії :
Example:Beagle rdf:Type Example:BreedsBredInEngland
Example: BreedsBredInEngland rdf:Type rdfs:Class
Цікавим у цьому прикладі є те, що Example:Beagle
він використовується як класом, так і екземпляром . Бігль - клас, до якого входить Фідо , але сам Бігль є членом іншого класу: речі, розведені в Англії.
У RDFS все це цілком законно, тому що RDFS насправді не обмежує, які заяви ви можете, а не можете вставити. Для OWL, навпаки, або, принаймні, в деяких ароматах OWL, вищезазначені твердження насправді не є законними: вам просто не дозволяють говорити, що щось може бути і класом, і екземпляром.
Тоді це друга основна різниця між RDFS та OWL. RDFS дозволяє безкоштовно для всіх , що завгодно, у світі, наповненому Диким Заходом, Speak-Easies та Сальвадором Далі. Світ OWL накладає набагато більш жорстку структуру.
Припустимо, ви провели останню годину, будуючи онтологію, яка описує ваш радіотехнічний бізнес. Під час обіду ваше завдання - побудувати онтологію для вашого виробництва годинників. Сьогодні після обіду, після приємної кави, ваш начальник зараз каже вам, що вам доведеться побудувати онтологію для вашого високоприбуткового годинникового бізнесу. Чи є спосіб легко використати ранкову роботу?
OWL робить такі речі дуже, дуже просто. Owl:Import
є те , що ви будете використовувати в ситуації , в радіо-годинники, а також OWL дає багату різноманітність анотацій , таких як owl:versionInfo
, owl:backwardsCompatibleWith
іowl:deprecatedProperty
, які можуть легко бути використані моделі даних зв'язати воєдино в обопільно єдине ціле.
На відміну від RDFS, OWL обов'язково задовольняє всі ваші потреби в метамета-даних щодо моделювання даних.
OWL надає вам значно більший словник, з яким можна легко сказати все, що ви можете сказати про вашу модель даних. Це навіть дозволяє налаштувати те, що ви говорите, виходячи з обчислювальної реальності сучасних комп'ютерів та оптимізуючи для конкретних програм (наприклад, для пошукових запитів). Крім того, OWL дозволяє легко виражати зв’язки між різними онтологіями, використовуючи стандартну рамку анотацій .
Все це є перевагами порівняно з RDFS, і, як правило, вартує додаткових зусиль, необхідних для ознайомлення з ними.
Джерело: RDFS проти OWL
В об'єктній моделі WC3 документа, що представляє собою документ є абстрактною річ: елемент з текстом, коментарями, атрибутами та іншими елементами , вкладених в нього.
У семантичній павутині ми маємо справу з набором "трійки". Кожна трійка - це:
OWL - це семантична павутина, як і схеми для об'єктної моделі документа W3C. Він документує, що означають різні URI, і вказує, як вони використовуються формально, що їх можна перевірити машиною. Семантична павутина може або не може бути дійсною щодо OWL, що застосовується до неї, подібно до того, як документ може бути, а може і не бути дійсним щодо схеми.
RDF - це семантична павутина, як XML - DOM - це серіалізація набору трійки.
Звичайно, RDF зазвичай серіалізовать XML - документів ... але важливо розуміти , що RDF це не те ж саме , як «XML серіалізациі в RDF».
Аналогічно, OWL може бути серіалізований за допомогою OWL / XML, або (вибачте з цього приводу) він може бути виражений як RDF, що сам по собі зазвичай серіалізується як XML.
Базовий семантичний веб-стек багато в чому пояснено вже в цій темі. Я хотів би зупинитися на початковому питанні та порівняти RDF з OWL.
Використання OWL має важливе значення, щоб отримати більше сенсу (міркування та умовиводи), знаючи лише кілька фактів. Ця "динамічно створена" інформація може бути додатково використана для відповідних запитів, як у SPARQL.
Деякі приклади показують, що це насправді працює з OWL - вони були взяті з моєї розмови про основи семантичної мережі в TYPO3camp Майорка, Іспанія у 2015 році.
Spaniard: Person and (inhabitantOf some SpanishCity)
Це означає, що a Spaniard
повинен бути Person
(і, таким чином, успадковує всі властивості в приналежної частини) і повинен жити принаймні в одному (або більше) SpanishCity
.
<Palma isPartOf Mallorca>
<Mallorca contains Palma>
Приклад показує результат застосування inverseOf
до властивостей isPartOf
та contains
.
<:hasParent owl:cardinality “2“^^xsd:integer>
Це визначає, що кожен Thing
(у цьому сценарії, швидше за все, а Human
) має рівно двох батьків - кардинальність присвоюється hasParent
властивості.
Малюнок говорить тисячу слів! Ця діаграма нижче повинна підкріплювати те, що Крістофер Гуттерідж сказав у цій відповіді, що семантична павутина - це «багатошарова архітектура».
Джерело: https://www.obitko.com/tutorials/ontologies-semantic-web/semantic-web-architecture.html
Resource Description Framework (RDF) є потужним формальним мовою подання знань і фундаментальним стандарт Semantic Web. У ньому є власний словник, який визначає основні поняття та відносини (наприклад, rdf: тип відповідає співвідношенню isA) та модель даних, яка дозволяє машинно інтерпретувати висловлювання у вигляді предмета-предикату-об'єкта (ресурс-властивість-значення) трійки, що називаються RDF трійками, такими як картинки-зображення-книги. Розширення словникового запасу RDF з поняттями, необхідними для створення керованих словників та основних онтологій, називається RDF Schema або RDF Vocabulary Description Language (RDFS). RDFS дає змогу писати заяви про класи та ресурси та виражати таксономічні структури, наприклад, за допомогою взаємозв'язку надкласового та підкласового класів.
Складні області знань потребують більше можливостей, ніж доступні в RDFS, що призвело до впровадження OWL . OWL підтримує відносини між класами (союз, перехрестя, нерозбірливість, еквівалентність), обмеження кардинальності власності (мінімальне, максимальне, точне число, наприклад, у кожної людини є рівно один батько), багате введення властивостей, характеристик властивостей та спеціальних властивостей (перехідних, симетричний, функціональний, зворотний функціонал, наприклад, A ex: hasAncestor B і B ex: hasAncestor C означає, що A ex: hasAncestor C), визначаючи, що дана властивість є унікальним ключем для екземплярів певного класу, обмеження домену та діапазону за властивостями.