index.html 105 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301
<?xml version="1.0" encoding="UTF-8"?><!--*- nxml -*-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <title>RIF Use Cases and Requirements</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <style type="text/css">
   .editsection { display: none; }
</style>
<link rel="stylesheet" type="text/css" href="tr.css" />
<link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-WD" />

  
<script type="text/javascript">/*<![CDATA[*/
/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
	Author says "The credit comment is all it takes, no license. Go crazy with it!:-)"
	From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
*/

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (! (! (strTagName == "*") || ! (oElm.all)))? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; !(i>=oClassNames.length); i++){ /*>*/
			arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames[i].replace(/\-/g, "\-") + "(\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\s)" + oClassNames.replace(/\-/g, "\-") + "(\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; !(j>=arrElements.length); j++){ /*>*/
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; !(k>=arrRegExpClassNames.length); k++){ /*>*/
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function set_display_by_class(el, cls, newValue) {
   var e = getElementsByClassName(document, el, cls);
   if (e != null) {
      for (var i=0; !(i>=e.length); i++) {
        e[i].style.display = newValue;
      }
   }
}

function set_display_by_id(id, newValue) {
   var e = document.getElementById(id);
   if (e != null) {
     e.style.display = newValue;
   }
}
/*]]>*/
</script>

        
        
</head>
<body>

<div class="head">
<a href="http://www.w3.org/"><img alt="W3C" height="48"
src="http://www.w3.org/Icons/w3c_home" width="72"/></a><h1 style="clear:both" id="title"><br />RIF Use Cases and Requirements</h1>

<h2 id="W3C-doctype">W3C Working Draft 18 December 2008</h2>


<dl>
<dt>This version:</dt>
<dd><a id="this-version-url" href="http://www.w3.org/TR/2008/WD-rif-ucr-20081218/">http://www.w3.org/TR/2008/WD-rif-ucr-20081218/</a></dd>
<dt>Latest version:</dt>
<dd><a href="http://www.w3.org/TR/rif-ucr/">http://www.w3.org/TR/rif-ucr/</a></dd>

<dt>Previous version:</dt>
<dd><a href="http://www.w3.org/TR/2008/WD-rif-ucr-20080730/">http://www.w3.org/TR/2008/WD-rif-ucr-20080730/</a></dd>
</dl>

<dl><dt>Editors:</dt><dd>Adrian Paschke, Free University Berlin</dd>
<dd>David Hirtle, National Research Council Canada</dd>
<dd>Allen Ginsberg, Mitre</dd>
<dd>Paula-Lavinia Patranjan, REWERSE</dd>
<dd>Frank McCabe, Fujitsu</dd>
</dl>

<p>This document is also available in these non-normative formats: <a href="all.pdf">PDF version</a>.</p>

<hr />

<p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> &copy; 2008 <a href="http://www.w3.org/"><acronym title="World Wide Web Consortium">W3C</acronym></a><sup>&reg;</sup> (<a href="http://www.csail.mit.edu/"><acronym title="Massachusetts Institute of Technology">MIT</acronym></a>, <a href="http://www.ercim.org/"><acronym title="European Research Consortium for Informatics and Mathematics">ERCIM</acronym></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="http://www.w3.org/Consortium/Legal/copyright-documents">document use</a> rules apply.</p>

</div>
<hr/>
<h2><a id="abstract" name="abstract">Abstract</a></h2>

<div>
<p/> <p/> <p/> <p>This document, developed by the <a class="external text" href="http://www.w3.org/2005/rules/wg" title="http://www.w3.org/2005/rules/wg">Rule Interchange Format (RIF) Working Group</a>, specifies use cases and requirements for the W3C Rule Interchange Format, a family of rule interchange dialects that allows rules to be translated between rule languages and thus transferred between rule systems. </p> 
</div>

<h2 class="no-toc no-num">
<a id="status" name="status">Status of this Document</a>
</h2>
    
<h4 class="no-toc no-num" id="may-be">May Be Superseded</h4>
    
<p><em>This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the <a href="http://www.w3.org/TR/">W3C technical reports index</a> at http://www.w3.org/TR/.</em></p>
    

<h4 class="no-toc no-num" id="related">Set of Documents</h4>

<p>This document is being published as one of a set of 5 documents: </p>
<ol>
<li><a href="http://www.w3.org/TR/2008/WD-rif-ucr-20081218/">RIF Use Cases and Requirements</a> (this document)</li>
<li><a href="http://www.w3.org/TR/2008/WD-rif-core-20081218/">RIF Core</a> </li>
<li><a href="http://www.w3.org/TR/2008/WD-rif-dtb-20081218/">RIF Datatypes and Built-Ins 1.0</a> </li>
<li><a href="http://www.w3.org/TR/2008/WD-rif-prd-20081218/">RIF Production
Rule Dialect</a> </li>
<li><a href="http://www.w3.org/TR/2008/WD-rif-test-20081218/">RIF Test
Cases</a> </li>
</ol>

    



<h4 class="no-toc no-num" id="status-changes">Summary of Changes</h4><p>The changes are relatively localized, and are visible in the <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-ucr-20081218/diff-since-20080730" title="http://www.w3.org/TR/2008/WD-rif-ucr-20081218/diff-since-20080730">color-coded "diff"</a>.</p>


        <h4 class="no-toc no-num" id="please">Please Comment By 23 January 2009</h4>

    <p>The <a class="http" href="http://www.w3.org/2005/rules/wg.html"
    >Rule Interchange Format (RIF) Working Group</a> seeks
    public feedback on these Working Drafts.  Please send your
    comments to <a class="mailto"
    href="mailto:public-rif-comments@w3.org"
    shape="rect">public-rif-comments@w3.org</a> (<a class="http"
    href="http://lists.w3.org/Archives/Public/public-rif-comments/"
    shape="rect">public archive</a>).  If possible, please offer
    specific changes to the text that would address your
    concern.  You may also wish to check the <a
    href="http://www.w3.org/2005/rules/wiki/UCR">Wiki
    Version</a> of this document for internal-review comments and changes being
    drafted which may address your concerns. </p>
    
<h4 class="no-toc no-num" id="no-endorsement">No Endorsement</h4>
    
<p><em>Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.</em></p>
    
<h4 class="no-toc no-num" id="patents">Patents</h4>
    
<p><em>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February 2004 W3C Patent Policy</a>. W3C maintains a <a rel="disclosure" href="http://www.w3.org/2004/01/pp-impl/38457/status">public list of any patent disclosures</a> made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential Claim(s)</a> must disclose the information in accordance with <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure"> section 6 of the W3C Patent Policy</a>.</em></p>

<hr title="Separator After Status Section" />


<p>
<script type="text/javascript">/*<![CDATA[*/
/*
	Written by Jonathan Snook, http://www.snook.ca/jonathan
	Add-ons by Robert Nyman, http://www.robertnyman.com
	Author says "The credit comment is all it takes, no license. Go crazy with it!:-)"
	From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
*/

var displayed = [];
displayed["bld"] = 1;
displayed["prd"] = 1;


function display(syntax,status) {
  var howmany = 0;
  if (status=='none') {
    displayed[syntax] = 0; 
  } else { 
    displayed[syntax] = 1;
  }
  for ( i in displayed ) {
       howmany = howmany + displayed[i];
  }
  set_display_by_class('p',syntax,status);
  if ( howmany == 1 ) {
      set_display_by_class('b','syntax-head','none');
  } else {
      set_display_by_class('b','syntax-head','');
  }
}

function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (! (! (strTagName == "*") || ! (oElm.all)))? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; !(i>=oClassNames.length); i++){ /*>*/
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; !(j>=arrElements.length); j++){ /*>*/
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; !(k>=arrRegExpClassNames.length); k++){ /*>*/
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

function set_display_by_class(el, cls, newValue) {
   var e = getElementsByClassName(document, el, cls);
   if (e != null) {
      for (var i=0; !(i>=e.length); i++) {
        e[i].style.display = newValue;
      }
   }
}

function set_display_by_id(id, newValue) {
   var e = document.getElementById(id);
   if (e != null) {
     e.style.display = newValue;
   }
}
/*]]>*/
</script>


</p><p><br/>
</p>
<div>   
<table class="toc" id="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="#Introduction"><span class="tocnumber">1</span> <span class="toctext">Introduction</span></a></li>
<li class="toclevel-1"><a href="#Goals"><span class="tocnumber">2</span> <span class="toctext">Goals</span></a>
<ul>
<li class="toclevel-2"><a href="#Exchange_of_Rules"><span class="tocnumber">2.1</span> <span class="toctext">Exchange of Rules</span></a></li>
<li class="toclevel-2"><a href="#Consistency_with_W3C_specifications"><span class="tocnumber">2.2</span> <span class="toctext">Consistency with W3C specifications</span></a></li>
<li class="toclevel-2"><a href="#Widescale_Adoption"><span class="tocnumber">2.3</span> <span class="toctext">Widescale Adoption</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="#Structure_of_RIF"><span class="tocnumber">3</span> <span class="toctext">Structure of RIF</span></a></li>
<li class="toclevel-1"><a href="#Use_Cases"><span class="tocnumber">4</span> <span class="toctext">Use Cases</span></a>
<ul>
<li class="toclevel-2"><a href="#Negotiating_eBusiness_Contracts_Across_Rule_Platforms"><span class="tocnumber">4.1</span> <span class="toctext">Negotiating eBusiness Contracts Across Rule Platforms</span></a></li>
<li class="toclevel-2"><a href="#Negotiating_eCommerce_Transactions_Through_Disclosure_of_Buyer_and_Seller_Policies_and_Preferences"><span class="tocnumber">4.2</span> <span class="toctext">Negotiating eCommerce Transactions Through Disclosure of Buyer and Seller Policies and Preferences</span></a></li>
<li class="toclevel-2"><a href="#Collaborative_Policy_Development_for_Dynamic_Spectrum_Access"><span class="tocnumber">4.3</span> <span class="toctext">Collaborative Policy Development for Dynamic Spectrum Access</span></a></li>
<li class="toclevel-2"><a href="#Access_to_Business_Rules_of_Supply_Chain_Partners"><span class="tocnumber">4.4</span> <span class="toctext">Access to Business Rules of Supply Chain Partners</span></a></li>
<li class="toclevel-2"><a href="#Managing_Inter-Organizational_Business_Policies_and_Practices"><span class="tocnumber">4.5</span> <span class="toctext">Managing Inter-Organizational Business Policies and Practices</span></a></li>
<li class="toclevel-2"><a href="#Ruleset_Integration_for_Medical_Decision_Support"><span class="tocnumber">4.6</span> <span class="toctext">Ruleset Integration for Medical Decision Support</span></a></li>
<li class="toclevel-2"><a href="#Interchanging_Rule_Extensions_to_OWL"><span class="tocnumber">4.7</span> <span class="toctext">Interchanging Rule Extensions to OWL</span></a></li>
<li class="toclevel-2"><a href="#Vocabulary_Mapping_for_Data_Integration"><span class="tocnumber">4.8</span> <span class="toctext">Vocabulary Mapping for Data Integration</span></a></li>
<li class="toclevel-2"><a href="#BPEL_Orchestration_of_Rule-Based_Web_Services"><span class="tocnumber">4.9</span> <span class="toctext">BPEL Orchestration of Rule-Based Web Services</span></a></li>
<li class="toclevel-2"><a href="#Publishing_Rules_for_Interlinked_Metadata"><span class="tocnumber">4.10</span> <span class="toctext">Publishing Rules for Interlinked Metadata</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="#Requirements"><span class="tocnumber">5</span> <span class="toctext">Requirements</span></a>
<ul>
<li class="toclevel-2"><a href="#General"><span class="tocnumber">5.1</span> <span class="toctext">General</span></a>
<ul>
<li class="toclevel-3"><a href="#Implementability"><span class="tocnumber">5.1.1</span> <span class="toctext">Implementability</span></a></li>
<li class="toclevel-3"><a href="#Semantic_precision"><span class="tocnumber">5.1.2</span> <span class="toctext">Semantic precision</span></a></li>
<li class="toclevel-3"><a href="#Extensible_Format"><span class="tocnumber">5.1.3</span> <span class="toctext">Extensible Format</span></a></li>
<li class="toclevel-3"><a href="#Translators"><span class="tocnumber">5.1.4</span> <span class="toctext">Translators</span></a></li>
<li class="toclevel-3"><a href="#Standard_components"><span class="tocnumber">5.1.5</span> <span class="toctext">Standard components</span></a></li>
<li class="toclevel-3"><a href="#Rule_language_coverage"><span class="tocnumber">5.1.6</span> <span class="toctext">Rule language coverage</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="#Basic_Requirements"><span class="tocnumber">5.2</span> <span class="toctext">Basic Requirements</span></a>
<ul>
<li class="toclevel-3"><a href="#Compliance_model"><span class="tocnumber">5.2.1</span> <span class="toctext">Compliance model</span></a></li>
<li class="toclevel-3"><a href="#Default_behavior"><span class="tocnumber">5.2.2</span> <span class="toctext">Default behavior</span></a></li>
<li class="toclevel-3"><a href="#Different_semantics"><span class="tocnumber">5.2.3</span> <span class="toctext">Different semantics</span></a></li>
<li class="toclevel-3"><a href="#Limited_number_of_dialects"><span class="tocnumber">5.2.4</span> <span class="toctext">Limited number of dialects</span></a></li>
<li class="toclevel-3"><a href="#Embedded_comments"><span class="tocnumber">5.2.5</span> <span class="toctext">Embedded comments</span></a></li>
<li class="toclevel-3"><a href="#Embedded_metadata"><span class="tocnumber">5.2.6</span> <span class="toctext">Embedded metadata</span></a></li>
<li class="toclevel-3"><a href="#OWL_data"><span class="tocnumber">5.2.7</span> <span class="toctext">OWL data</span></a></li>
<li class="toclevel-3"><a href="#RDF_data"><span class="tocnumber">5.2.8</span> <span class="toctext">RDF data</span></a></li>
<li class="toclevel-3"><a href="#Dialect_Identification"><span class="tocnumber">5.2.9</span> <span class="toctext">Dialect Identification</span></a></li>
<li class="toclevel-3"><a href="#XML_syntax"><span class="tocnumber">5.2.10</span> <span class="toctext">XML syntax</span></a></li>
<li class="toclevel-3"><a href="#XML_types"><span class="tocnumber">5.2.11</span> <span class="toctext">XML types</span></a></li>
<li class="toclevel-3"><a href="#Merge_Rule_Sets"><span class="tocnumber">5.2.12</span> <span class="toctext">Merge Rule Sets</span></a></li>
<li class="toclevel-3"><a href="#Identify_Rule_Sets"><span class="tocnumber">5.2.13</span> <span class="toctext">Identify Rule Sets</span></a></li>
<li class="toclevel-3"><a href="#XML_data"><span class="tocnumber">5.2.14</span> <span class="toctext">XML data</span></a></li>
<li class="toclevel-3"><a href="#Internationalized_text"><span class="tocnumber">5.2.15</span> <span class="toctext">Internationalized text</span></a></li>
</ul>
</li>
</ul>
</li>
<li class="toclevel-1"><a href="#Conclusion"><span class="tocnumber">6</span> <span class="toctext">Conclusion</span></a></li>
<li class="toclevel-1"><a href="#References"><span class="tocnumber">7</span> <span class="toctext">References</span></a></li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="Introduction"/><h2> <span class="mw-headline">1  Introduction </span></h2>
<div><div dir="ltr" lang="en"> 
<p>Rule-languages and rule-based systems have played seminal roles in the history of computer science and the evolution of information technology. From expert systems to deductive databases, the theory and practice of automating inference based on symbolic representations has had a rich history and continues to be a key technology driver. 
</p><p>Due to the innovations made possible by the Internet, the World Wide Web, and, most recently, the Semantic Web, there is now even greater opportunity for growth in this sector. While some of these opportunities may require advances in research, others can be addressed by enabling existing rule-based technologies to interoperate according to standards-based methodologies and processes. The basic goal of the Rule Interchange Format (RIF) Working Group is to devise such standards and make sure that they are not only useful in the current environment, but are easily extensible in order to deal with the evolution of rule technology and other enabling technologies. This mission of RIF is part of W3C's larger goal of enabling the sharing of information in forms suited to machine processing: 
</p>
<ul><li><ol><li> Rules themselves represent a valuable form of information for which there is not yet a standard interchange format, although significant progress has been made within the <a class="external text" href="http://www.ruleml.org/" title="http://www.ruleml.org/">RuleML Initiative</a> and elsewhere. 
</li><li> Rules provide a powerful business logic representation, as business rules, in many modern information systems. 
</li><li> Rules are often the technology of choice for creating maintainable adapters between information systems. 
</li><li> As part of the Semantic Web architecture, rules can extend or complement the OWL Web Ontology Language to more thoroughly cover a broader set of applications, with knowledge being encoded in OWL or rules or both. 
</li></ol>
</li></ul>
<p>The purpose of this RIF-UCR document is to provide a reference to the design of RIF and a guide for users and implementers to the current technical specifications of RIF dialects. RIF-UCR also delivers a structured context for formulating future technical specifications of further RIF dialects. Each dialect targets at a cluster of similar rule languages and enables platform-independent interoperation between them (via interchange of RIF rules). The presented use cases illustrate some of the principal ways in which RIF can provide benefits. RIF can promote innovation and development by fostering collaborative work and providing new opportunities for third-party services. RIF can promote e-commerce by providing interoperability across vendor platforms. RIF can promote efficient process management through reuse, sharing, and the ability to provide unified views across disparate platforms. Last, but not least, RIF can promote the growth of knowledge by enabling reasoning with merged sets of rules originating from disparate knowledge sources.
</p><p>The RIF-UCR document is structured as follows: Section 2 formulates the overall goals of RIF and several accordant critical success factors for RIF. Section 3 summarizes the released RIF dialects and the current structure of RIF. Section 4 presents a set of use cases that are representative of the types of application scenarios that RIF is intended to support. Besides illustrating the utilization of the current RIF dialects, the functionality specified in the use cases, together with the inferred requirements, acts as input for the technical specification of future RIF dialects and for the implementation of various variants of these scenarios by applications or systems that incorporate the existing or newly developed RIF technical specifications. In section 5 several important requirements for RIF are inferred from the goals and use cases. In the main all requirements should have a use case or derivation of a use case from which they are derived. In exceptional circumstances requirements may not be derived from a use case, e.g. when they are already defined as constraints in the working group charter. Their fulfillment is discussed with respect to the existing RIF dialects. 
</p>
</div></div></div><div>
<a name="Goals"/><h2> <span class="mw-headline">2  Goals </span></h2>
<div><div dir="ltr" lang="en"> 
<p>The primary goal of RIF is to be an effective means of exchanging rules that has the potential to be widely adopted in industry and that is consistent with existing W3C technologies and specifications.
</p><p><span class="anchor" id="goal-exchange-of-rules"/> 
</p>
<a name="Exchange_of_Rules"/><h4> <span class="mw-headline">2.1  Exchange of Rules </span></h4>
<p>The primary goal of RIF is to facilitate the exchange of rules. 
</p><p><span class="anchor" id="goal-w3c-consistency"/> 
</p>
<a name="Consistency_with_W3C_specifications"/><h4> <span class="mw-headline">2.2  Consistency with W3C specifications </span></h4>
<p>RIF is intended to be a W3C specification that builds on and develops the existing range of specifications that have been developed by the W3C. This implies that existing W3C technologies should fit well with RIF. 
</p><p><span class="anchor" id="goal-widescale-adoption"/> 
</p>
<a name="Widescale_Adoption"/><h4> <span class="mw-headline">2.3  Widescale Adoption </span></h4>
<p>It is an explicit goal of the W3C that the Rules Interchange Format will have the maximum potential for widescale adoption. Rules interchange becomes more effective the wider adoption there is of the specification -- the so-called "network effect". 
</p><p>Along with the use cases in the next section, these goals motivate the requirements in Section 5.
</p>
</div></div></div><div>
<a name="Structure_of_RIF"/><h2> <span class="mw-headline">3  Structure of RIF </span></h2>
<div><div dir="ltr" lang="en"> 
<p>RIF is described by a set of documents, each fulfilling a different purpose, and catering to a different audience. Currently the following set of documents has been released:
</p>
<ul>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-fld-20080730/" title="http://www.w3.org/2005/rules/wiki/FLD">RIF-FLD</a> (Framework of Logic Dialects) document describes a framework of mechanisms for specifying the syntax and semantics of logic-based RIF dialects through a number of generic concepts.</li>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-rdf-owl-20080730/" title="http://www.w3.org/2005/rules/wiki/SWC">RIF-RDF+OWL</a> (RIF RDF and OWL Compatibility) document specifies the interoperation between RIF and the data and ontology languages RDF, RDFS, and OWL.</li>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-dtb-20081218/" title="http://www.w3.org/2005/rules/wiki/DTB">RIF-DTB</a>  (Data Types and Builtins) document describes RIF data types and built-in functions and predicates</li>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-core-20081218/" title="http://www.w3.org/2005/rules/wiki/Core">RIF-Core</a> (Core Dialect) document specifies a common subset of RIF-BLD and RIF-PRD including RIF-DTB</li>
  <li>The <a class="external text" href="http://www.w3.org/2005/rules/wg/draft/ED-rif-bld-20081218/" title="http://www.w3.org/2005/rules/wiki/BLD">RIF-BLD</a> (Basic Logic Dialect) document specifies a basic interchange format that allows logic rules (definite Horn rules with equality) to be exchanged</li>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-prd-20081218/" title="http://www.w3.org/2005/rules/wiki/PRD">RIF-PRD</a> (Production Rules Dialect) document specifies the RIF production rules dialect to enable the interchange of production rules</li>
  <li>The <a class="external text" href="" title="http://www.w3.org/2005/rules/wiki/UCR">RIF-UCR</a> (Use Cases and Requirements) document describes use cases and requirements for RIF</li>
  <li>The <a class="external text" href="http://www.w3.org/TR/2008/WD-rif-test-20081218/" title="http://www.w3.org/2005/rules/wiki/Test">RIF-Test</a> (Test Cases) document describes the test cases developed by the RIF working group</li>
</ul>
<p>RIF is designed as a family of RIF dialects as shown in the following Venn diagram:
</p><p><img alt="Venn Diagram of RIF Dialects" border="0" height="312" src="RIF_DIALECTS_VENN.jpg" width="372"/>
</p><p>Each dialect is a collection of components that works together, forming an interlingua. New dialects are needed when no existing dialect provides the required rule-language features for interchange.
</p><p>The RIF Framework for Logic-based Dialects (<a class="external text" href="http://www.w3.org/TR/2008/WD-rif-fld-20080730/" title="http://www.w3.org/2005/rules/wiki/FLD">RIF-FLD</a>) describes mechanisms for specifying the syntax and semantics of logic-based RIF dialects through a number of generic concepts. Every logic-based RIF dialect should specialize these general mechanisms or justify why it does not. This specialization may include leaving out some elements of RIF-FLD, to produce its concrete syntax and model-theoretic semantics. Currently, the first two existing RIF dialects are the RIF Basic Logic Dialect (RIF-BLD) and the RIF Production Rules Dialect (RIF-PRD) which is a partial specialization of FLD.
</p><p><a class="external text" href="http://www.w3.org/2005/rules/wg/draft/ED-rif-bld-20081218/" title="http://www.w3.org/2005/rules/wiki/BLD">RIF-BLD</a> (Basic Logic Dialect) is a specialization of RIF-FLD capable of representing definite Horn rules with equality enhanced with a number of syntactic extensions to support expressive features such as objects and frames, internationalized resource identifiers (IRIs) as identifiers for concepts, and XML Schema data types.
</p><p><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-prd-20081218/" title="http://www.w3.org/2005/rules/wiki/PRD">RIF-PRD</a> (Production Rules Dialect) specifies a production rules dialect to enable the interchange of production rules. The condition language of RIF PRD is defined in Core as a common subset of RIF BLD and RIF PRD. 
</p><p><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-core-20081218/" title="http://www.w3.org/2005/rules/wiki/Core">RIF-Core</a> (Core Dialect) specifies a common subset of RIF-BLD and RIF-PRD which includes RIF-DTB.
</p><p>The normative syntax for RIF dialects is a concrete XML syntax. A non-normative presentation syntax is additionally specified for each dialect, to allow a more easily readable and compact presentation of language fragments (such as examples).
</p>
</div></div></div><div>
<a name="Use_Cases"/><h2> <span class="mw-headline">4  Use Cases </span></h2>
<div><div dir="ltr" lang="en"> 
<p>A use case may be considered to be a description of a problem and a solution that utilized an existing RIF dialect or requires the specification of a new one. It is intended that the use cases presented here include the widest possible number of requirements using as few use cases as possible. The included usage scenarios are meant to be representative, meaning that the general concepts are common to many possible use cases across a broad array of rule-based application domains and industrial sectors.
</p><p>Nearly <a class="external text" href="http://www.w3.org/2005/rules/wg/wiki/Use_Cases" title="http://www.w3.org/2005/rules/wg/wiki/Use_Cases">fifty use cases</a> documenting the need for a RIF were originally submitted by the working group members. These were grouped into  general categories and then synthesized as much as possible. The following use case descriptions, guided by this synthesis, provide scenarios that motivate the current design of RIF, explain the benefits of a RIF, and guide users to its currently specified  dialects. The use cases are also intended to provide an ongoing reference point for the working group in its goal of providing a precise set of requirements for a RIF and in developing new RIF dialects. 
</p><p>Whenever possible, we will give concrete illustrations of how the existing two RIF dialects (Core, BLD, and PRD) address various aspects of these use cases. 
</p><p/>
<div style="border: 1px dotted black; padding:0.5em; margin: 1em; ">
<p>The button below can be used to show or hide the RIF examples.</p><form action=""><p>
<input id="hide-rif" onclick="display('rif', 'none');            set_display_by_id('hide-rif', 'none');             set_display_by_id('show-rif', '');" style="display:none" type="button" value="Hide Examples"/>
<input id="show-rif" onclick="display('rif','');      set_display_by_id('hide-rif', '');       set_display_by_id('show-rif', 'none');" type="button" value="Show Examples"/>
</p></form>
</div><p>

</p>
<p class="ednote"><span class="ednotehead">Editor's Note:</span> the given examples and used presentation syntax in this version of the UCR working draft are still under development</p>
<p>In order to enhance readability and avoid the appearance of syntactic prejudice, we have deliberately avoided the use of formal notation in representing rules in these use cases. Instead, we will use the RIF presentation syntax (of the RIF dialects).
</p>
</div></div>
<div>
<p><br/>
</p>
<a name="Negotiating_eBusiness_Contracts_Across_Rule_Platforms"/><h3> <span class="mw-headline">4.1  Negotiating eBusiness Contracts Across Rule Platforms </span></h3>
<div><div dir="ltr" lang="en"> 
<p>This use case illustrates a fundamental use of RIF: to supply a vendor-neutral representation of rules, so that rule-system developers and stakeholders can do their work and make product investments without concern about vendor lock-in, and in particular without concern that a business partner does not have the same vendor technology. It also illustrates the fact that RIF can be used to foster collaborative work. Each developer and stakeholder can make a contribution to the joint effort without being forced to adopt the tools or platforms of the other contributors. 
</p><p>John is negotiating an electronic business contract regarding the supply of various types of items that Jane's company is manufacturing. Jane and John interchange the contract-related data and rules involved in the negotiation in electronic form so that they can run simulations. Both agree on a standard Business Object Model / data model (i.e., vocabulary / ontology) for the goods and services involved - in this case an XML schema and appropriate test XML documents are interchanged with their rules. Since John and Jane run applications based on different vendors' rule engines and rule languages, they interchange the rules using RIF; both vendors used can interpret the XML schema and data, and produce the results as an amended XML document. John's company defines its purchase orders in terms of an XML description of goods, packaging, delivery location and date with delivery and payment rules. A rule proposed by John might be the following: 
</p>
<pre width="130">
If an item is perishable and it is delivered to John more than 10 days after the scheduled delivery date then the item will be rejected by him.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
This rule set can be adequately represented in RIF Core either using (ordered) relations as e.g. in standard Logic Programming, unordered relations using named arguments, or in a more object-oriented encoding using frames.<br/>   
<br/> 
<i>Ordered representation in RIF Core presentation syntax using relations:</i> <br/>
<br/> 
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)
  Prefix(ex   http://example.org/example#)
 
  Group 
  (
      Forall&nbsp;?item&nbsp;?deliverydate&nbsp;?scheduledate&nbsp;?diffdays (
      ex:reject("John"&nbsp;?item)&nbsp;:-
          ex:perishable(?item)
          ex:delivered(?item&nbsp;?deliverydate "John")
          ex:scheduled(?item&nbsp;?scheduledate)
         &nbsp;?diffdays = External(func:days-from-duration(
                                  External(func:subtract-dateTimes(?deliverydate&nbsp;?scheduledate))  
                               )) 
          External(pred:numeric-greater-than(?diffdays  10)) 
      ) 
   ) 
) 
</code>
<br/> 
Note, the nesting of external built-in functions and operations and the assignment/binding of (intermediate) result (sets) from functions to variables by equality in this example.<br/>    
<br/> 
<i>Unordered representation in RIF Core presentation syntax using namened arguments:</i> <br/>
<br/> 
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>) 
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>) 
  Prefix(ex   http://example.org/example#) 
 
  Group 
  ( 
      Forall&nbsp;?item&nbsp;?deliverydate&nbsp;?scheduledate&nbsp;?diffdays ( 
      ex:reject(ex:ware -&gt;&nbsp;?item ex:receiver -&gt; "John")&nbsp;:- 
         ex:perishable(ex:ware -&gt;&nbsp;?item) 
         ex:delivered(ex:ware -&gt;&nbsp;?item  ex:datetime -&gt;&nbsp;?deliverydate  ex:receiver -&gt; "John") 
         ex:scheduled(ex:datetime -&gt;&nbsp;?scheduledate  ex:ware -&gt;&nbsp;?item) 
        &nbsp;?diffdays = External(func:days-from-duration( 
                                  External(func:subtract-dateTimes(?deliverydate&nbsp;?scheduledate))  
                               )) 
          External(pred:numeric-greater-than(?diffdays  10)) 
      ) 
   ) 
) 
</code>
<br/> 
Note, the arbitrarily unordered named argument arguments of the user-defined relations, in contrast to external built-in functions and operations, which must have a predefined order. <br/>
<br/> 
<i>Object-Oriented Representation in RIF Core presentation syntax using frames:</i> <br/>
<br/> 
<code style="white-space: pre;">  Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>) 
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>) 
  Prefix(ex   http://example.org/example#) 
 
  Group 
  ( 
      Forall&nbsp;?item&nbsp;?deliverydate&nbsp;?scheduledate&nbsp;?diffdays ( 
     &nbsp;?item[ex:status -&gt; "rejected"]&nbsp;:- 
        &nbsp;?item[ex:perishable -&gt; true]  
        &nbsp;?item[ex:deliveredOn -&gt;&nbsp;?deliverydate ex:delivered -&gt; "John"]  
        &nbsp;?item[ex:scheduledOn -&gt;&nbsp;?scheduledate ex:delivered -&gt; "John"]  
         External(pred:numeric-greater-than(         
             External(func:days-from-duration( 
                                  External(func:subtract-dateTimes(?deliverydate&nbsp;?scheduledate))  
                      )) 
             10 
         ) 
      ) 
   ) 
) 
</code>  
</p>
<p>Jane replies with some suggested rule changes: 
</p>
<pre width="130">
If an item is perishable and it is delivered to John more than 7 days after the scheduled delivery date but less than 14 days after the scheduled delivery date then a discount of 18.7% will be applied to the delivered item.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
<i>Representation in RIF Core presentation syntax using positional relations:</i> <br/>
<br/> 
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>) 
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>) 
  Prefix(ex   http://example.org/example#) 
 
  Group 
  ( 
     Forall&nbsp;?item&nbsp;?deliverydate&nbsp;?scheduledate&nbsp;?diffdays ( 
     ex:discount("John"&nbsp;?item 18.7 )&nbsp;:- 
           ex:perishable(?item) 
           ex:delivered(?item&nbsp;?deliverydate "John") 
           ex:scheduled(?item&nbsp;?scheduledate) 
          &nbsp;?diffdays = External(func:days-from-duration( 
                                  External(func:subtract-dateTimes(?deliverydate&nbsp;?scheduledate))  
                               )) 
           External(pred:numeric-greater-than(?diffdays  7)) 
           External(pred:numeric-less-than(?diffdays  14)) 
     ) 
   ) 
) 
</code>
 <br/>

The binding of the intermeditate results to the variable "?diffdays" avoids repetition, as it used twice in the subsequent rule conditions. As demonstrated in the previous examples, similar representations for this rule can be given using slots or frames and as a production rule which asserts the conclusion as a new fact. 
</p>
<p>John considers this and agrees with Jane. Both organizations utilize these rules in their operational systems using disparate rule representations internally to compute prices for this order and determine contract compliance. 
</p><p>Future requests for the supply of items by John's company are defined on their purchasing web site, as the appropriate XML schema and a RIF ruleset (or rulesets). This allows Jane's company and its competitors to respond electronically with XML cost sheets. Suppliers respond with multiple cost sheets with different variations on the RIF rules proposed by John's company, allowing John's company to review the alternative rules with their associated costs to determine whether they, as a business, would benefit by relaxing or adding new rules as proposed by suppliers. 
</p><p><br/>
</p>
</div></div></div><div>
<a name="Negotiating_eCommerce_Transactions_Through_Disclosure_of_Buyer_and_Seller_Policies_and_Preferences"/><h3> <span class="mw-headline">4.2  Negotiating eCommerce Transactions Through Disclosure of Buyer and Seller Policies and Preferences </span></h3>
<div><div dir="ltr" lang="en"> 
<p>This use case concerns the ability of parties involved in formal transactions or procedures, e.g., credit card authorization of a purchase, access of private medical records, etc., to express and protect their interests within a policy-governed framework. The goal is to formally encode the preferences, priorities, responses, etc., of the parties in such a way that the overall policy can work as intended while providing opportunity for automatic negotiation of terms when allowed by the policy. Utilization of RIF in this use case would extend the scope of this technology, affording a higher degree of interoperability, as well as enabling re-use and sharing of preferences, etc., through interchange. The detailed scenario below shows how this would work. 
</p><p>Alice wants to buy a device at an online site called "eShop." Alice employs software called "Emptor" that functions as automated negotiating agent for buyers. eShop employs software called "Venditor" as automated negotiating agent for sellers. 
</p><p>Alice's and eShop's policies describe who they trust and for what purposes. The negotiation is based on the policies, which are specified as rules, and credentials Emptor and Venditor have. These policies and credentials are disclosed (interchanged) so as to automatically establish trust with the goal of successfully completing the transaction. 
</p><p>Policies are themselves subject to access control. Thus, rule interchange is necessarily done during negotiation and (in general) depends on the current level of trust that the systems have on each other. Since Emptor and Venditor might use different rule languages and/or engines for evaluating (own and imported) rules, a (standard) rule interchange format (RIF) needs to be employed for enabling the rule interchange between the two systems. 
</p><p>When Alice clicks on a "buy it" button at the eShop's Web site, Emptor takes over and sends a request to eShop's site. Venditor receives the request and sends parts of its policy (i.e. a set of rules) back to Emptor. Among other things, the policy states that: 
</p>
<pre width="130">
In order to grant access a buyer must provide valid credit card information together with delivery information (address, postal code, city, and country).
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF Core presentation syntax using relations and frames in combination: <br/>
<br/>
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)
  Prefix(ex   http://example.org/example#)

  Group
  (
    Forall&nbsp;?buyer&nbsp;?creditCard&nbsp;?address (
    ex:permit_access("eShop"&nbsp;?buyer)&nbsp;:-
      ex:provide("eShop"&nbsp;?buyer)
     &nbsp;?buyer[ex:card -&gt;&nbsp;?creditCard ex:deliveryAddr -&gt;&nbsp;?address]
      ex:valid_payment_method(?creditCard)
      ex:valid_delivery_address(?address)
    )   
 
    Forall&nbsp;?type&nbsp;?person&nbsp;?first&nbsp;?last&nbsp;?number&nbsp;?code&nbsp;?date&nbsp;?month&nbsp;?year (
    ex:valid_payment_method(?card)  &nbsp;:-
       &nbsp;?card[type -&gt;&nbsp;?type
              ex:holder -&gt;&nbsp;?person  
              ex:number -&gt;&nbsp;?number 
              ex:code -&gt;&nbsp;?code
              ex:expiry -&gt;&nbsp;?date]
       &nbsp;?person[ex:lastname -&gt;&nbsp;?last ex:firstname -&gt;&nbsp;?first]
       &nbsp;?date[ex:month -&gt;&nbsp;?month ex:year -&gt;&nbsp;?year]
        ex:credential(?type&nbsp;?person&nbsp;?number&nbsp;?code&nbsp;?date)
    ) 
 
    Forall&nbsp;?address&nbsp;?last&nbsp;?first&nbsp;?street&nbsp;?strname&nbsp;?number&nbsp;?code&nbsp;?city&nbsp;?country (
    ex:valid_delivery_address(?address)  &nbsp;:-
      &nbsp;?address[ex:name -&gt;&nbsp;?person ex:street -&gt;&nbsp;?street ex:postal_code -&gt;&nbsp;?code ex:city -&gt;&nbsp;?city ex:country -&gt;&nbsp;?country ]
      &nbsp;?person[ex:lastname -&gt;&nbsp;?last ex:firstname -&gt;&nbsp;?first] 
      &nbsp;?street[name -&gt;&nbsp;?strname ex:number -&gt;&nbsp;?number] 
       ex:declaration(?person&nbsp;?street&nbsp;?number&nbsp;?code&nbsp;?city&nbsp;?country)
    )

  )
)
</code>

Note that in this example relational representation is used in combination with frame representation. Such mixing of representation styles is supported by RIF. 
</p>
<p>Rules express compactly possible ways in which a resource can be accessed; by exchanging them negotiations are shorter and privacy protection is improved. In the example, Venditor reveals part of its policy in form of rules to enable Emptor to choose how to answer, i.e. to decide which credentials and required information to disclose. 
</p><p>For determining whether Venditor's request for information is consistent with Alice's policy, Emptor takes its rules into account, which state for example: 
</p>
<pre width="130">
Disclose Alice's credit card information only to online shops belonging to the Better Business Bureau.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF Core presentation syntax: 

<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)
  Prefix(ex   http://example.org/example#)

  Group
  (
    Forall&nbsp;?Shop&nbsp;?card&nbsp;?Credential&nbsp;?Buyer  (
      ex:provide(?Shop&nbsp;?Buyer ) &nbsp;:-  
        &nbsp;?Buyer[ex:card -&gt;&nbsp;?creditCard ex:deliveryAddr -&gt;&nbsp;?address]
         ex:belongs_to(?Shop  "Better Business Bureau") 
    )

    Forall&nbsp;?deliveryAddr&nbsp;?card&nbsp;?Date&nbsp;?Person&nbsp;?Street  (
      ex:Alice[ex:card -&gt;&nbsp;?card ex:deliveryAddr -&gt;&nbsp;?deliveryAddr]&nbsp;:-
                 &nbsp;?Date = ex:Date[ex:month -&gt; 12 ex:year -&gt; 2012]
                 &nbsp;?Person = ex:Person[ex:lastname -&gt; "Sure" ex:firstname -&gt; "Alice"]
                 &nbsp;?Street = ex:Street[name -&gt; "North Street" number -&gt; 111]
                 &nbsp;?card= ex:Card[ ex:type -&gt; "Visa"
                                  ex:holder -&gt; &nbsp;?Person 
                                  ex:number -&gt; "123456789" 
                                  ex:code -&gt; "123"
                                  ex:expiry -&gt;&nbsp;?Date 
                                 ]
                 &nbsp;?deliveryAddr = ex:DeliveryAddress[ ex:name -&gt;&nbsp;?Person 
                                                      ex:street -&gt;&nbsp;?Street
                                                      ex:postal_code -&gt; "NE3456" 
                                                      ex:city -&gt; "New York" 
                                                      ex:country -&gt; "USA" 
                                                    ]
     )

   )
)
</code>
 
</p>
<p>By disclosing (interchanging) the above given rule, Emptor asks Venditor to provide credentials saying that it belongs to the Better Business Bureau, Alice's most trusted source of information on online shops. eShop has such a credential and its policy contains a rule stating to release it to any potential purchaser. Hence, Venditor passes the credential to Emptor. Emptor is now ready to disclose Alice's credit card information to Venditor but it still must check whether disclosing all the information does not break Alice's denial constraints. Alice has stated two constraints stating: 
</p>
<pre width="130">
For anonymity reasons, never provide both her birth date and postal code.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
The current RIF dialects do not specify explicit constructs for integrity constraints. 
</p>
<p>For this purchase, Alice birthdate is no issue. Thus, Alice's constraints are respected. Emptor therefore provides Alice's credit card information to Venditor. 
</p><p>Companies that provide software such as Venditor and Emptor would make use of RIF in a number of ways. The rules expressing Alice's and/or eShop's policies could be expressed in different rule languages but still work with the software, using RIF-based interchanges. Secondly, assuming Venditor and Emptor are products of different companies using different internal rule languages, it would still be possible for them to work together in real-time. When these two systems need to exchange policy or preference information of their respective clients they would use RIF to enable the interchange in real-time. When Venditor sends its initial policy information to Emptor it uses RIF. Emptor takes that policy and translates it from RIF to its internal representation in order to determine what it needs to do. 
</p><p><br/>
</p>
</div></div></div><div>
<a name="Collaborative_Policy_Development_for_Dynamic_Spectrum_Access"/><h3> <span class="mw-headline">4.3  Collaborative Policy Development for Dynamic Spectrum Access </span></h3>
<div><div dir="ltr" lang="en"> 
<p>This use case demonstrates how RIF leads to increased flexibility in matching the goals of end-users of a service/device, with the goals of providers and regulators of such services/devices. RIF can do that because it enables deployment of third party systems that can generate various suitable interpretations and/or translations of the sanctioned rules governing a service/device. 
</p><p>This use case concerns <i>Dynamic Spectrum Access for wireless communication devices</i>. Recent technological and regulatory trends are converging toward a more flexible architecture in which reconfigurable devices may operate legally in various regulatory and service environments. The ability of a device to absorb the rules defining the policies of a region, or the operational protocols required to dynamically access available spectrum, is contingent upon those rules being in a form that the device can use, as well as their being tailored to work with devices in the same class having different capabilities. 
</p><p>In this use-case we suppose a region adopts a policy that allows certain wireless devices to opportunistically use frequency bands that are normally reserved for certain high-priority users. (<a class="external text" href="http://europa.eu.int/eur-lex/lex/LexUriServ/site/en/oj/2005/l_187/l_18720050719en00220024.pdf" title="http://europa.eu.int/eur-lex/lex/LexUriServ/site/en/oj/2005/l_187/l_18720050719en00220024.pdf">The decision</a> by the European Union to allow "Dynamic Frequency Selection" (DFS) use of the 5 GHz frequency band by wireless systems, a band intermittently used by military and weather radar, is a recent example.) 
</p><p>Suppose the policy states: 
</p>
<pre width="130">
A wireless device can transmit on a 5 GHz band if no priority user is currently using that band.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
<br/>Note, since default negation (not) such as negation as failure is not supported by RIF BLD there is no adequate way to represent that "no priority user is currently using the band". 
</p>
<p>How does a device know that no priority user is currently using a band it wants to use? The answer will depend on the specific capabilities of the device. One type of device may answer this question by sensing the amount of energy it is receiving on that band. That is, it might employ the rule: 
</p>
<pre width="130">
If no energy is detected on a desired band then assume no other device is using the band.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)<br/>
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)<br/>
  Prefix(ex   http://example.org/example#)<br/>
<br/>
  Group<br/>
  (<br/>
      Forall&nbsp;?device&nbsp;?band&nbsp;?level  (<br/>
      ex:used(?device&nbsp;?band)&nbsp;:- <br/>
                   ex:detect(ex:energy(?level&nbsp;?band))<br/>
                   External(pred:numeric-greater-than(?level  0))<br/>
      )<br/>
   )<br/>
)<br/>
</code>
<br/>Note, the engergy detection function would require an external call for sensing  the level of energy. Such procedural attachments cannot be specified in BLD. Reaction rules provide event detection capabilities. 
</p>
<p>A second type of device, may get information from a control channel that lets it know whether the desired band is being used by a priority user. That is, it might employ the rule: 
</p>
<pre width="130">
If no control signal indicating use of a desired band by a priority user is detected then assume the band is available.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)<br/>
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)<br/>
  Prefix(ex   http://example.org/example#)<br/>
<br/>
  Group<br/>
  (<br/>
      Forall&nbsp;?device&nbsp;?band&nbsp;?user  (<br/>
       ex:used(?device&nbsp;?band)&nbsp;:- <br/>
                   ex:detect(ex:signal(?user&nbsp;?band))<br/>
                   ex:priority(?user,"high").<br/>
      )<br/>
   )<br/>
)<br/>
</code>
<br/> 
</p>
<p>So each type of device will need to employ different "interpretations" or "operational definitions" of the policy in question. 
</p><p>Now assume that there are 10 manufacturers of these 2 different types of wireless devices. Suppose that each of these manufacturers uses a distinct rule-based platform in designing its devices. Each manufacturer needs to write 2 interpretations of the policy (for each of the two types of device). That means that 20 different versions of the policy must be written, tested and maintained. 
</p><p>Enter RIF. The 10 manufacturers form a consortium. This is a third-party group that is responsible for translating regional policies into RIF. When it does so, however, it provides different versions corresponding to the possible interpretations (operational definitions) of the policy. So in this case, 2 RIF versions of the DFS policy are provided for the 2 types of device mentioned above. Each of these RIF specifications can be automatically translated into the appropriate rule-platform provided a RIF-Compiler for the target device architecture exists. Clearly it will be in the interest of each device manufacturer to develop such compilers. That is because the manufacturer only needs to develop such a compiler <i>once</i> for every architecture it owns. Contrast that investment with having to produce, test, and maintain different versions of various policies over the lifetime of a product. 
</p><p>This arrangement also allows the overall process to be organized in a fashion that maintains the natural division of labor in the corresponding division of artifacts produced by that labor: the policy and its various interpretations are written and maintained in platform-independent artifacts (RIF); knowledge about how to translate from RIF to a particular device architecture is maintained in the compilers. A change in policy is inserted at the top level in the policy artifact hierarchy where it should be; possible operational interpretations of that change are inserted at the next level down; the implementation implications for the various device architectures is generated automatically at the lowest level. 
</p>
</div></div></div><div>
<a name="Access_to_Business_Rules_of_Supply_Chain_Partners"/><h3> <span class="mw-headline">4.4  Access to Business Rules of Supply Chain Partners </span></h3>
<div><div dir="ltr" lang="en"> 
<p>A business process (BP) designer designs processes that can span multiple departments in the same business as well as other business partners. A classic example of this is the integration of supply chain business processes which typically involve multiple partners. Supply chain integration involves exposing a certain amount of business logic between partners as well as integrating processes across partners. In such activities it is therefore often necessary to access or invoke rules that originate in other ownership domains. 
</p><p>A key part of a business process is the logic used to make decisions within the process. Such logic is often coded in rules because rule languages are easier for BP designers to understand and manipulate than procedural code (as in Java) -- although both forms of business logic are prevalent. Where business logic is represented in different rule languages this presents a significant burden to the BP designer in designing an integrated process. 
</p><p>Two primary integration modalities are possible: importing the different rulesets into a single engine and processing them in a uniform manner, or accessing the rulesets by querying remote engines and processing the results. Each modality has its uses and contra-indications. Where there are strong ownership boundaries involved it may not be permitted to merge rule sets of partners. 
</p><p>For example, in an insurance adjustment process, the inspection of a damaged vehicle is often performed by independent inspectors. The critical decision in how an insurance claim will proceed is whether the damage results in a total loss or whether a repair is feasible: 
</p>
<pre width="130">
If inspector believes vehicle is repairable then process as repair otherwise process as total loss.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Note, belief/uncertainty cannot be specified in BLD and PRD: only true or false
</p>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Belief/uncertainty cannot be specified in PRD
</p>
<p>The question of whether a vehicle is repairable is one that is dependent on the processes executed by the inspector and cannot be directly integrated into the insurance companies own adjustment process. The insurance company effectively queries the inspector's logic. Within the adjustment process, the overall flow will be quite different for repairable claims and total loss claims. 
</p><p>Even in the case of a single company, which is nominally under a common ownership domain, information and business logic is often controlled by multiple stakeholders. For example, a large company will often be organized into semi-independent profit centers (business units). Each unit will be motivated differently, will have different ontologies and business logic and may use different rule languages to represent their logic (this is particularly the case where one company acquires another company). 
</p><p>RIF should be used to permit the BP designer a unified view of the different partners' business rules in designing the process, while at the same time permitting the partners to continue to leverage their own business rules without changing their own technologies. 
</p><p>How such a unified view of the business rules can be realized in a deployed BP will depend on both technical and non-technical factors. Even where all the parties are required to use a common rule language, there may be compelling ownership issues that mitigate against a simple merge of the rule sets. In the situation where merging of rulesets is not possible, then a query-style access to partners' business rules may be used. In this way, RIF permits a unified dynamic view of the business rule logic no matter what the original form of the rules. 
</p><p>For this to be viable from a business perspective it is critical that the semantics of the rules and query exchange be completely predictable and preferably loss-less. 
</p>
</div></div></div><div>
<a name="Managing_Inter-Organizational_Business_Policies_and_Practices"/><h3> <span class="mw-headline">4.5  Managing Inter-Organizational Business Policies and Practices </span></h3>
<div><div dir="ltr" lang="en"> 
<p>This use case concerns organizations that acquire rule sets from external sources and that have to integrate these new rule sets into their existing rule bases. Such rule sets may be acquired in the following ways: 
</p>
<ul><li> An organization may buy rule sets from expert sources 
</li><li> An organization may use rule sets from shared interest groups such as trade associations 
</li><li> A component of a distributed organization may acquire rules when a rule set is distributed across a distributed organization. In such case, there may be different localization requirements in different regions and locations, entailing a variety of integration challenges in these various locations and component organizations. 
</li></ul>
<p>The following scenario examines these different methods of acquisition and the various types of integration and management issues that may arise. 
</p><p><i>This scenario uses the (fictitious) car rental company, EU-Rent, used as the case study in the <a class="external text" href="http://www.omg.org/docs/dtc/06-03-02.pdf" title="http://www.omg.org/docs/dtc/06-03-02.pdf">Semantics of Business Vocabulary and Business Rules Specification</a>. The EU legislation discussed is also fictitious, as are the consulting companies CarWise and AutoLaw.</i>
</p><p>EU-Rent's corporate HQ deals with CarWise, a consulting company with expertise in managing fleets of vehicles. One service CarWise offers to its clients is negotiating with EU regulators to clarify regulations. 
</p><p>An EU regulator issues a directive dealing with insurance for vehicles owned by corporations. CarWise agrees with the regulator on an acceptable interpretation, and provides EU-Rent (and its other car rental clients) with two sets of rules: 
</p>
<ul><li> A business policy, stating that every car rental must be insured for damages to third parties.
</li><li> A supporting rule set, addressing levels of required coverage, tax calculation in different EU countries, liabilities in rentals that span multiple countries, and reporting of compliance with this business policy.
</li></ul>
<p>EU-Rent decides that it will maintain its compliance documentation electronically. CarWise then provides EU-Rent with an additional rule set for electronic compliance documentation, including such rules as: 
</p>
<pre width="130">
Each tax schedule must have electronic signatures from two EU-Rent employees who are at least at the level of manager.
</pre>
<p>Before it can use the two general rule sets, EU-Rent needs to connect them to the relevant data sets in its IT systems, e.g. relate the EU country-specific taxation rules to the relevant record types in its databases. 
</p><p>EU-Rent corporate HQ subsequently decides that the cost of third-party insurance will be built into the basic cost of each rental, and not shown as a separate item on the rental contract, to ensure that it can never be omitted from rentals or disputed by renters. It then sends three rule sets to its operating companies in the EU: 
</p>
<ul><li> The rule set for car rental insurance (from CarWise), including the basic policy and the supporting rule set.
</li><li> The rule set for electronic compliance documentation (also from CarWise).
</li><li> Its own rule set for building insurance into the basic rental cost.
</li></ul>
<p>The operating companies then have to localize the rule sets for their countries of operation. For example, in the UK, another consulting company, AutoLaw, advises EU-Rent of rules for placing aggregate insurance for large fleets with more than one insurer in order to spread the risk, for example: 
</p>
<pre width="130">
For fleets of more than 200 vehicles, fleet insurance policies must be placed with at least 3 insurers, each of whom covers at least 25% of the risk.
</pre>
<p>A timing issue makes it difficult for EU-Rent UK to strictly comply with this directive. EU-Rent UK has some existing insurance policies in place, which provide third-party insurance as an explicit item, and it cannot get refunds on early termination. It therefore asks corporate HQ for a temporary dispensation: that it can continue its existing insurance until it expires, and then switch to the new rules. 
</p><p>EU-Rent HQ permits this, not just for the UK, but for any of its operating companies that have similar insurance arrangements. To ensure that this dispensation is temporary, it adds a new rule: 
</p>
<pre width="130">
Insurance policies that provide separate third-party coverage must not be renewed.
</pre>
<p>EU-Rent HQ is also concerned about meeting deadlines for electronic filing. It introduces a new rule that it distributes to operating companies: 
</p>
<pre width="130">
Each electronic compliance document must have its required electronic signatures 48 hours before its filing deadline.
</pre>
<p>This rule is meant to be implemented as follows: If '48 hours before filing deadline' passes, and the electronic signatures are not present, then the operating company's rules system must report the out-of-compliance situation, and subsequently wait for the responsible managers to provide the signatures.
</p>
<a name="Ruleset_Integration_for_Medical_Decision_Support"/><h3> <span class="mw-headline">4.6  Ruleset Integration for Medical Decision Support </span></h3>
<div><div dir="ltr" lang="en"> 
<p>Decision support systems aid in the process of human decision making, especially decision making that relies on expertise. Reasoning with rules is an important part of this expert decision making. For complex decision support systems, it is expected that rules will be furnished by a variety of different sources, including ontologies, knowledge bases, and other expert systems. This use case illustrates how RIF makes it possible to merge rulesets from diverse sources in diverse formats into one rule-based system, thereby enabling inferences that might otherwise have remained implicit. 
</p><p>Medical decision support systems, such as the ones discussed below, might use rules from pharmaceutical knowledge bases, laboratory knowledge bases, patient databases, and medical ontologies. For example, a large amount of information on therapeutic medications (drug taxonomies, indications, contraindications, and clearance times) and diseases (disease taxonomies, etiologies, and symptoms) is contained in existing ontologies such as <a class="external text" href="http://www.snomed.org" title="http://www.snomed.org">SNOMED</a> Clinical Terms&reg;. Rules can be used to express therapeutic recommendations, to formulate queries about relevant prescriptions for a patient, and to assess the effectiveness of a treatment. 
</p><p>The following scenario illustrates how rule-interchange would be used in various medical decision support systems to support the following functionalities: 
</p>
<ul><li> Improving situation assessment, e.g., determining when a patient needs to be put on medication, or have his medication switched. 
</li><li> Prescribing a course of action, e.g., determining which drug is best for a patient in a particular circumstance. 
</li><li> Improving event planning, e.g., determining whether a patient can be scheduled for a procedure given the medication that he is currently taking. 
</li></ul>
<p>Bob, 62 years old and reasonably healthy, has been going to his internist, Dr. Rosen, for several years for control of his Type II diabetes. Dr. Rosen has been using the <tt>AutoDoc</tt> system to help him decide when to switch to medications and which drugs to prescribe. The <tt>AutoDoc</tt> system uses two sources when making its recommendations: a laboratory knowledge base giving particular results for patients and specifying when these results are out of normal range, and a pharmaceutical knowledge base giving guidelines for the use of medications. Automated reasoning with rules from these combined sources is possible if the rules are first mapped to RIF. Here are two specific examples of such synergistic effects. 
</p><p><i>This scenario discusses the fictitious expert systems <tt>AutoDoc</tt> and MEDIC. In the interest of readability and brevity, the information and rules presented in the following scenario may not precisely capture the current state of medical knowledge and best practices in this field, but may be somewhat simplified.</i> 
</p><p>Originally Bob's diabetes was controlled through diet and moderate exercise. In time, however, Bob's blood glucose level began to rise, even under this regimen. Due to Bob's elevated <tt>HbA1c</tt> level (which indicates one's average blood sugar level over the last several months), Dr. Rosen prescribed oral medication for Bob. He was forced to change Bob's medication a number of times over the course of a year. He first prescribed Precose, an oral alpha-glucosidase inhibitor, but had to discontinue this medication due to undesired side effects. He then prescribed several sulfonylurea drugs, Micronase and Glucotrol, to no avail. Bob's lab results still indicated an elevated <tt>HbA1c</tt> level. The following rule from the <i>laboratory knowledge base</i> suggests that Bob's treatment at that time was not effective: 
</p>
<pre width="130">
If a Type II diabetes patient's current level of HbA1c is high, then the patient's current treatment is considered to be ineffective.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD  Presentation Syntax using relations and an event calculus axiomatization:<br/> 
<br/>
<code style="white-space: pre;"> Document(

  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)<br/>
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)<br/>
  Prefix(ex   http://example.org/example#)<br/>
<br/>
  Group<br/>
  (<br/>
    Forall&nbsp;?Patient&nbsp;?Treatment&nbsp;?Level&nbsp;?T (<br/>
    ex:holdsAt(ex:ineffective(?Patient&nbsp;?Treatment)&nbsp;?T)&nbsp;:-<br/>
      ex:holdsAt(ex:hasDisease(?Patient "diabetesTypeII")&nbsp;?T)<br/>
      ex:holdsAt(ex:elevated(levelOf(?Patient "hbA1c"&nbsp;?Level))&nbsp;?T)<br/>
      ex:holdsAt(ex:treatmentPlan(?Treatment&nbsp;?Patient)&nbsp;?T)<br/>
      )<br/>
   )<br/>
)<br/>
</code>
<br/>Note, the example requires the formalization of changeable states which can be represented by an event calculus axiomatization. <a href="#event-calculus" title="">KS86</a>] The EC axioms can then be represented using RIF BLD.   
</p>
<p>To deal with this problem, Dr. Rosen was about to prescribe Glucophage (metformin, one of the biguanides) 850 mg, 3 times a day, when as usual, he double checked his prescription with the <tt>AutoDoc</tt> system. The system, based on the following guidelines from the <i>pharmaceutical knowledge base</i>, informed Dr. Rosen that he should have prescribed an oral bitherapy (two medications, each of which controls blood sugar levels) instead of a monotherapy. 
</p>
<pre width="130">
If an oral monotherapy at recommended doses of a sulfonylurea or biguanide, combined with lifestyle changes, is ineffective, then the monotherapy should be replaced by an oral bitherapy.
</pre>
<p>Based on the recommendation from <tt>AutoDoc</tt>, Dr. Rosen switched Bob's prescription to Glucophage and Avandia (rosiglitazone, one of the thiazolidinediones). 
</p><p>Bob recently suffered a concussion and has become increasingly forgetful. He went to see a neurologist, Dr. Cervello, who prescribed a contrast MRI (Magnetic Resonance Imaging). When asked about current medication, Bob told Dr. Cervello that he was taking Glucotrol to control his diabetes, forgetting that he had been switched to Glucophage. This was potentially problematic, since Glucophage should not be taken close to the administration of a contrast injection. 
</p><p>Fortunately, when Bob went to the lab to schedule his MRI, the medical receptionist pulled up MEDIC (Medical Event and Drug Interaction Consultant), the hospital's new automated system, which checks for incompatible medical events and/or drugs (e.g., liposuction scheduled during pregnancy, blood thinners prescribed before surgery, etc.). 
</p><p>MEDIC uses a variety of sources in its reasoning, including: 
</p>
<ul><li> the pharmaceutical knowledge base, described above 
</li><li> the patient databases, which gives the patient record, including the medications a patient is currently taking 
</li><li> the hospital medical event protocol knowledge base, which details the protocol used for different medical procedures 
</li></ul>
<p>In this case, MEDIC uses all three sources, and pulls up the following information: 
</p>
<ul><li> Metformin is contraindicated with contrast dye. 
</li><li> Metformin is the generic form of Glucophage. 
</li><li> Bob is taking Glucophage. 
</li><li> The contrast MRI requires as one of its steps injecting the patient with contrast dye. 
</li></ul>
<p>MEDIC therefore determines that Bob should not be taking the contrast MRI at this time. 
</p><p>For MEDIC to work, the rules from these different sources must be mapped to a unified interchange format. 
</p>
</div></div></div><div>
<a name="Interchanging_Rule_Extensions_to_OWL"/><h3> <span class="mw-headline">4.7  Interchanging Rule Extensions to OWL </span></h3>
<div><div dir="ltr" lang="en"> 
<p>Rules are often used in conjunction with other declarative knowledge representation formalisms, such as ontology languages (e.g. RDF and OWL), in order to provide greater expressive power than is provided by either formalism alone. Ontology languages, for example, typically provide a richer language for describing classes (unary predicates). Rules, on the other hand, typically provide a richer language for describing dependencies between properties (binary predicates), and may also support higher-arity predicates. 
</p><p>Rich domain models combining both rules and ontologies are often needed in domains such as medicine, biology, e-Science and Web services. In such domains, several actors and/or agents are involved that have to interchange the data, ontologies, and rules that they work with. An example is the use of such a domain model in an application that aims at assisting the labeling of brain cortex structures in MRI images. In this case, an OWL ontology is used to capture knowledge about the most important brain cortex anatomical structures, and a rule base is used to capture knowledge about mereological and spatial dependencies between properties. 
</p><p>For example, a rule is used to express the dependency between the ontology properties isMAEConnectedTo and isMAEBoundedBy, in particular (a simplified form of) the knowledge that two Material Anatomical Entities having a shared boundary are connected: 
</p>
<pre width="130">
If MAE X is bounded by Z and MAE Y is also bounded by Z then X is connected to Y.
</pre>
<p>Benefits of interchange via RIF include the ability to collaboratively develop and share valuable knowledge, the ability to integrate anatomical images, possibly from distributed image sources, and the ability to use large-scale federated systems for statistical analysis of brain images of major brain pathologies. 
</p>
</div></div></div><div>
<a name="Vocabulary_Mapping_for_Data_Integration"/><h3> <span class="mw-headline">4.8  Vocabulary Mapping for Data Integration </span></h3>
<div><div dir="ltr" lang="en"> 
<p>This use case concerns the integration of information from multiple data sources. The Semantic Web provides a common data representation and query language, which greatly simplifies access to diverse sources but does not directly address the problem that independent data sources may have rather divergent information models. 
</p><p>Rules are an effective way to express mappings between such information models. However, rules locked within local proprietary systems cannot be reused. With a common rule representation, such mappings can be published across the Semantic Web, enabling an enterprise or community to progressively build up a rich network of mappings unifying the information models. 
</p><p>Information mapping and integration problems like this arise in many diverse domains including health care, travel planning, IT management and customer information management. The following scenario comes from the world of IT systems management. 
</p><p>Vlad has been given the job of analyzing how exposed his division's business processes are to changes in their IT maintenance contracts. He has three sources of information to combine: 
</p>
<ul><li> a report on application services and associated servers, databases and networks (from the IT department) 
</li><li> a maintenance contracts database (from the finance department) 
</li><li> a registry indicating which business processes use which IT services (from the business planning group) 
</li></ul>
<p>Each of these sources is in a different form but can be mapped into RDF to simplify access. However, they all have different information models. The IT report is too fine-grained: it talks about routers and interface cards whereas Vlad only needs to identify servers and pick out some generic dependency relations. On the other hand, the finance database models the world in terms of physical assets such as racks, which is too coarse-grained. 
</p><p>First, Vlad creates simple mapping rules to create a uniform, simplified view of the data in terms of a small number of concepts -- Server, Business<tt/>Process and Dependency. This involves rules such as: 
</p>
<pre width="130">
 If x is a ComputeNode in Rack r
    and Rack r is in Cage c
    and mc is a MaintenanceContract for Cage c
       then x is a Server with MaintenanceContract mc
 
 If x is a ComputeNode with a NetworkInterface with Port p
    and app is an Application running on Port p
       then x is a Server that hosts app
 
 If bp is a BusinessProcess that uses Application app
       then bp has a Dependency on app
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;"> Forall&nbsp;?X&nbsp;?MC&nbsp;?R&nbsp;?C(
 &nbsp;?X[rdf:type-&gt;ex:Server ex:maintenanceContract-&gt;?MC]&nbsp;:- And(
   &nbsp;?X[rdf:type-&gt;ex:ComputeNode ex:location-&gt;?R]&nbsp;?R#ex:Rack 
   &nbsp;?R[ex:location-&gt;?C]&nbsp;?C#ex:Cage
   &nbsp;?C[ex:maintenanceContract-&gt;?MC]&nbsp;?MC#ex:MaintenanceContract )) 

  Forall&nbsp;?X&nbsp;?Ni&nbsp;?P&nbsp;?App (
  &nbsp;?X[rdf:type-&gt;ex:Server ex:hosts-&gt;?App]&nbsp;:- And( 
    &nbsp;?X[rdf:type-&gt;ex:ComputeNode ex:networkInterface-&gt;?Ni] 
    &nbsp;?Ni[ex:port-&gt;?P] &nbsp;?P#ex:Port
    &nbsp;?App[rdf:type-&gt;ex:Application ex:onPort-&gt;?P])) 

  Forall&nbsp;?App&nbsp;?BP ( 
  &nbsp;?BP[ex:dependsOn-&gt;?App]&nbsp;:- 
    &nbsp;?BP[rdf:type-&gt;ex:BusinessProcess ex:processUses-&gt;?App] )) 
</code>
<br/>
</p> 
<p>He then creates rules that combine the data across his now simplified data sources, e.g. 
</p>
<pre width="130">
 If bp is a BusinessProcess that has a Dependency on Application app
   and x is a Server with MaintenanceContract mc that hosts Application app
      then bp has a Dependency on mc
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;">   Forall&nbsp;?App&nbsp;?BP&nbsp;?App&nbsp;?MC( 
  &nbsp;?BP[ex:dependsOn-&gt;?MC]&nbsp;:- &lt;
    &nbsp;?BP[rdf:type-&gt;ex:BusinessProcess ex:dependsOn-&gt;?App]&nbsp;?App#ex:Application 
    &nbsp;?X[rdf:type-&gt;ex:Server ex:hosts-&gt;?App ex:maintenanceContract-&gt;?MC] )) 
</code>
<br/>
</p> 
<p>This gives him a uniform view that links from business processes through to the IT and finance data. Vlad publishes these rules so that other people across the company can reuse them to construct similar views. 
</p><p><br/>
</p>
</div></div></div><div>
<a name="BPEL_Orchestration_of_Rule-Based_Web_Services"/><h3> <span class="mw-headline">4.9  BPEL Orchestration of Rule-Based Web Services </span></h3>
<div><div dir="ltr" lang="en"> 
<p>Rule-based Web services depend on the use of XML data for their request and response format. The involved rules must be able to access and compare XML data in their conditions and modify and generate XML data in their actions. 
</p><p>An existing commercial credit approval service deployed as a Web service takes an applicant credit request document as input and returns an approval or denial (with reason). It is implemented as a BPEL orchestration of two Web services -- a credit history providing service and a decision service containing a rules engine. BPEL first passes the credit request document to the decision service to determine, using rules, whether enough information (SSN, mother's maiden name, etc.) is available to request a credit history. If so, BPEL then requests a credit history from the history providing service and passes the credit history document to the decision service to be evaluated. Based on the evaluation, credit is approved or denied. 
</p><p>Because the rule engine is part of a Web service, existing BPEL diagramming and execution facilities can be used to integrate rules into this credit approval service. The credit evaluation model can be changed easily using GUI tools to customize rules. Use of RIF would improve the situation further. First, the credit history vendor could supply a default set of rules for evaluating its histories. Second, there would be several rule editing and customization tools from different RIF compatible vendors to tailor the rules to meet specific business objectives. 
</p><p>The credit evaluation rules are themselves grouped into three rulesets that are executed sequentially. Rules in the first ruleset apply thresholds to several "red flag" quantities in the credit report, such as: 
</p>
<ul><li> number of times a payment was 60 days late 
</li><li> debt-to-income ratio 
</li><li> number of foreclosures or repossessions 
</li><li> number of garnishments 
</li><li> number of liens 
</li><li> bankruptcy 
</li></ul>
<p>A red flag above the threshold results in denial of credit. 
</p><p>Rules in the second ruleset increment a credit score variable. For example: 
</p>
<pre width="130">
 If applicant owns residence then add 40.
 If applicant rents then add 30.
 If applicant has lived at current address 2 to 4 years then add 20.
 If applicant's income is under 20000 then add 10.
 If applicant's income is between 40000 and 50000 then add 40.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;">Document(<br/>
<br/>
  Prefix(pred <a class="external free" href="http://www.w3.org/2007/rif-builtin-predicate#" title="http://www.w3.org/2007/rif-builtin-predicate#">http://www.w3.org/2007/rif-builtin-predicate#</a>)<br/>
  Prefix(func <a class="external free" href="http://www.w3.org/2007/rif-builtin-function#" title="http://www.w3.org/2007/rif-builtin-function#">http://www.w3.org/2007/rif-builtin-function#</a>)<br/>
  Prefix(prolog_func http://example.org/2007/rif-prolog-builtin-function#)
  Prefix(ex   http://example.org/example#)<br/>
<br/>
  Group<br/>
  (<br/>
     ex:score(0)<br/>
 <br/>
     ex:score(?Applicant&nbsp;?Score)&nbsp;:-<br/>
      ex:increment(?Applicant)<br/>
      ex:score(?Score)<br/>
      prolog_func:retract(ex:score(?Score))<br/>
      prolog_func:assert(ex:score(0)).   <br/>
 <br/>
 ex:increment(?Applicant)&nbsp;:-   <br/>
   ex:owns(?Applicant)<br/>
   ex:score(?Score)<br/>
   prolog_func:retract(ex:score(?Score))<br/>
  &nbsp;?NewScore =&nbsp;?Score + 40<br/>
   prolog_func:assert(ex:score(?NewScore)).<br/>
 <br/>
 ex:increment(?Applicant):-   <br/>
   ex:rents(?Applicant)<br/>
   ex:score(?Score)<br/>
   ex:retract(score(?Score))<br/>
  &nbsp;?NewScore =&nbsp;?Score + 30<br/>
   prolog_func:assert(score(?NewScore)).<br/>
 <br/>
 ex:increment(?Applicant):-<br/>
   ex:lives(?Applicant&nbsp;?Date),<br/>
   $sysTime(?CurrentDateTime)<br/>
  &nbsp;?CurrentYear = $fn:year-from-dateTime(?CurrentDateTime)<br/>
  &nbsp;?Year = $fn:year-from-dateTime(?Date)<br/>
  &nbsp;?Diff =&nbsp;?CurrentYear -&nbsp;?Year<br/>
  &nbsp;?Diff &gt; 1<br/>
  &nbsp;?Diff &lt; 5<br/>
   ex:score(?Score)<br/>
   prolog_func:retract(score(?Score))<br/>
  &nbsp;?NewScore =&nbsp;?Score + 20<br/>
   prolog_func:assert(ex:score(?NewScore)).<br/>
 <br/>
 ex:increment(?Applicant):-   <br/>
   ex:income(?Applicant&nbsp;?Income)<br/>
  &nbsp;?Income &lt; 20000<br/>
   ex:score(?Score)<br/>
   prolog_func:retract(score(?Score))<br/>
  &nbsp;?NewScore =&nbsp;?Score + 10<br/>
   prolog_func:assert(ex:score(?NewScore)).<br/>
 <br/>
 ex:increment(?Applicant):-<br/>
   ex:income(?Applicant&nbsp;?Income)<br/>
  &nbsp;?Income &lt; 50000<br/>
  &nbsp;?Income &gt; 40000<br/>
   ex:score(?Score)<br/>
   prolog_func:retract(ex:score(?Score))<br/>
  &nbsp;?NewScore =&nbsp;?Score + 40<br/>
   prolog_func:assert(ex:score(?NewScore)).<br/>
</code>
<br/>A goal-driven solution with makes use of assert and retract (not supported by BLD) to update a global score value, which is stored in a fact.
</p> 
<p>The third and final ruleset compares the applicant's credit score and income to threshold values, and makes the final decision to approve or deny credit to the applicant. 
</p><p>The decision and supporting rationale is returned from the decision service as an XML document. This decision document is then used to construct the reply to the original credit approval request. 
</p>
</div></div></div><div>
<a name="Publishing_Rules_for_Interlinked_Metadata"/><h3> <span class="mw-headline">4.10  Publishing Rules for Interlinked Metadata </span></h3>
<div><div dir="ltr" lang="en"> 
<p>The Semantic Web includes technologies (e.g., RDF) that allow metadata to be published in machine-readable form. Currently, this information is mostly enumerated as a set of facts. It is often desirable, however, to supplement such facts with rules that <i>capture implicit knowledge</i>. To maximize the usefulness of such published rules, a standard rule format such as RIF is necessary. 
</p><p>One case involves extending current standards for metadata publication with rules in order to express implicit knowledge. Suppose that the International Movie Database (IMD) publishes its metadata and rules in a machine readable format at http://imd.example.org. Besides the ground facts, which can be expressed in RDF, the metadata might also have general rules like the following: 
</p>
<pre width="130">
 Every science fiction movie is a movie.
 Every movie produced before 1930 is black and white.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD (Abridged) Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;">&nbsp;?Movie#ex:Movie&nbsp;:-<br/>
   &nbsp;?Movie#ex:ScienceFictionMovie.<br/>
 <br/>
 ?Movie#ex:BlackWhiteMovie&nbsp;:-<br/>
   &nbsp;?Movie#ex:Movie[ex:date -&gt;&nbsp;?Date]<br/>
   &nbsp;?Date &lt; "1930"^^xs:dateTime.<br/>
</code>
<br/>
</p>  
<p>Such rules allow data to be published more concisely by expressing knowledge that, without these rules, is implicit. This can greatly simplify the maintenance of data, guard against inadvertently introduced inconsistencies, and reduce storage requirements. 
</p><p>Published rules also allow combining data from different sources to exploit this knowledge. Consider an alternative database of movies published at http://altmd.example.org. In addition to metadata, it again publishes its own rules: 
</p>
<pre width="130">
 All movies listed at http://altmd.example.org but not listed at http://imd.example.org are independent movies.
 All movies with budgets below 5 million USD are low-budget movies.
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD (Abridged) Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;">&nbsp;?Movie#ex:IndependentMovie&nbsp;:-<br/>
    listed(?Movie#ex:Movie,&lt;http://altmd.example.org&gt;)<br/>
    not(listed(?Movie#ex:Movie,&lt;http://imd.example.org&gt;)). 	<br/>
 <br/>
 ?Movie#ex:LowBudgetMovie&nbsp;:-<br/>
   &nbsp;?Movie#ex:Movie [date -&gt;&nbsp;?Date, budget -&gt;&nbsp;?Budget]<br/>
   &nbsp;?Budget &lt; 5000000^^xs:long.<br/>
</code>
<br/>
</p>  
<p>Publication of rules with explicit references to other rulesets allows the definition of knowledge dependent on explicitly specified remote sources. Such explicitly specified <i>scope</i> is important in the Web environment, since it can reduce the danger of unintended interference from rules published at other remote sources, which may be exporting their own predicates. 
</p><p>Another example of such explicit referencing, which also illustrates implicit person-centric metadata, involves published rules being used to specify how to use other metadata, e.g. in the form of a widespread vocabulary such as FOAF or a standard exchange format like iCalendar. For example, FOAF user Charlie might choose to complement his normal FOAF profile with his preferences about which of his phone numbers should be used depending on his iCalendar schedule: 
</p>
<pre width="130">
 If Charlie is currently attending a public talk according to http://charlie.example.org/calender.ical
     then leave him a voicemail message
 
 If Charlie is currently in a meeting according to http://charlie.example.org/calender.ical
   and the importance is high
     then call his cell number
 
 If Charlie currently has no appointments according to http://charlie.example.org/calender.ical
     then call his office number
</pre>
<p class="rif" style="display:none">
<b class="syntax-head"></b>
Representation in RIF BLD (Abridged) Presentation Syntax using relations:<br/> 
<br/>
<code style="white-space: pre;"> contactInfo("Charlie"&nbsp;?ContactInfo)&nbsp;:-<br/>
    sysTime(?Time)<br/>
    attending("Charlie" "talk"&nbsp;?Time)<br/>
    contact("Charlie" "voicemail"&nbsp;?ContactInfo).<br/>
 <br/>
 contactInfo("Charlie"&nbsp;?ContactInfo)&nbsp;:-<br/>
    sysTime(?Time)<br/>
    attending("Charlie" "meeting"&nbsp;?Time)<br/>
    contact("Charlie" "cell number"&nbsp;?ContactInfo).<br/>
 <br/>
 contactInfo("Charlie",&nbsp;?ContactInfo)&nbsp;:-<br/>
    sysTime(?Time),<br/>
    not(attending("Charlie",?Event,&nbsp;?Time)),<br/>
    contact("Charlie", "office number",&nbsp;?ContactInfo).<br/>
 <br/>
 <br/>
 sysTime(?Time)&nbsp;:-<br/>
   &nbsp;% get the actual system time e.g. via a built-in<br/>
   &nbsp;% or procedural attachment call to Java or C++.<br/>
   &nbsp;?Time = External(call(java.util.Calendar().getInstance())).<br/>
 <br/>
 <br/>
 attending("Charlie","talk",&nbsp;?CurrentTime)&nbsp;:-<br/>
   &nbsp;% getEventData would implement the functionality to dynamically access and query<br/>
   &nbsp;% http://charlie.example.org/calender.ical<br/>
    getEventData(&lt;http://charlie.example.org/calender.ical&gt;,?EventTitle,?Type,?StartDate,?EndDate),<br/>
   &nbsp;?Type = "talk",<br/>
    External(op:dateTime-less-than(?CurrentTime,?EndDate),<br/>
    External(op:dateTime-greater-than(?CurrentTime,?StartDate).<br/>
<br/>        
<br/> 
 attending("Charlie","meeting",&nbsp;?CurrentTime)&nbsp;:-<br/>
    getEventData(&lt;http://charlie.example.org/calender.ical&gt;,?EventTitle,?Type,?StartDate,?EndDate),<br/>
   &nbsp;?Type = "meeting",<br/>
    External(op:dateTime-less-than(?CurrentTime,?EndDate),<br/>
    External(op:dateTime-greater-than(?CurrentTime,?StartDate).<br/>
<br/>       
 <br/>
 <br/>
 contact("Charlie", "voicemail",&nbsp;?ContactInfo)&nbsp;:-<br/>
   &nbsp;% retrieve the Voice mail number, e.g. from<br/>
   &nbsp;% Charlie's vCard, <br/>
   &nbsp;% e.g. xmlns:vCard = "http://www.w3.org/2001/vcard-rdf/3.0#"<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard:FN&gt; -&gt; "Charlie"],<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard_TEL&gt; -&gt;&nbsp;?Telephone],<br/>
   &nbsp;?Telephone[&lt;rdf:type&gt; -&gt; &lt;http://www.w3.org/2001/vcard-rdf/3.0#voice&gt;],<br/>
   &nbsp;?Telephone[&lt;rdf_value&gt; -&gt;&nbsp;?ContactInfo].<br/>
 <br/>
 contact("Charlie", "cell number",&nbsp;?ContactInfo)&nbsp;:-<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard:FN&gt; -&gt; "Charlie"],<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard_TEL&gt; -&gt;&nbsp;?Telephone],<br/>
   &nbsp;?Telephone[&lt;rdf:type&gt; -&gt; &lt;http://www.w3.org/2001/vcard-rdf/3.0#cell&gt;],<br/>
   &nbsp;?Telephone[&lt;rdf_value&gt; -&gt;&nbsp;?ContactInfo].<br/>
 <br/>
 contact("Charlie", "office number",&nbsp;?ContactInfo)&nbsp;:-<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard:FN&gt; -&gt; "Charlie"],<br/>
    &lt;http://charlie.example.org/vCard&gt;[&lt;vCard_TEL&gt; -&gt;&nbsp;?Telephone],<br/>
   &nbsp;?Telephone[&lt;rdf:type&gt; -&gt; &lt;http://www.w3.org/2001/vcard-rdf/3.0#work&gt;],<br/>
   &nbsp;?Telephone[&lt;rdf_value&gt; -&gt;&nbsp;?ContactInfo]. <br/>
 </code>
<br/>
</p>  
<p><br/>
RIF should allow extending current standards for metadata publication by enabling such implicit knowledge to be captured via rules and allowing metadata and rules distributed over different sources to be interlinked. In a manner similar to how HTML links human-readable Web pages, RIF should permit linking metadata on the Web to support new kinds of "intelligent" crawling and search. 
</p>
<hr/>
<p><br/>
</p>
</div></div></div></div><div>
<a name="Requirements"/><h2> <span class="mw-headline">5  Requirements </span></h2>
<p><span class="anchor" id="req-semantic-tagging"/> 
</p>
<div><div dir="ltr" lang="en"> 
<p>The goals and use cases motivate a number of requirements for a Rule Interchange Format. The Working Group has currently approved the following requirements.  
</p><p>Requirements listed as "General" are deemed to be fundamental properties which need to be fully covered by the currently specified RIF dialects. Basic requirements for a Rule Interchange Format are motivated by specific use cases. 
</p>
<a name="General"/><h3> <span class="mw-headline">5.1  General </span></h3>
<p><span class="anchor" id="req-implementability"/> 
</p>
<a name="Implementability"/><h4> <span class="mw-headline">5.1.1  Implementability </span></h4>
<p><i>RIF must be implementable using well understood techniques, and should not require new research in e.g. algorithms or semantics in order to implement translators.</i> 
</p><p><span class="anchor" id="req-semantic-precision"/> 
</p>
<a name="Semantic_precision"/><h4> <span class="mw-headline">5.1.2  Semantic precision </span></h4>
<p><i>RIF core must have a clear and precise syntax and semantics. Each standard RIF dialect must have a clear and precise syntax and semantics that extends RIF core.</i> 
</p><p><span class="anchor" id="req-extensible"/> 
</p>
<a name="Extensible_Format"/><h4> <span class="mw-headline">5.1.3  Extensible Format </span></h4>
<p><i>It must be possible to create new RIF dialects which extend existing dialects (thus providing backward compatibility) and are handled gracefully by systems which support existing dialects (thus providing forward compatibility).</i> 
</p><p><span class="anchor" id="req-translators"/>
</p>
<a name="Translators"/><h4> <span class="mw-headline">5.1.4  Translators </span></h4>
<p><i>For every standard RIF dialect it must be possible to implement translators between rule languages covered by that dialect and RIF without changing the rule language.</i> 
</p><p><span class="anchor" id="req-standard-components"/> 
</p>
<a name="Standard_components"/><h4> <span class="mw-headline">5.1.5  Standard components </span></h4>
<p><i>RIF implementations must be able to use standard support technologies such as XML parsers and other parser generators, and should not require special purpose implementations when reuse is possible.</i> 
</p><p><span class="anchor" id="req-coverage"/> 
</p>
<a name="Rule_language_coverage"/><h4> <span class="mw-headline">5.1.6  Rule language coverage </span></h4>
<p><i>Because of the great diversity of rule languages, no one interchange language is likely to be able to bridge between all. Instead, RIF provides dialects which are each targeted at a cluster of similar rule languages. RIF must allow intra-dialect interoperation, i.e. interoperability between semantically similar rule languages (via interchange of RIF rules) within one dialect, and it should support inter-dialect interoperation, i.e. interoperation between dialects with maximum overlap.</i>
</p>
<a name="Basic_Requirements"/><h3> <span class="mw-headline">5.2  Basic Requirements </span></h3>
<p><span class="anchor" id="req-compliance-model"/> 
</p>
<a name="Compliance_model"/><h4> <span class="mw-headline">5.2.1  Compliance model </span></h4>
<p><i>The RIF specifications must provide clear conformance criteria, defining what is or is not a conformant RIF implementation.</i> 
</p><p><span class="anchor" id="req-default-behavior"/>
</p>
<a name="Default_behavior"/><h4> <span class="mw-headline">5.2.2  Default behavior </span></h4>
<p><i>RIF must specify at the appropriate level of detail the default behavior that is expected from a RIF compliant application that does not have the capability to process all or part of the rules described in a RIF document, or it must provide a way to specify such default behavior.</i> 
</p><p><span class="anchor" id="req-different-semantics"/> 
</p>
<a name="Different_semantics"/><h4> <span class="mw-headline">5.2.3  Different semantics </span></h4>
<p><i>RIF must cover rule languages having different semantics.</i> 
</p><p><span class="anchor" id="req-dialects"/> 
</p>
<a name="Limited_number_of_dialects"/><h4> <span class="mw-headline">5.2.4  Limited number of dialects </span></h4>
<p><i>RIF must have a standard core and a limited number of standard dialects based upon that core.</i> 
</p><p><span class="anchor" id="req-comments"/> 
</p>
<a name="Embedded_comments"/><h4> <span class="mw-headline">5.2.5  Embedded comments </span></h4>
<p><i>RIF must be able to pass comments.</i> 
</p><p><span class="anchor" id="req-metadata"/> 
</p>
<a name="Embedded_metadata"/><h4> <span class="mw-headline">5.2.6  Embedded metadata </span></h4>
<p><i>RIF must support metadata such as author and rule name.</i> 
</p><p><span class="anchor" id="req-owl-data"/> 
</p>
<a name="OWL_data"/><h4> <span class="mw-headline">5.2.7  OWL data </span></h4>
<p><i>RIF must cover OWL knowledge bases as data where compatible with RIF semantics.</i> 
</p><p><span class="anchor" id="req-rdf-data"/>
</p>
<a name="RDF_data"/><h4> <span class="mw-headline">5.2.8  RDF data </span></h4>
<p><i>RIF must cover RDF triples as data where compatible with RIF semantics.</i> 
</p><p><span class="anchor" id="req-dialect-identification"/>
</p>
<a name="Dialect_Identification"/><h4> <span class="mw-headline">5.2.9  Dialect Identification </span></h4>
<p><i>The semantics of a RIF document must be uniquely determined by the content of the document, without out-of-band data.</i> 
</p><p><span class="anchor" id="req-xml-syntax"/>
</p>
<a name="XML_syntax"/><h4> <span class="mw-headline">5.2.10  XML syntax </span></h4>
<p><i>RIF must have an XML syntax as its primary normative syntax.</i> 
</p><p><span class="anchor" id="req-xml-types"/> 
</p>
<a name="XML_types"/><h4> <span class="mw-headline">5.2.11  XML types </span></h4>
<p><i>RIF must support an appropriate set of scalar datatypes and associated operations as defined in XML Schema part 2 and associated specifications.</i> See the charter on <a class="external text" href="http://www.w3.org/2005/rules/wg/charter#datatype0" title="http://www.w3.org/2005/rules/wg/charter#datatype0">Datatype support</a>. 
</p><p><span class="anchor" id="req-merge"/> 
</p>
<a name="Merge_Rule_Sets"/><h4> <span class="mw-headline">5.2.12  Merge Rule Sets </span></h4>
<p><i>RIF must support the ability to merge rule sets.</i> 
</p><p><span class="anchor" id="req-rulesets"/>
</p>
<a name="Identify_Rule_Sets"/><h4> <span class="mw-headline">5.2.13  Identify Rule Sets </span></h4>
<p><i>RIF must support the identification of rule sets.</i>  
</p><p><span class="anchor" id="req-xml-data"/> 
</p>
<a name="XML_data"/><h4> <span class="mw-headline">5.2.14  XML data </span></h4>
<p><i>RIF should be able to accept XML elements as data.</i> 
</p><p><span class="anchor" id="req-rif-text"/> 
</p>
<a name="Internationalized_text"/><h4> <span class="mw-headline">5.2.15  Internationalized text </span></h4>
<p><i>RIF must support internationalized text &mdash; that is, text that additionally conveys information in terms of a language tag.</i>
</p>
</div></div></div><div>
<a name="Conclusion"/><h2> <span class="mw-headline">6  Conclusion </span></h2>
<div><div dir="ltr" lang="en"> 
<p>The goal of the RIF working group is to provide representational interchange formats for processes based on the use of rules and rule-based systems. These formats act as "interlingua" to interchange rules and integrate with other languages, in particular (Semantic) Web mark-up languages. 
</p><p>As can be seen by studying the use-cases presented in this document, rules are used to perform a wide variety of tasks, and, therefore, rule-based systems are not monolithic. Rules have been used to perform or validate inference, perform calculations, direct the flow of information, enforce integrity constraints on databases, represent and enforce policies, control devices and processes in real-time, determine the need for human intervention, and so on. 
</p><p>In light of this diversity the working group expects that RIF, rather than being a single all-encompassing format, will consist of several dialects, each dialect serving a particular set of related rule languages. The key idea is to attain the goal of interoperability (via interchange of RIF rules) <i>within</i> each dialect. This should allow the main benefits of RIF to be realized. For example, the invariant meaning of a set of integrity-constraint-enforcing rules would be represented within the appropriate RIF dialect and could then be translated into the native format of any of the formalisms capable of representing such rules. 
</p><p>RIF must be designed in such a way that it is possible to create new dialects (extensibility) according to the overall goals and the general requirements of RIF, as well as to update existing dialects (upwardly compatible). This is in keeping with the working group charter's call for an extensible format. Other requirements on the framework, and RIF as a whole, are included in this document. 
</p><p>Achieving <i>inter</i>-dialect interoperability is, by its very nature, an ill-constrained problem since, by definition, 100% meaning-preserving translations between dialects with different semantics are not likely to exist in most cases. That is not to say that useful inter-dialect "translation" is impossible, only that additional criteria are required in order to formulate precise notions of what satisfactory translation (via interchange of RIF rules) amounts to in such cases. Developing criteria for understanding and managing RIF inter-dialect translations is not within the current phase of RIF working group activity. 
</p>
</div></div></div>
<p><br/>
</p>
</div><div>
<a name="References"/><h2> <span class="mw-headline">7  References </span></h2>
<div><div dir="ltr" lang="en"> 
<p><span class="anchor" id="event-calculus"/> 
</p>
<dl><dt> [KS86]
</dt><dd> Kowalski, R.A. and M.J. Sergot, <i>A logic-based calculus of events. New Generation Computing, 1986. 4: p. 67-95.</i>
</dd></dl>
<p><span class="anchor" id="ref-rif-dtb"/>
</p>
<dl><dt> [RIF-DTB]
</dt><dd><span><cite><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-dtb-20081218/">RIF Datatypes and Built-Ins 1.0</a></cite> Axel Polleres, Harold Boley, Michael Kifer, eds. W3C Working Draft, 18 December 2008, <a class="external free" href="http://www.w3.org/TR/2008/WD-rif-dtb-20081218/">http://www.w3.org/TR/2008/WD-rif-dtb-20081218/</a>.  Latest version available at <a class="external free" href="http://www.w3.org/TR/rif-dtb/">http://www.w3.org/TR/rif-dtb/</a>.</span></dd></dl>
<p><span class="anchor" id="ref-rif-bld"/>
</p>
<dl><dt> [RIF-BLD]
</dt><dd><span><cite><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-bld-20080730/">RIF Basic Logic
Dialect</a></cite> Harold Boley, Michael Kifer, eds. W3C Working Draft, 30 July 2008, <a class="external free" href="http://www.w3.org/TR/2008/WD-rif-bld-20080730/">http://www.w3.org/TR/2008/WD-rif-bld-20080730/</a>.  Latest version available at <a class="external free" href="http://www.w3.org/TR/rif-bld/">http://www.w3.org/TR/rif-bld/</a>.</span></dd></dl>
<p><span class="anchor" id="ref-rif-prd"/>
</p>
<dl><dt> [RIF-PRD]
</dt><dd><span><cite><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-prd-20081218/">RIF Production
Rule Dialect</a></cite> Christian de Sainte Marie, Adrian Paschke, Gary Hallmark, eds. W3C Working Draft, 18 December 2008, <a class="external free" href="http://www.w3.org/TR/2008/WD-rif-prd-20081218/">http://www.w3.org/TR/2008/WD-rif-prd-20081218/</a>.  Latest version available at <a class="external free" href="http://www.w3.org/TR/rif-prd/">http://www.w3.org/TR/rif-prd/</a>.</span></dd></dl>
<p><span class="anchor" id="ref-rif-swc"/>
</p>
<dl><dt> [RIF-RDF+OWL]
</dt><dd><span><cite><a class="external text" href="http://www.w3.org/TR/2008/WD-rif-rdf-owl-20080730/">RIF RDF and OWL
Compatibility</a></cite> Jos de Bruijn, editor. W3C Working Draft, 30 July 2008, <a class="external free" href="http://www.w3.org/TR/2008/WD-rif-rdf-owl-20080730/">http://www.w3.org/TR/2008/WD-rif-rdf-owl-20080730/</a>.  Latest version available at <a class="external free" href="http://www.w3.org/TR/rif-rdf-owl/">http://www.w3.org/TR/rif-rdf-owl/</a>.</span></dd></dl>
<p><br/>
</p>
</div></div></div></div>


</body>
</html>