This file is indexed.

/usr/share/Yap/clpbn/xbif.yap is in yap 5.1.3-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
%
% XMLBIF support for CLP(BN)
%

:- module(xbif, [clpbn2xbif/3]).

:- use_module(library('clpbn/dists'), [
	get_dist_domain/2]).

clpbn2xbif(Stream, Name, Network) :-
	format(Stream, '<?xml version="1.0" encoding="US-ASCII"?>


<!--
	Bayesian network in XMLBIF v0.3 (BayesNet Interchange Format)
	Produced by CLP(BN)
-->



<!-- DTD for the XMLBIF 0.3 format -->
<!DOCTYPE BIF [
	<!ELEMENT BIF ( NETWORK )*>
	      <!ATTLIST BIF VERSION CDATA #REQUIRED>
	<!ELEMENT NETWORK ( NAME, ( PROPERTY | VARIABLE | DEFINITION )* )>
	<!ELEMENT NAME (#PCDATA)>
	<!ELEMENT VARIABLE ( NAME, ( OUTCOME |  PROPERTY )* ) >
	      <!ATTLIST VARIABLE TYPE (nature|decision|utility) "nature">
	<!ELEMENT OUTCOME (#PCDATA)>
	<!ELEMENT DEFINITION ( FOR | GIVEN | TABLE | PROPERTY )* >
	<!ELEMENT FOR (#PCDATA)>
	<!ELEMENT GIVEN (#PCDATA)>
	<!ELEMENT TABLE (#PCDATA)>
	<!ELEMENT PROPERTY (#PCDATA)>
]>

<BIF VERSION="0.3">
<NETWORK>
<NAME>~w</NAME>

<!-- Variables -->',[Name]),
	output_vars(Stream, Network),
	output_dists(Stream, Network),
	format(Stream, '</NETWORK>
</BIF>
',[]).

output_vars(_, []).
output_vars(Stream, [V|Vs]) :-
	output_var(Stream, V),
	output_vars(Stream, Vs).

output_var(Stream, V) :-
	clpbn:get_atts(V,[key(Key),dist(Id,_)]),
	get_dist_domain(Id, Domain),
	format(Stream, '<VARIABLE TYPE="nature">
	<NAME>',[]),
	output_key(Stream,Key),
	format('</NAME>~n',[]),
	output_domain(Stream, Domain),
	format(Stream, '</VARIABLE>~n~n',[]).

output_domain(_, []).
output_domain(Stream, [El|Domain]) :-
	format(Stream, '	<OUTCOME>~q</OUTCOME>~n',[El]),
	output_domain(Stream, Domain).

output_dists(_, []).
output_dists(Stream, [V|Network]) :-
	output_dist(Stream, V),
	output_dists(Stream, Network).


output_dist(Stream, V) :-
	clpbn:get_atts(V,[key(Key),dist(_,CPT,Parents)]),
	format(Stream, '<DEFINITION>
	<FOR>',[]),
	output_key(Stream, Key),
	format('</FOR>~n',[]),
	output_parents(Stream,Parents),
	output_cpt(Stream,CPT),
	format(Stream, '</DEFINITION>~n~n',[]).

output_parents(_,[]).
output_parents(Stream,[P1|Ps]) :-
	clpbn:get_atts(P1,[key(Key)]),
	format(Stream, '<GIVEN>',[]),
	output_key(Stream,Key),
	format('</GIVEN>~n',[]),
	output_parents(Stream,Ps).

output_cpt(Stream,CPT) :-
	format(Stream, '	<TABLE> ', []),
	output_els(Stream, CPT),
	format(Stream, '</TABLE>~n', []).

output_els(_, []).
output_els(Stream, [El|Els]) :-
	format(Stream,'~f ',[El]),
	output_els(Stream, Els).

output_key(Stream, Key) :-
	output_key(Stream, 0, Key).

output_key(Stream, _, Key) :-
	primitive(Key), !,
	write(Stream, Key).
output_key(Stream, I0, Key) :-
	Key =.. [Name|Args],
	write(Stream, Name),
	I is I0+1,
	output_key_args(Stream, I, Args).

output_key_args(_, _, []).
output_key_args(Stream, I, [Arg|Args]) :-
	format(Stream, '~*c', [I,0'_]),
	output_key(Stream, I, Arg),
	output_key_args(Stream, I, Args).