قالب تبادل قوانین (RIF)
قالب تبادل قوانین (Rule Interchange Format - RIF) یک توصیهنامه (Recommendation) از سوی کنسرسیوم وب جهانگستر (W3C) است. RIF بخشی از زیرساخت وب معنایی محسوب میشود و در کنار فناوریهایی مانند SPARQL، RDF و OWL قرار میگیرد. اگرچه در ابتدا بسیاری RIF را به عنوان «لایه قوانین» برای وب معنایی تصور میکردند، اما در عمل، طراحی آن بر این مشاهده استوار است که زبانهای قوانین متعددی در حال حاضر وجود دارند و نیاز اصلی، امکان تبادل قوانین بین این سیستمهاست.
RIF شامل سه گویش (Dialect) است: یک گویش هسته (Core) که به گویش منطق پایه (Basic Logic Dialect - BLD) و گویش قوانین تولید (Production Rule Dialect - PRD) گسترش مییابد.
تاریخچه
گروه کاری RIF در اواخر سال ۲۰۰۵ تشکیل شد. یکی از اهداف اصلی آن، جذب اعضا از بازار تجاری سیستمهای قوانین بود. این گروه کاری با بیش از ۵۰ عضو و دو رئیس از صنعت، Christian de Sainte Marie از ILOG و Chris Welty از IBM آغاز به کار کرد. اساسنامه این گروه، با هدف توسعه قالبی برای تبادل بین سیستمهای قوانین موجود، تحت تأثیر کارگاه آموزشی در بهار ۲۰۰۵ شکل گرفت. در آن کارگاه مشخص شد که یک زبان واحد نمیتواند نیازهای همه طرفهای علاقهمند را برآورده کند (دکتر ولتی نتیجه کارگاه را «تعادل نش» توصیف کرد).
RIF در تاریخ ۲۲ ژوئن ۲۰۱۰ به یک توصیهنامه W3C تبدیل شد.
قوانین و سیستمهای قانون
یک قانون، شاید یکی از سادهترین مفاهیم در علوم کامپیوتر باشد: ساختار اگر - آنگاه (IF - THEN). اگر شرطی (بخش IF) که در مجموعهای از دادهها قابل بررسی است برقرار باشد، آنگاه نتیجه (بخش THEN) پردازش میشود. سیستمهای قانون که ریشه در منطق دارند، از مفهوم گزارهنما (Predicate) استفاده میکنند که برای یک یا چند شیء دادهای صادق یا کاذب است. برای مثال، این واقعیت که دو نفر ازدواج کردهاند، میتواند با گزارهنما به صورت زیر نمایش داده شود:
MARRIED(LISA, JOHN)
در اینجا، MARRIED گزارهنمایی است که بین LISA و JOHN صادق است. با افزودن مفهوم متغیرها، یک قانون میتواند شبیه به این باشد:
IF MARRIED(?x, ?y) THEN LOVES(?x, ?y)
انتظار میرود که برای هر جفت از ?x و ?y (مانند LISA و JOHN) که گزارهنمای MARRIED برای آنها صادق است، سیستمی که این قانون را درک میکند، نتیجه بگیرد که گزارهنمای LOVES نیز برای آن جفت صادق است.
قوانین راهی ساده برای کدگذاری دانش هستند و سادهسازی قابل توجهی از منطق مرتبه اول به شمار میروند. پردازش این قوانین و استنتاج نتایج صحیح، برای موتورهای استنتاج نسبتاً آسان است. یک سیستم قانون، پیادهسازی یک نحو و معناشناسی خاص برای قوانین است که میتواند مفهوم ساده فوق را با افزودن مفاهیمی چون کمیتسنج وجودی، فصل منطقی، عطف منطقی، نفی، توابع، نا-مونوتونی بودن و بسیاری ویژگیهای دیگر، گسترش دهد. سیستمهای قانون از اواسط دهه ۱۹۷۰ پیادهسازی و مطالعه شدهاند و در دهه ۱۹۸۰، در اوج دوران سیستمهای خبره، پذیرش قابل توجهی یافتند.
گویشهای استاندارد RIF
گویشهای استاندارد RIF شامل Core، BLD و PRD هستند. این گویشها به مجموعهای گسترده از انواع دادهها (Datatypes) با توابع و گزارهنماهای داخلی (Built-ins) متکی هستند.
رابطه بین گویشهای مختلف RIF در نمودار ون زیر نشان داده شده است.
انواع داده و داخلیها (DTB)
Datatypes and Built-Ins (DTB) لیستی از انواع دادهها، توابع داخلی و گزارهنماهای داخلی مورد انتظار برای پشتیبانی توسط گویشهای RIF را مشخص میکند. برخی از این انواع دادهها از انواع دادههای XML Schema، توابع XPath و توابع rdf:PlainLiteral اقتباس شدهاند.
Core
گویش Core شامل زیرمجموعهای مشترک از اکثر گویشهای قانون است. RIF-Core زیرمجموعهای از هر دو گویش RIF-BLD و RIF-PRD است.
Framework for Logic Dialects (FLD)
FLD مکانیزمهایی را برای مشخص کردن نحو و معناشناسی گویشهای منطقی RIF، از جمله RIF-BLD و RIF-Core، توصیف میکند، اما شامل RIF-PRD نمیشود زیرا RIF-PRD یک گویش مبتنی بر منطق نیست.
BLD (گویش منطق پایه)
گویش منطق پایه (BLD) ویژگیهایی را به گویش Core اضافه میکند که مستقیماً در دسترس نیستند، مانند: توابع منطقی، برابری در بخش then و آرگومانهای نامگذاری شده. RIF BLD با datalogهای مثبت مطابقت دارد، یعنی برنامههای منطقی بدون توابع یا نفی.
RIF-BLD دارای معناشناسی مدل-تئوریک (model-theoretic semantics) است.
نحو چارچوب (frame syntax) RIF BLD بر اساس F-logic است، اما RIF BLD ویژگیهای استنتاج نا-مونوتونی F-logic را ندارد.
PRD (گویش قوانین تولید)
گویش قوانین تولید (PRD) میتواند برای مدلسازی قوانین تولید استفاده شود. ویژگیهایی که به طور قابل توجهی در PRD وجود دارند اما در BLD نیستند، شامل نفی و پسگیری حقایق (retraction) است (بنابراین، PRD مونوتون نیست). قوانین PRD وابسته به ترتیب هستند، در نتیجه هنگامیکه چندین قانون میتوانند فعال شوند، به استراتژیهای حل تعارض نیاز است. مشخصات PRD یکی از این استراتژیهای حل تعارض را بر اساس استنتاج زنجیره رو به جلو (forward chaining) تعریف میکند.
RIF-PRD دارای معناشناسی عملیاتی (operational semantics) است، در حالی که فرمولهای شرطی نیز دارای معناشناسی مدل-تئوریک هستند.
مثال (مثال ۱.۲ در):
Prefix(ex <http://example.com/2008/prd1#>) (* ex:rule_1 *) Forall ?customer ?purchasesYTD ( If And( ?customer#ex:Customer ?customer[ex:purchasesYTD->?purchasesYTD] External(pred:numeric-greater-than(?purchasesYTD 5000)) ) Then Do( Modify(?customer[ex:status-"Gold"]) ) )
گویشهای غیر استاندارد RIF
چندین گویش دیگر RIF وجود دارند. هیچکدام از آنها رسماً توسط W3C تأیید نشدهاند و بخشی از مشخصات RIF نیستند.
CASPD (گویش هسته برنامهنویسی مجموعه پاسخ)
Core Answer Set Programming Dialect (CASPD) بر اساس برنامهنویسی مجموعه پاسخ (answer set programming) استوار است، یعنی برنامهنویسی منطقی اعلانی مبتنی بر معناشناسی مجموعه پاسخ (stable model semantics).
Example:
Document(
Prefix(ex <http://example.com/concepts#>)
Group (
Forall ?S (
ex:afraid(?S ex:Math) :- And ( ?S#ex:Student (Naf Neg ex:afraid(?S ex:Math)) )
)
Forall ?S (
Neg ex:afraid(?S ex:Math) :- And ( ?S#ex:Student ?S[ex:majors -> ex:Math] )
)
)
)
URD (گویش قوانین عدم قطعیت)
Uncertainty Rule Dialect (URD) از نمایش مستقیم دانش نامطمئن پشتیبانی میکند.
Example:
Document(
Import (<http://example.org/fuzzy/membershipfunction >)
Group
(
Forall ?x ?y(
cheapFlight(?x ?y) :- affordableFlight(?x ?y)
) / 0.4
Forall ?x ?y(affordableFlight(?x ?y)) / left_shoulder0k4k1k3k(?y)
) )
)
SILK
RIF-SILK را میتوان برای مدلسازی منطق پیشفرض (default logic) استفاده کرد. این گویش بر اساس برنامهنویسی منطقی اعلانی با معناشناسی خوشتعریف (well-founded semantics) بنا شده است. RIF-SILK همچنین شامل تعدادی از ویژگیهای دیگر موجود در زبانهای برنامهنویسی منطقی اعلانی پیشرفتهتر مانند SILK است.
Example
Document {
Prefix(foaf http://xmlns.com/foaf/0.1/)
Prefix(pub http://example.org/pub#)
Prefix(silk http://TBD/silk#)
Group {
(* r1 *) Forall ?a1 ?a2 ?paper
(?a1[foaf:knows->?a2]
:- ?paper # pub:Publication[pub:author->?a1,
pub:author->?a2}])
(* r2 *) Forall ?a1 ?a2
(neg ?a1[foaf:knows->?a2]
:- ?a1[hasNeverMet->?a2])
silk:overrides(r2, r1)
}
}
جستارهای وابسته
- همترازی هستیشناختی (Ontology alignment)
- R2ML
- نمایش قوانین تولید (Production Rule Representation) - قابل مقایسه با گویشی از RIF به نام Production Rule Dialect، اگرچه هدف آن مدلسازی است نه تبادل در زمان اجرا.
منابع
پیوندهای بیرونی
- گروه کاری RIF (RIF Working Group)
- پرسشهای متداول RIF (RIF FAQ)