Swrl a semantic web rule language
Download
1 / 59

SWRL : A Semantic Web Rule Language - PowerPoint PPT Presentation


  • 171 Views
  • Uploaded on

SWRL : A Semantic Web Rule Language. Комбинация от OWL и RuleML http://www.w3.org/Submission/SWRL/ Разработили: Диян Детелинов Пенко в М22804 Надежда Георгиева Танева М22694. 1.Въведение.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' SWRL : A Semantic Web Rule Language' - archie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Swrl a semantic web rule language

SWRL:A Semantic Web Rule Language

Комбинация от OWL и RuleML

http://www.w3.org/Submission/SWRL/

Разработили:

Диян Детелинов Пенков М22804

Надежда Георгиева Танева М22694


1.Въведение

SWRL представлява предложение на базата на комбинация от OWL DL и OWL Lite подезци на OWL Web. Предложението разширява набора от OWL аксиоми за да включи horn-подобни правила. Като по този начин дава възможност на horn-подобните правила да бъдат комбинирани с базата от знания на OWL. Високото ниво на абстрактен синтаксис е предвидено, защото разширява абстрактния синтаксис на OWL, описан в семантиката и абстракцията на OWL.

Предложените правила са под формата на импликация между предпоставка(body) и заключение(head). Смисълът може да се чете така: когато условията, посочени в съдържанието на предпоставката са изпълнени, тогава условията, определени в заключението трябва също да са изпълнени. И предпоставката(body) и заключението(head) се състоят от нула или повече атоми. Една празна предпоставка се третира като тривиално вярна, тогава заключението трябва също да бъде одувлетворено от всяка интерпреация; празно заключение се третира като тривиална лъжа, значи предпоставката не трябва да бъде удовлетворена от коя да е интерпретация. Няколко атома се третират като конкатенация. Правилата с конкатенирани заключения могат лесно да бъдат трансформирани в няколко правила всяко от което с атомарно заключение.

Атомите в тези правила могат да бъдат от вида C (Х), P (X, Y), sameAs (X, Y), или differentFrom (X, Y), където C е OWL описание, P е OWLсвойство, и Х , Y са променливи, OWL индивиди или OWL данни.


2.Абстрактен синтаксис

Синтаксисът на SWRL се абстрахира от синтаксиса на OWLи по този начин улеснява достъпа и оценката на езика. Този синтаксис разширява абстрактния синтаксис на OWL. Дори и този абстрактен синтаксис не е особено четим за правила. Затова примерите често ще бъде давани в неформалнен синтаксис. Този неформален синтаксис няма да ни даде точен синтаксис нито съответствие с някой от напълно специфицираните синтаксиси за SWRL.

Абстрактният синтаксис се специфицира със значението на версия на разширението на BNF, което емного еднакъво до EBNF нотацията използвана за XML. Терминалите са с кавички а нетерминалите са одебелени и без кавички. Алтернативите са или отделени с | или са в различни представяния. Компонентите които могат да се срещнат поне ведъж са оградени в []. Компонентите които могат да се срещнат неопределен брой пъти (включително и нула) са оградени в {}. Интервалът се игнорира в представянето.

Имена в абстрактния синтаксис са RDF URI референции. Тези имена могат да бъдат съкратени в квалифицирани имена, като използвате едни от следните пространства от имена:


...

Значението на всяка конструкция в абстрктния синтаксис е не формално описана когато е представена.


2.1.Правиала

Една OWLонтология в абстрактния синтаксис съдържа поредица от аксиоми и факти. Аксиомите могат да бъдат различни видове, например: подклас аксиоми и еквивалентен клас аксиоми. Предлага се да се разшири това с аксиоми-правила.

axiom ::= rule

Една аксиома-правило се състой от предпоставка и заключение, всяко от които се състой от множество от атоми (възможно и празно). Аксиома-правило също може да бъде предназначено за URI референция, която може да служи за идентифициране на правилото.

rule ::= 'Implies(' [ URIreference ] { annotation } antecedent consequent ')'

antecedent ::= 'Antecedent(' { atom } ')'

consequent ::= 'Consequent(' { atom } ')’


...

Неформално, правило може да бъде тълкувано така: ако предпоставката е истина тогава заключението трябва също да е истина. Празна предпоставка се третира като тривиална истина и празно заключение се третира като тривиална лъжа. Правила с празни предпоставки могат да бъдат използвани да предотставят безусловни факти, обаче безусловните факти са по добре изложени в OWL например без употребата на конструкции за правила. Не празни предпоставки и заключения са истина ако всички техни съставни атоми са истина, например те се третират като конкатенация на техните атоми. Както споменахме правила с конкатенирани заключения могат лесно да бъдат трансформирани в няколко правила, всяко с атомарно заключение.

atom ::= description '(' i-object ')'

| dataRange '(' d-object ')‘

| individualvaluedPropertyID '(' i-object i-object ')'

| datavaluedPropertyID '(' i-object d-object ')'

| sameAs '(' i-object i-object ')'

| differentFrom '(' i-object i-object ')'

| builtIn '(' builtinID { d-object } ')'

builtinID ::= URIreference


...

Атомите могат да бъдат от вида C (Х), P (X, Y), sameAs (X, Y), differentFrom (X, Y) или builtIn(r,x,...), където C е OWL описание или множество от стойности, P е OWLсвойство,r е вградена релация, и Х , Y са променливи, OWL индивиди или OWL данни както е подходящо. В контекста на OWL Liteописанията в атомите от вида C (X) могат да бъдат ограничени до имена на класове.

Неофициално атома C (X) е истина ако x е инстанция от описанието на класа или множеството от стоиности C, атома P (X, Y) е истина ако X е свързан с Y чрез свойството P, атома sameAs (X, Y) е истина ако X се интерпретира с същия обект като X, атома differentFrom (X, Y) е истина, ако X и Y са интерпретирани като различни обекти и builtIn (R, X ,...) e истина ако вградената релация R е истина при интерпретацията на аргументите .


...

i-object ::= i-variable | individualID

d-object ::= d-variable | dataLiteral

Атомите могат да се отнасят към индивиди, литерали данни, променливи индивиди или променливи данни. Променливите се третират като универсално определени с техния обхват ограничен до дадено правило. Обикновенно само променливите които се срещят в предпоставките могат да се срещат в заключенията. Това безопасно условие не огараничава изразителната мощ на езика.

i-variable ::= 'I-variable(' URIreference ')'

d-variable ::= 'D-variable(' URIreference ')‘


2.2.Четим синтаксис

Докато абстрактния EBNF синтаксис е в съответствие със спецификацията на OWL и е полезен за дефиниране на XML и RDF сериализации,той е твърде многословен и не особенно лесен за четене. Затов нататък ще използваме относително неформален “четим” вид подобен на този използван в много публикации за правилата. В синтаксиса правилото има вида:

antecedent ⇒ consequent

,където предпоставките и заключенията са съставени от атоми записани a1 ∧ ... ∧ an. Променливите са означени използвайки стандартната конвенция за префикс с въпросителен знак (e.g., ?x). Използвайки този синтаксис правилото подтвърждава че композицията на свойствата родител и брат означава че свойството чичо ще бъде написано така:

parent(?x,?y) ∧ brother(?y,?z) ⇒ uncle(?x,?z)

В този синтакси вградените релации които са функционални могат да бъдат написани във функционална нотация например:

op:numeric-add(?x,3,?z)

може да бъде написно вместо:

?x = op:numeric-add(3,?z)


3.Пряка семантика модел-теория

Тази семантика за SWRL е просто разширение на семантиката на OWL. Главната идея е че ние определяме връзките (разширения на OWL интерпретациите) които съпостявят променливите към елементите на домейна. Правило е удовлетворено от интерпретация ако всяко свързване което удовлетворява предпоставките също удовлетворявя и закалюченията. Сементичните условия отнасящи се до аксиомите и онтологиите са непроменени, например, интерпретация удовлетворява онтология ако удовлетворява всяка аксиома (включително и правилата) и всеки факт в онтологията.


3.1.Правила при интерпретиране

От OWL сементиката и абстрактния синтаксис можем да заключим, че имайки datatype map D, абстрактната OWL интерпретация е нторка от вида:

I = <R, EC, ER, L, S, LV>

където R е множество от ресурси, LV ⊆ R е множество от литерални стойности, EC е съответствие м/у класове и типове данни към подмножества от R и LV съответно, ER е съответствие м/у свойствата и бинарните връзки на R, L е съответствие м/у типизираните литерали и елементите на LV и S е съответствие м/у отделните имена и елементите на EC.

Имайте в предвид че позволяването на datatype map-а да се променя, това позволява различни имплементации на SWRL да имплементират различни вградени релации. Предполага се че, ако имплементацията на SWRL имплементира конкретен dataype, тогава тя имплементира built-insна datatype-a.


...

Като се има в предвид абстрактната OWL интерпретация I, свързването B(Ι) е абстрактна OWL интерпретация която разширява I така че S прави мапинг м/у i-променливи и елементи на EC и L прави мапинг м/у d-променливи и елементи на LV съответно. Атом е удовлетворен от интерпретацията I при условията дадени в таблицата на условията на интерпретацията, където C е OWL DL описание, D е OWL DL множество от стойости, P е OWL DL свойиства с единична стойност, Q е OWL DLdatavalueсвойство, f е вградена релация, x,y са променливи или OWL индивиди, а z е променлива или OWL данна.

Interpretation Conditions Table


...

Имайте в предвид, че тази интерпретация на вграденте релациите е твърде толерантна. Не е необходимо за вградена релация да има фиксиран брой аргументи, нито е грешка да използжаш вградена реллация с фиксиран брой аргументи със грешен брй аргументи. Например:

builtIn(op:numeric-add ?x 5)

е неудовлетворена,а не е снтактична грешка.

Свързването B(Ι) удовлетворява предпоставката A ако A е празно или B(I) удовлетворява всеки атом в A. Свързването B(I) удовлетворява заключението C, ако C не е празно и B(I) удовлетворява всеки атом в C.Правило е удовлетворено от интерпретацията I ако за всяко свъзване B такова че B(I) удовлетворява предпоставката то B(I) също удовлетворява и заключението.

Иайте в предвид, че анотации на правило нямат семантични заключения и не правят URI референции асоциирани с правила. Товa е различно от ситуацията при OWL където анотациите нямат семантични заключения.

Семантичните условия отнасящисе за аксиоми и онтологии са неизменими. По-специално, интерпретация удовлетворява онтология ако удовлетворява всяка аксиома (включително правила) ивсеки факт в онтологията. Онтологията е съвместима ако е удовлетворена от най-малко една интерпретация. Онтология О2 е следствие от онтологията О1 ако всяка интерпретация която удовлетворява О1 удовлетворява и О2.


4. Примерни правила

1)Проста употреба на тези правила, може да бъде да проверим че комбинацията на свойствата hasParentиhasBrotherпредполагат свойството hasUncle. Неформално това правило може да бъде написано като:

hasParent(?x1,?x2) ∧ hasBrother(?x2,?x3) ⇒ hasUncle(?x1,?x3)

В абстрактния синтаксис правилото щеше да бъде написано като:

Implies(Antecedent(hasParent(I-variable(x1) I-variable(x2)) hasBrother(I-variable(x2) I-variable(x3))) Consequent(hasUncle(I-variable(x1) I-variable(x3))))

От това правило ако Mary е родител на John и Bill е брат на Mary тога John има бил за чичо.


...

2)Дори по-просто правило ще е да подтвърдим че Studentsса Persons, кактоStudent(?x1)⇒Person(?x1).

Implies(Antecedent(Student(I-variable(x1)))

Consequent(Person(I-variable(x1))))

3)Често използвана употреба на правилата е да предават стойности на свойства от един индивид към сходен индивид, както в следващия пример който изразява факта че стила на artist обекта е същия като стила на creator:

Artist(?x) & artistStyle(?x,?y) & Style(?y) & creator(?z,?x) ⇒ style/period(?z,?y)

Implies(Antecedent(Artist(I-variable(x))

artistStyle(I-variable(x) I-variable(y))

Style(I-variable(y))

creator(I-variable(z) I-variable(x)))

Consequent(style/period(I-variable(z) I-variable(y))))


4)Полезно е да се включи OWL описание в правилата вместода се използват именовани класове. Горното правило можеше да бъде увеличено с отделно правило за да предотстави информация за единствеността на стила(имайки впредвид че стиал не е единствен).

Artist(?x) & (≤1artistStyle)(?x) & creator(?z,?x) ⇒ (≤1 style/period)(?z)

Implies(Antecedent(Artist(I-variable(x))

(restriction(artistStylemaxCardinality(1)))(I-variable(x))

Style(I-variable(y))

creator(I-variable(z) I-variable(x)))

Consequent((restriction(style/period maxCardinality(1)))(I-variable(z))))


5. Окончателен XML синтаксис

Окончателният XML синтаксис е комбибация от OWL Web Ontology Language XML Presentation синтаксиса и RuleML XML синтаксиса. Това има редица предимства:

  • Произволни OWL класове(напр. описания) могат да бъдат използвани като предикати в правила.

  • Аксиомите на правила и онтологии могат да бъдат свободно смесвани.

  • Съществуващият XSLT модел (owlxml2rdf.xsl), може лесно да бъде разширен за да предоставя мапинг към RDF графи.

  • Оперативната съвместимост между OWL и RuleMLе опростена, съществуващите RuleML инструменти могат да бъдат адаптирани към SWRL.

    XML схема за окончателния SWRL XML синтаксис е swrlx.xsd.

    Окончателния SWRL XML синтаксис използва namespaces http://www.w3.org/2003/11/swrlx,

    http://www.w3.org/2003/11/ruleml,

    http://www.w3.org/2003/05/owl-xml (owlx) и

    http://www.w3.org/2001/XMLSchema (xsd)


...

Ontology root елемента на OWL XML Presentation синтаксиса е разширен, за да включи "imp" (implication rule) and "var" (variable declaration)

Ontologyелемент

<swrlx:Ontologyswrlx:name = xsd:anyURI >

Content: (owlx:VersionInfo | owlx:PriorVersion | owlx:BackwardCompatibleWith | owlx:IncompatibleWith | owlx:Imports | owlx:Annotation | owlx:Class[axiom] | owlx:EnumeratedClass(D,F) | owlx:SubClassOf(D,F) | owlx:EquivalentClasses | owlx:DisjointClasses(D,F) | owlx:DatatypeProperty | owlx:ObjectProperty | owlx:SubPropertyOf | owlx:EquivalentProperties | owlx:Individual[axiom] | owlx:SameIndividual | owlx:DifferentIndividuals | ruleml:imp[axiom] | ruleml:var[axiom])*

</swrlx:Ontology>

Атрибут: swrlx:name – отнася се за името на тази онтология, което е главният URI на този елемент.

Variable (var) аксиомите са формулировки за променливите, посочвайки че даденият стринг трябва да бъде използван като променлива.

Елемент ruleml:var[axiom]

<ruleml:var>xsd:string</ruleml:var>

Родител: swrlx:Ontology

Var аксиомите просто определят съществуването на променлива. Това е взето от RuleMLnamespace. Напр.

Пример 5-1

<ruleml:var>x1</ruleml:var>


...

Rule аксиоми(imp елементи) са подобни на SubClassOf аксиоми. Те са взети от RuleML namespace. Rule аксиомите могат да бъдат прочетени като логическа импликация между предпоставката и заключението. Като SubClassOfаксиомите, правилата могат да включват анотации. Rule аксиомите могат незадължително да бъдат именовани.

Елемент ruleml:imp[axiom]

<ruleml:imp>

Content: ( _rlab?, owlx:Annotation*, _body, _head )

</ruleml:imp>

Parents: swrlx:Ontology

Забележка: Този елемент позволява да се каже, че всяко свързване, което удовлетворява тялото на правилото, трябва да удовлетворява и заключението.

Незадължително Rule аксиоми могат да бъдат именовани, използвайки URI.

Елементruleml:_rlab

<ruleml:_rlabruleml:href = xsd:anyURI (required) >

Content: ( )

</ruleml:_rlab>

Parents: ruleml:imp

И _body и_head са списъци от атоми и се четат като конюнкция от атоми.


...

Елемент ruleml:_body

<ruleml:_body>

Content: ( swrlx:atom* )

</ruleml:_body>

Parents: ruleml:imp

Елемент ruleml:_head

<ruleml:_head>

Content: ( swrlx:atom* )

</ruleml:_head>

Parents: ruleml:imp

Атомите могат да бъдат формирани от унарни предикати (класове), бинарни предикати(с-ва), равенства и различия

Model group swrlx:atom

Content: (swrlx:classAtom | swrlx:datarangeAtom | swrlx:individualPropertyAtom | swrlx:datavaluedPropertyAtom | swrlx:sameIndividualAtom | swrlx:differentIndividualsAtom | swrlx:builtinAtom)

Parents: ruleml:_body, ruleml:_head


...

Клас атомите се състоят от описание и individual name или variable name.

Елемент swrlx:classAtom

<swrlx:classAtom>

Content: ( owlx:description, swrlx:iObject )

</swrlx:classAtom>

Parents: swrlx:atom

Описанието в клас атом може да бъде клас име, или може да бъде комплексно описание използвайки булеви комбинации, рестрикции и т.н. Например:


...

Пример 5-2

<swrlx:classAtom>

<owlx:Classowlx:name="Person" />

<ruleml:var>x1</ruleml:var>

</swrlx:classAtom>

<swrlx:classAtom>

<owlx:IntersectionOf>

<owlx:Classowlx:name="Person" />

<owlx:ObjectRestrictionowlx:property="hasParent">

<owlx:someValuesFromowlx:class="Physician" /> </owlx:ObjectRestriction>

</owlx:IntersectionOf>

<ruleml:var>x2</ruleml:var>

</swrlx:classAtom>

Datarange атомите се състоят от м-во с-ти и име на литерал или променлива.

Елемент swrlx:datarangeAtom

<swrlx:datarangeAtom>

Content: ( owlx:datarange, swrlx:dObject )

</swrlx:datarangeAtom>

Parents: swrlx:atom


...

Описанието в datarangе атом може да бъде datatype ID или м-во от литерали. Например:

Пример 5-3

<swrlx:datarangeAtom>

<owlx:Datatypeowlx:name="&xsd;int" />

<ruleml:var>x1</ruleml:var>

</swrlx:datarangeAtom>

<swrlx:datarangeAtom>

<owlx:OneOf>

<owlx:DataValueowlx:datatype="&xsd;int">5</owlx:DataValue>

<owlx:DataValueowlx:datatype="&xsd;int">10</owlx:DataValue>

</owlx:OneOf>

<ruleml:var>x2</ruleml:var>

</swrlx:datarangeAtom>


...

Property атомите се състоят от property име и два елемента, които могат да бъдат individual names, variable names или data values.

Елемент swrlx:individualPropertyAtom

<swrlx:individualPropertyAtomswrlx:property = xsd:anyURI {required} >

Content: ( swrlx:iObject, swrlx:iObject )

</swrlx:individualPropertyAtom>

Атрибут: swrlx:property – референция към individual property name

Parents: swrlx:atom


...

Елемент swrlx:datavaluedPropertyAtom

<swrlx:datavaluedPropertyAtomswrlx:property = xsd:anyURI {required} >

Content: ( swrlx:iObject, swrlx:dObject )

</swrlx:datavaluedPropertyAtom>

Атриут: swrlx:property – референция към datavalued property name

Parents: swrlx:atom

Пример 5-4

<swrlx:individualPropertyAtomswrlx:property="hasParent">

<ruleml:var>x1</ruleml:var>

<owlx:Individualowlx:name="John" />

</swrlx:individualPropertyAtom>

<swrlx:datavaluedPropertyAtomswrlx:property="grade">

<ruleml:var>x1</ruleml:var>

<owlx:DataValueowlx:datatype="&xsd;int">4</owlx:DataValue>

</swrlx:datavaluedPropertyAtom>


...

Елемент swrlx:sameIndividualAtom

<swrlx:sameIndividualAtom>

Content: ( swrlx:iObject* )

</swrlx:sameIndividualAtom>

Parents: swrlx:atom

Елемент swrlx:differentIndividualsAtom

<swrlx:differentIndividualsAtom>

Content: ( swrlx:iObject* )

</swrlx:differentIndividualsAtom>

Parents: swrlx:atom

Имайте предвид, че сходството(различието) може да бъде потвърдено между произволна комбинация от variable names и individual names. Например:

Пример 5-5

<swrlx:sameIndividualAtom>

<ruleml:var>x1</ruleml:var>

<ruleml:var>x2</ruleml:var>

<owlx:Individualowlx:name="Clinton" />

<owlx:Individualowlx:name="Bill_Clinton" />

</swrlx:sameIndividualAtom>


...

Вградените атоми предоставят интерфейс към built-ins.

Елемент swrlx:builtinAtom

<swrlx:builtinAtom swrlx:builtin = xsd:anyURI{required} >

Content: ( swrlx:dObject* )

</swrlx:builtinAtom>

Атрибут: swrlx:builtin – референция към built-in

Parents: swrlx:atom


...

Model group swrlx:iObject

Content: ( owlx:Individual[ID] | ruleml:var[ID] )

Parents: swrlx:classAtom, swrlx:individualPropertyAtom, swrlx:sameIndividualAtom, swrlx:differentIndividualsAtom

Model group swrlx:dObject

Content: ( owlx:DataValue | ruleml:var[ID] )

Parents: swrlx:datavaluedPropertyAtom

Елемент ruleml:var[ID]

<ruleml:var>xsd:string</ruleml:var>

Parents: swrlx:iObject, swrlx:dObject


5.1. Примери за правила

Можем да използваме SWRL, за да потвърдим, че комбинацията от от с-вата hasParentи hasBrother следва с-вото hasUncle.

Пример 5.1-1

<ruleml:imp>

<ruleml:_rlabruleml:href="#example1"/>

<ruleml:_body>

<swrlx:individualPropertyAtomswrlx:property="hasParent">

<ruleml:var>x1</ruleml:var>

<ruleml:var>x2</ruleml:var>

</swrlx:individualPropertyAtom>

<swrlx:individualPropertyAtomswrlx:property="hasBrother">

<ruleml:var>x2</ruleml:var>

<ruleml:var>x3</ruleml:var>

</swrlx:individualPropertyAtom>

</ruleml:_body>

<ruleml:_head>

<swrlx:individualPropertyAtomswrlx:property="hasUncle">

<ruleml:var>x1</ruleml:var>

<ruleml:var>x3</ruleml:var>

</swrlx:individualPropertyAtom>

</ruleml:_head>

</ruleml:imp>


5 1 2
Пример 5.1-2

Алтернативна формулировка на правилото от оредния пример, може да бъде да проверим, че ако x1 hasParent x2, x2 hasSibling x3, и x3 hasSex male, тогава x1 hasUncle x3:

<ruleml:imp>

<ruleml:_rlabruleml:href="#example2"/>

<ruleml:_body>

<swrlx:individualPropertyAtomswrlx:property="hasParent">

<ruleml:var>x1</ruleml:var>

<ruleml:var>x2</ruleml:var>

</swrlx:individualPropertyAtom>

<swrlx:individualPropertyAtomswrlx:property="hasSibling">

<ruleml:var>x2</ruleml:var>

<ruleml:var>x3</ruleml:var>

</swrlx:individualPropertyAtom>

<swrlx:individualPropertyAtomswrlx:property="hasSex">

<ruleml:var>x3</ruleml:var>

<owlx:Individualowlx:name="#male" />

</swrlx:individualPropertyAtom>

</ruleml:_body>

<ruleml:_head>

<swrlx:individualPropertyAtomswrlx:property="hasUncle">

<ruleml:var>x1</ruleml:var

<ruleml:var>x3</ruleml:var>

</swrlx:individualPropertyAtom>

</ruleml:_head>

</ruleml:imp>


5 1 3
Пример 5.1-3

Следното правило описва факта, че знаейки AAT стила на определен ULAN артист (напр. van Gogh е художник-импресионист), можем да получим стила на art обякта(описан с VRA element "style/period")от с-та на създателя на art обекта. (представен с VRA елемента "creator", подсвойство на dc:creator):

<ruleml:imp>

<ruleml:_body>

<swrlx:classAtom>

<owlx:Classowlx:name="&ulan;Artist" />

<ruleml:var>x</ruleml:var>

</swrlx:classAtom>

<swrlx:classAtom>

<owlx:Classowlx:name="&aat;Style" />

<ruleml:var>y</ruleml:var>

</swrlx:classAtom>

<swrlx:individualPropertyAtomswrlx:property="&aatulan;artistStyle">

<ruleml:var>x</ruleml:var>

<ruleml:var>y</ruleml:var>

</swrlx:individualPropertyAtom>

<swrlx:individualPropertyAtomswrlx:property="&vra;creator">

<ruleml:var>x</ruleml:var>

<ruleml:var>z</ruleml:var>

</swrlx:individualPropertyAtom>

</ruleml:_body>

<ruleml:_head>

<swrlx:individualPropertyAtomswrlx:property="&vra;style/period">

<ruleml:var>z</ruleml:var>

<ruleml:var>y</ruleml:var>

</swrlx:individualPropertyAtom

</ruleml:_head>

</ruleml:imp>


6 rdf
6. Окончателен RDF синтаксис

В този раздел ще представим окончателния RDF синтаксис за правилата.

RDF схемата за SWRL е swrl.rdf. OWL ontology за SWRL е swrl.owl. Всяко от тях предоставя само частично описание на синтаксиса за SWRL. OWL онологията е по-пълна от RDF схемата.

Преминаването от окончателния XML синтаксис към RDF/XML е постигнато чрез разширяване на XSLT трансформациятаза OWL XML Presentation синтакиса.


6 1 rdf
6.1 Примери за правила в Окончателения RDF синтаксис

Примерите илюстрират удобното разшиение за правила на OWL RDF/XML синтаксиса. Първият пример е повторение на примера 5.1-2 използвайки RDF/XML синтаксис.

Пимер 6.1-1

<swrl:Variablerdf:ID="x1"/>

<swrl:Variablerdf:ID="x2"/>

<swrl:Variablerdf:ID="x3"/>

<ruleml:Imp>

<ruleml:bodyrdf:parseType="Collection">

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&eg;hasParent"/>

<swrl:argument1 rdf:resource="#x1" />

<swrl:argument2 rdf:resource="#x2" /> </swrl:IndividualPropertyAtom>

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&eg;hasSibling"/> <swrl:argument1 rdf:resource="#x2" />

<swrl:argument2 rdf:resource="#x3" /> </swrl:IndividualPropertyAtom>

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&eg;hasSex"/> <swrl:argument1 rdf:resource="#x3" />

<swrl:argument2 rdf:resource="#male" /> </swrl:IndividualPropertyAtom>

</ruleml:body>

<ruleml:headrdf:parseType="Collection">

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&eg;hasUncle"/>

<swrl:argument1 rdf:resource="#x1" />

<swrl:argument2 rdf:resource="#x3" />

</swrl:IndividualPropertyAtom>

</ruleml:head>

</ruleml:Imp>


6 1 2
Пример Окончателения 6.1-2

Този пример е повторение на примера 5.1-3 използвайки RDF/XML синтаксис.

<swrl:Variablerdf:ID="x"/>

<swrl:Variablerdf:ID="y"/>

<swrl:Variablerdf:ID="z"/>

<ruleml:Imp>

<ruleml:bodyrdf:parseType="Collection">

<swrl:ClassAtom>

<swrl:classPredicaterdf:resource="&ulan;Artist"/> <swrl:argument1 rdf:resource="#x" /> </swrl:ClassAtom>

<swrl:ClassAtom>

<swrl:classPredicaterdf:resource="&aat;Style"/> <swrl:argument1 rdf:resource="#y" />

</swrl:ClassAtom>

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&aatulan;artistStyle"/> <swrl:argument1 rdf:resource="#x" />

<swrl:argument2 rdf:resource="#y" /> </swrl:IndividualPropertyAtom>

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&vra;creator"/> <swrl:argument1 rdf:resource="#x" />

<swrl:argument2 rdf:resource="#z" />

</swrl:IndividualPropertyAtom>

</ruleml:body>

<ruleml:headrdf:parseType="Collection">

<swrl:IndividualPropertyAtom>

<swrl:propertyPredicaterdf:resource="&vra;style/period"/>

<swrl:argument1 rdf:resource="#z" />

<swrl:argument2 rdf:resource="#y" />

</swrl:IndividualPropertyAtom>

</ruleml:head>

</ruleml:Imp>


7 built ins
7 Окончателения . Built-Ins

Множеството от built-ins за SWRL е мотивирано от модулен подход, който ще позволи допълнителни разширения в бъдещите версии в рамките на (йерархична) таксономия. В същото време, това ще осигури гъвкавост за различни реализации, да изберат модули, които да бъдат подържани с всяка версия на SWRL.

Подхода на SWRL за built-ins също се основава на повторната употреба на съществуващи built-ins в XQuery и Xpath.

SWRL built-ins се използват в builtinатоми.

Например swrlx:builtinAtomидентифицира built-in използвайки swrlx:builtinатрибут и изброява неговите атоми като поделементи.

SWRL built-ins са идентифицирани използвайки http://www.w3.org/2003/11/swrlb namespace.


7 1 built ins
7 Окончателения .1. Built-Ins за сравнения

  • swrlb:equal (from XQueryop:numeric-equal, op:compare, op:boolean-equalop:yearMonthDuration-equal, op:dayTimeDuration-equal, op:dateTime-equal, op:date-equal, op:time-equal, op:gYearMonth-equal, op:gYear-equal, op:gMonthDay-equal, op:gMonth-equal, op:gDay-equal, op:anyURI-equal)

    Удовлетворена, ако 1-я и 2-я аргумент са еднакви.

  • swrlb:notEqual (from swrlb:equal) Обратна на swrlb:equal.

  • swrlb:lessThan (from XQueryop:numeric-less-than, op:compare, op:yearMonthDuration-less-than, op:dayTimeDuration-less-than, op:dateTime-less-than, op:date-less-than, op:time-less-than) Удовлетворена, ако ако 1-я и 2-я аргумент са от един тип и 1-я е по-малък от 2-я аргумент според наредбата на типа, ако има определена за типа. Ф-ята за наредба за типа на нетипизираните литерали е частична наредба определена като стрингова наредба, когато language tags са еднакви и несравними в противен случай.


... Окончателения

  • swrlb:lessThanOrEqual (from swrlb:lessThan, swrlb:equal) Или по-малко( swrlb:lessThan), или равно(swrlb:equal).

  • swrlb:greaterThan (from XQueryop:numeric-greater-than, op:compare, op:yearMonthDuration-greater-than, op:dayTimeDuration-greater-than, op:dateTime-greater-than, op:date-greater-than, op:time-greater-than) Подобно на swrlb:lessThan.

  • swrlb:greaterThanOrEqual (from swrlb:greaterThan, swrlb:equal) Подобно на swrlb:lessThanOrEqual.


7 2 math built ins
7 Окончателения .2. Math Built-Ins

Следните built-ins са определени за различни числови типове. За да е удовлетворена релацията, всички аргументи трябжа да са от един и същи числов тип, за който релацията е определена.

  • swrlb:add (from XQueryop:numeric-add)

    Удовлетворена, ако първият аргумент е еднакъв с аритметичната сума на втория аргумент с останалите агументи.

  • swrlb:subtract (from XQueryop:numeric-subtract) Удовлетворена, ако първият аргумент е еднакъв с аритметичната разлика на втория аргумент с останалите агументи.

  • swrlb:multiply (from XQueryop:numeric-multiply) Удовлетворена, ако първият аргумент е еднакъв с аритметичното умножение на втория аргумент с останалите агументи.

  • swrlb:divide (from XQueryop:numeric-divide) Удовлетворена, ако първият аргумент е еднакъв с аритметичното делене на втория аргумент с останалите агументи.


... Окончателения

  • swrlb:integerDivide (from XQueryop:numeric-integer-divide)

    Удовлетворена, ако първият аргумент e частно на 2-я аргумент с 3-я аргумент . Ако числителя не е точно разделен от делителя, тогава частното e xsd:integerс-та получена при игнориране на остатъка, който се получава при деленето(това е без закръгляне).

  • swrlb:mod (from XQueryop:numeric-mod) Удовлетворена, ако първият аргумент представя остатъка получен при деленето на 2-я аргумент (делимо) с 3-я аргумент (делител).Операциятаа MOD b за операнди които са xsd:integerили xsd:decimalили типове произлезли от тях извежда резултата като (a idiv b)*b+(a mod b) което е еквивалентно на аи големината на резултата e винаги по-малка от големината на b. Това тъждество е изпълнено дори при специфични операции, когато делимото e най-голямото отрицателно число от неговия тип и делителя е -1(остатъка е 0).От това правило следва, че знака на резултата е знака на делимото.

  • swrlb:pow

    Удовлетворена, ако първият аргумент e равен на 2-я аргумент повдигнат на степен 3-я аргумент.


... Окончателения

  • swrlb:unaryPlus (from XQueryop:numeric-unary-plus) Удовлетворена, ако първият аргумент е еднакъв с втория аргумент без промяна на знака.

  • swrlb:unaryMinus (from XQueryop:numeric-unary-minus) Удовлетворена, ако първият аргумент е еднакъв с втория аргумент с обърнат знак.

  • swrlb:abs (from XQueryfn:abs) Удовлетворена, ако първият аргумент е абсолютната с-т на втория аргумент.

  • swrlb:ceiling (from XQueryfn:ceiling)

    Удовлетворена, ако първият аргумент е аргумент е най-малкото цяло число, което е по-голямо или равно от втория аргумент.

  • swrlb:floor (from XQueryfn:floor) Удовлетворена, ако първият аргумент е най-голямото цяло число, което е по-малко или равно от втория аргумент.


... Окончателения

  • swrlb:round (from XQueryfn:round)

    Удовлетворена, ако първият аргумент е еднакъв с най-близкото цяло число до втроя аргумент.

  • swrlb:roundHalfToEven (from XQueryfn:round-half-to-even) Удовлетворена, ако първият аргумент е еднакъв с втория закръглен до дадена точност. Ако частта след десетичната запетая е точно половината, резултата е число, където последната значеща цифра е четна.

  • swrlb:sin Удовлетворена, ако първият аргумент е еднакъв с синуса в радиани на втрория аргумент.

  • swrlb:cos Удовлетворена, ако първият аргумент е еднакъв с косинуса в радиани на втрория аргумент.

  • swrlb:tan Удовлетворена, ако първият аргумент е еднакъв с тангенса в радиани на втрория аргумент.


7 3 built ins
7 Окончателения .3. Built-Ins за булеви стойности

  • swrlb:booleanNot (from XQuery fn:not)

    Удовлетворена, ако първият аргумент е истина и втория е лъжа, или обратното.


7 4 built ins
7 Окончателения .4. Built-Ins за стрингове

Следните built-ins са определени за стрингове.

  • swrlb:stringEqualIgnoreCase

    Удовлетворена, ако първият аргумент еднакъв с вторият(малки/главни букви се игнорират)

  • swrlb:stringConcat (from XQueryfn:concat) Удовлетворена, ако първият аргумент е равен на стринга получен от конкатенацията на 2-я аргумент с останалите.

  • swrlb:substring (from XQueryfn:substring) Удовлетворена, ако първият аргумент е равен на подстринга с незадължителна дължина 4-я аргумент, започвайки от отместването, което е 3-я аргумент в стринга, който е 2-я аргумент.

  • swrlb:stringLength (from XQueryfn:string-length) Удовлетворена, ако първият аргумент е равен на дължината на 2-я арг.


... Окончателения

  • swrlb:normalizeSpace (from XQueryfn:normalize-space)

    Удовлетворена, ако първият аргумент е равен на 2-я аргумент без whitespacе.

  • swrlb:upperCase (from XQueryfn:upper-case) Удовлетворена, ако първият аргумент е равен на upper-cased с-та на 2-я

  • swrlb:lowerCase (from XQueryfn:lower-case) Удовлетворена, ако първият аргумент е равен на lower-cased с-та на 2-я


... Окончателения

  • swrlb:translate (from XQueryfn:translate) Удовлетворена, ако първият аргумент е равен на 2-я аргумент, в който срещащите се занаци в 3-я арг. са заменен с знака на съответната позиция в стринга на 4-я арг.

  • swrlb:contains (from XQueryfn:contains) Удовлетворена, ако първият аргумент съдържа 2-я аргумент (case sensitive).

  • swrlb:containsIgnoreCase Удовлетворена, ако първият аргумент съдържа 2-я аргумент (case ignored).


... Окончателения

  • swrlb:startsWith (from XQueryfn:starts-with) Удовлетворена, ако първият аргумент започва с 2-я аргумент .

  • swrlb:endsWith (from XQueryfn:ends-with) Удовлетворена, ако първият аргумент завършва с 2-я аргумент .

  • swrlb:substringBefore (from XQueryfn:substring-before)

    Удовлетворена, ако първият аргумент е знаците от 2-я аргумент, които предхождат знаците от третия аргумент .

  • swrlb:substringAfter (from XQueryfn:substring-after) Удовлетворена, ако първият аргумент е знаците от 2-я аргумент, които следват след знаците от третия аргумент .


.. Окончателения

  • swrlb:matches (from XQueryfn:matches) Удовлетворена, ако първият аргумент, отговарея на регулярния израз, който е 2-я аргумент.

  • swrlb:replace (from XQueryfn:replace) Удовлетворена, ако първият аргумент е равен на с-та на 2-я аргумент, като е заменено всяко срещане на подстринг, който удовлетворява рег. Израз, който е 3-я аргумент с стринга, който е като 4-ти аргумент.

  • swrlb:tokenize (from XQueryfn:tokenize) Удовлетворена, ако първият аргумент е поредица от един или повече стрингове, които са подстрингове на 2-я аргумент, разделен на подстрингове, които отговарят на регулярния израз, който е 3-я арг.


7 5 built ins
7 Окончателения .5. Built-Ins за дата, време и времетраене

  • Следните built-ins са дефинирани за the XML Schema date, time, and duration datatypes.

  • swrlb:yearMonthDuration (from Xqueryxdt:yearMonthDuration) Удовлетворена, ако първият аргумент е xsd:durationрепрезентация съставена от година, който е 2-я аргумент и месец, който е 3-я аргумент.

  • swrlb:dayTimeDuration (from XQueryxdt:dayTimeDuration) Удовлетворена, ако първият аргумент е xsd:durationрепрезентация съставена от дните, които са 2-я аргумент, часовете, които са 3-я аргумент, минути-4 аргумент и секунди-5 аргумент.


... Окончателения

  • swrlb:dateTimeУдовлетворена, ако първият аргумент е xsd:dateTimeрепрезентацията съставена от годината, която е 2-я аргумент, месеца, който е 3-я аргумент, ден-4 аргумент, часовете-5 аргумент, минути-6 аргумент, секунди-7 аргумент и времева зона като 8 аргумент.

  • swrlb:date Удовлетворена, ако първият аргумент е xsd:date репрезентацията съставена от годината, която е 2-я аргумент, месеца, който е 3-я аргумент, ден-4 аргумент и часова зона като 5-ти аргумент

  • swrlb:time Удовлетворена, ако първият аргумент е xsd:timeрепрезентация съставена от часовете, които са 2-я аргумент, минутите, които са 3-я аргумент, секундите-4 аргумент и времева зона като 5-ти аргумент.


... Окончателения

  • swrlb:addYearMonthDurations (from XQueryop:add-yearMonthDurations) Удовлетворена, ако yearMonthDuration(1-ви арг.) е равен на аритметичната сума от yearMonthDuration(2-ри арг.) с останалите yearMonthDuration(останалите арг.).

  • swrlb:subtractYearMonthDurations (from XQueryop:subtract-yearMonthDurations) Удовлетворена, ако yearMonthDuration(1-ви арг.) е равен на аритметичната разлика от yearMonthDuration(2-ри арг.) с yearMonthDuration(3-ти арг.).

  • swrlb:multiplyYearMonthDuration (from XQueryop:multiply-yearMonthDuration) Удовлетворена, ако yearMonthDuration(1-ви арг.) е равен на аритметичното произведение от yearMonthDuration(2-ри арг.) с yearMonthDuration(3-ти арг.).

  • swrlb:divideYearMonthDurations (from XQueryop:divide-yearMonthDuration) Удовлетворена, ако yearMonthDuration(1-ви арг.) е равен на аритметичното частно от yearMonthDuration(2-ри арг.) с yearMonthDuration(3-ти арг.).


... Окончателения

  • swrlb:addDayTimeDurations (from XQueryop:add-dayTimeDurations) Удовлетворена, ако dayTimeDuration(1-ви арг.) е равен на аритметичната сума от dayTimeDuration(2-ри арг.) с останалите dayTimeDuration(останалите арг.).

  • swrlb:subtractDayTimeDurations (from XQueryop:subtract-dayTimeDurations) Удовлетворена, ако dayTimeDuration(1-ви арг.) е равен на аритметичната разлика от dayTimeDuration(2-ри арг.) с dayTimeDuration Duration (3-ти арг.).

  • swrlb:multiplyDayTimeDurations (from XQueryop:multiply-dayTimeDuration) Удовлетворена, ако dayTimeDuration(1-ви арг.) е равен на аритметичното произведение от dayTimeDuration(2-ри арг.) с dayTimeDuration Duration (3-ти арг.).

  • swrlb:divideDayTimeDuration (from XQueryop:divide-dayTimeDuration) Удовлетворена, ако dayTimeDuration(1-ви арг.) е равен на аритметичното частно от dayTimeDuration(2-ри арг.) с dayTimeDuration Duration (3-ти арг.).


... Окончателения

  • swrlb:subtractDates (from XQuery op:subtract-dates) Удовлетворена, ако dayTimeDuration (1-ви арг.) е равен на аритметичната разлика от xsd:date (2-ри арг.) с xsd:date(3-ти арг.).

  • swrlb:subtractTimes (from XQuery op:subtract-times) Удовлетворена, ако dayTimeDuration (1-ви арг.) е равен на аритметичната разлика от xsd:time (2-ри арг.) с xsd:time (3-ти арг.).


... Окончателения

  • swrlb:addYearMonthDurationToDateTime (from XQueryop:add-yearMonthDuration-to-dateTime) Удовлетворена, ако xsd:dateTime(1-ви аргумент) е равен на аритметичната сума на xsd:dateTime(2-рия аргумент) и yearMonthDuration(3-я арг.)

  • swrlb:addDayTimeDurationToDateTime (from XQueryop:add-dayTimeDuration-to-dateTime)

    Удовлетворена, ако xsd:dateTime(1-ви аргумент) е равен на аритметичната сума на xsd:dateTime(2-рия аргумент) и dayTimeDuration(3-я арг.)

  • swrlb:subtractYearMonthDurationFromDateTime (from XQueryop:subtract-yearMonthDuration-from-dateTime) Удовлетворена, ако xsd:dateTime(1-ви аргумент) е равен на аритметичната разлика на xsd:dateTime(2-рия аргумент) и yearMonthDuration(3-я арг.)

  • swrlb:subtractDayTimeDurationFromDateTime (from XQueryop:subtract-dayTimeDuration-from-dateTime) Удовлетворена, ако xsd:dateTime(1-ви аргумент) е равен на аритметичната разлика на xsd:dateTime(2-рия аргумент) и dayTimeDuration(3-я арг.)


... Окончателения

  • swrlb:addYearMonthDurationToDate (from XQueryop:add-yearMonthDuration-to-date) Удовлетворена, ако xsd:date(1-ви аргумент) е равен на аритметичната сума на xsd:date(2-рия аргумент) и yearMonthDuration(3-я арг.)

  • swrlb:addDayTimeDurationToDate (from XQueryop:add-dayTimeDuration-to-date) Удовлетворена, ако xsd:date(1-ви аргумент) е равен на аритметичната сума на xsd:date(2-рия аргумент) и dayTimeDuration(3-я арг.)

  • swrlb:subtractYearMonthDurationFromDate (from XQueryop:subtract-yearMonthDuration-from-date) Удовлетворена, ако xsd:date(1-ви аргумент) е равен на аритметичната разлика на xsd:date(2-рия аргумент) и yearMonthDuration(3-я арг.)

  • swrlb:subtractDayTimeDurationFromDate (from XQueryop:subtract-dayTimeDuration-from-date) Удовлетворена, ако xsd:date(1-ви аргумент) е равен на аритметичната разлика на xsd:date(2-рия аргумент) и dayTimeDuration(3-я арг.)


... Окончателения

  • swrlb:addDayTimeDurationToTime (from XQueryop:add-dayTimeDuration-to-time) Удовлетворена, ако xsd:time(1-ви аргумент) е равен на аритметичната сума на xsd:time(2-рия аргумент) и dayTimeDuration(3-я арг.)

  • swrlb:subtractDayTimeDurationFromTime (from XQueryop:subtract-dayTimeDuration-from-time) Удовлетворена, ако xsd:time(1-ви аргумент) е равен на аритметичната разлика на xsd:time(2-рия аргумент) и dayTimeDuration(3-я арг.)

  • swrlb:subtractDateTimesYieldingYearMonthDuration (from XQueryfn:subtract-dateTimes-yielding-yearMonthDuration) Удовлетворена, ако yearMonthDuration(1-ви аргумент) е равен на аритметичната разлика на xsd:dateTime(2-рия аргумент) и xsd:dateTime(3-я арг.)

  • swrlb:subtractDateTimesYieldingDayTimeDuration (from XQueryfn:subtract-dateTimes-yielding-dayTimeDuration) Удовлетворена, ако dayTimeDuration(1-ви аргумент) е равен на аритметичната разлика на xsd:dateTime(2-рия аргумент) и xsd:dateTime(3-я арг.)


7 6 built ins for uris
7 Окончателения .6. Built-Ins for URIs

Следните built-ins са определени за XML Schema типовете данни отнасящи се до URIs.

  • swrlb:resolveURI (from XQueryop:resolve-uri) Удовлетворена, ако URI рефернцията(1-я арг.) е равна на стойността на URI рефернцията(2-я арг.) решена спрямо базовата URI(3-я арг.).

  • swrlb:anyURI Удовлетворена, ако URI рефернцията(1-я арг.) се състои от схемата, коята е като втори аргумент, хоста, като 3-тия, порта като 4-тия, пътя като 5-я, query като 6-я и фрагмент като 7-я.


7 7 built ins for lists
7 Окончателения .7. Built-Ins for Lists

Следните built-ins са дефинирани за RDF-style списъци. (Имайте впредвид, че тези built-ins не са използваеми в OWL DL или OWL Liteкато RDF-style списъци могатсамо да бъдат използвани като OWL data в OWL Full.)

  • swrlb:listConcat (from Common Lisp append) Удовлетворена, ако 1-я аргумент е списък, който представлява конкатенация на 2-я аргумент с останалите.

  • swrlb:listIntersection Удовлетворена, ако 1-я аргумент е списък съдържащ елементи съдържащи се и в списъка, който е 2-я аргумент и в списъка, който е 3-я арг.

  • swrlb:listSubtraction Удовлетворена, ако 1-я аргумент е списък съдържащ елементи съдържащи се в списъка, който е 2-я аргумент и не се съдържат в списъка, който е 3-я арг.


... Окончателения

  • swrlb:member Удовлетворена, ако 1-я аргумент е член от списъка, който е като 2-ри арг.

  • swrlb:length (from Common Lisp list-length) Удовлетворена, ако 1-я аргумент е дължината на списъка, който е като 2-ри арг.(броя на членовете на списъка)

  • swrlb:first (from rdf:first) Удовлетворена, ако 1-я аргумент е първия член на списъка, който е като 2-ри арг.


... Окончателения

  • swrlb:rest (from rdf:rest) Удовлетворена, ако 1-я аргумент е списък, съдържащ всички елементи на списъка, който е като 2-ри арг. с изключение на последния.

  • swrlb:sublist Удовлетворена, ако 1-я аргумент съдържа списъка, който е като 2-ри арг.

  • swrlb:empty (from rdf:nil) Удовлетворена, ако 1-я аргумент е празен списък.


ad