600 likes | 797 Views
SWRL : A Semantic Web Rule Language. Комбинация от OWL и RuleML http://www.w3.org/Submission/SWRL/ Разработили: Диян Детелинов Пенко в М22804 Надежда Георгиева Танева М22694. 1.Въведение.
E N D
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 Алтернативна формулировка на правилото от оредния пример, може да бъде да проверим, че ако 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 Следното правило описва факта, че знаейки 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 синтаксис В този раздел ще представим окончателния RDF синтаксис за правилата. RDF схемата за SWRL е swrl.rdf. OWL ontology за SWRL е swrl.owl. Всяко от тях предоставя само частично описание на синтаксиса за SWRL. OWL онологията е по-пълна от RDF схемата. Преминаването от окончателния XML синтаксис към RDF/XML е постигнато чрез разширяване на XSLT трансформациятаза OWL XML Presentation синтакиса.
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="⪚hasParent"/> <swrl:argument1 rdf:resource="#x1" /> <swrl:argument2 rdf:resource="#x2" /> </swrl:IndividualPropertyAtom> <swrl:IndividualPropertyAtom> <swrl:propertyPredicaterdf:resource="⪚hasSibling"/> <swrl:argument1 rdf:resource="#x2" /> <swrl:argument2 rdf:resource="#x3" /> </swrl:IndividualPropertyAtom> <swrl:IndividualPropertyAtom> <swrl:propertyPredicaterdf:resource="⪚hasSex"/> <swrl:argument1 rdf:resource="#x3" /> <swrl:argument2 rdf:resource="#male" /> </swrl:IndividualPropertyAtom> </ruleml:body> <ruleml:headrdf:parseType="Collection"> <swrl:IndividualPropertyAtom> <swrl:propertyPredicaterdf:resource="⪚hasUncle"/> <swrl:argument1 rdf:resource="#x1" /> <swrl:argument2 rdf:resource="#x3" /> </swrl:IndividualPropertyAtom> </ruleml:head> </ruleml:Imp>
Пример 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 Множеството от 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 за сравнения • 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 Следните 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 за булеви стойности • swrlb:booleanNot (from XQuery fn:not) Удовлетворена, ако първият аргумент е истина и втория е лъжа, или обратното.
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 за дата, време и времетраене • Следните 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-ти арг.).