To jest stara wersja strony!


API

Wersja 1 - płaska struktura

delete(A, [A|B], B).
delete(B, [A|C], [A|D]) :-
        delete(B, C, D).
 
add(A, B, [A|B]).
 
 
make_node(Name,List) :-
        add(element(Name, [], []), [], List),
        X=..List,
        assert(X),
        write(List).
 
make_node(Name, Attr, Cont, List) :-
        add(element(Name, Attr, Cont), [], List),
        X=..List,
        assert(X),
        write(List).
 
add_child(Parent,Child,Nlist):-
	element(Parent,A,C),
	retract(element(Parent,A,C)),
	add(element(Child,[],[]),C,L),
	make_node(Parent,A,L,Nlist).
 
add_child(Parent,Child,Ch_att,Ch_cont,Nlist):-
	element(Parent,A,C),
	retract(element(Parent,A,C)),
	add(element(Child,Ch_att,Ch_cont),C,L),
	make_node(Parent,A,L,Nlist).
 
make_list(List) :-
	bagof(A,element(A,B,C),A),
	L=..A,
	add(element(L,B,C),[],List),
	write(List).
 
save :-
	tell('wiedza.pl'),
	listing(element),
	told.
 
prolog2xml(List,File):-
	tell(File),
	open(File,write,S),
	xml_write(S,List,[]),
	told,
	close(S).
 
----------------------------------
 
add_child(Parent,Child,Nlist):-
	element(Parent,A,C),
	element(Child,Chatt,Chcont),
	retract(element(Parent,A,C)),
	retract(element(Child,Chatt,Chcont)),
	add(element(Child,Chatt,Chcont),C,L),
	make_node(Parent,A,L,Nlist).
 
add_child(Parent,A,Child,Chatt,Nlist):-
	element(Parent,A,C),
	element(Child,Chatt,Chcont),
	retract(element(Parent,A,C)),
	retract(element(Child,Chatt,Chcont)),
	add(element(Child,Chatt,Chcont),C,L),
	make_node(Parent,A,L,Nlist).

Wersja 2

Predykaty pomocnicze

add(A, B, [A|B]).
 
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).
add2end(X,[],[X]).
 
append([], A, A).
append([A|B], C, [A|D]) :-
        append(B, C, D).
 
remove(A, [A|B], B).
remove(B, [A|C], [A|D]) :-
        remove(B, C, D).
 
belongs(*,[]).
belongs(X,[X|_]).
belongs(X,[_|Yogon]) :-
	belongs(X,Yogon).
 
first(E,L) :-
	append([],[E|_],L).
 
take1(1,[X|_],X).
take1(X,[_|T],Z):-
	Y is X-1,
	take1(Y,T,Z).
take(X,L):-
	belongs(X,L),
	assert(X),
	write(X).
 
max([], A, A).
max([H|T], A, M) :- 
	H > A, 
	max(T, H, M).
max([H|T], A, M) :- 
	H =< A, 
	max(T, A, M).

Predykaty związane z nadawaniem id

:- dynamic current_id/2.
 
current_id(hml,0).
current_id(type_set,0).
current_id(property_set,0).
current_id(property,0).
current_id(attref,0).
current_id(attribute_set,0).
current_id(att,0).
current_id(tph,0).
current_id(trans,0).
current_id(ard,0).
current_id(dep,0).
 
id(hml,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['h','m','l','_'|N]),
	string_to_atom(Ids,Id).
 
id(type_set,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['t','y','p','_','s','_'|N]),
	string_to_atom(Ids,Id).
 
id(property_set,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['p','r','p','_','s','_'|N]),
	string_to_atom(Ids,Id).
 
id(property,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['p','r','p','_'|N]),
	string_to_atom(Ids,Id).
 
id(attref,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['a','t','t','_','r','_'|N]),
	string_to_atom(Ids,Id).
 
id(attribute_set,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['a','t','t','_','s','_'|N]),
	string_to_atom(Ids,Id).
 
id(att,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['a','t','t','_'|N]),
	string_to_atom(Ids,Id).
 
id(tph,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['t','p','h','_'|N]),
	string_to_atom(Ids,Id).
 
id(trans,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['t','r','n','_'|N]),
	string_to_atom(Ids,Id).
 
id(ard,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['a','r','d','_'|N]),
	string_to_atom(Ids,Id).
 
id(dep,X,Id):-
	number_chars(X,N),
	string_to_list(Ids,['d','e','p','_'|N]),
	string_to_atom(Ids,Id).
pl/miw/miw08_prolog_xml/prolog_api.1211745928.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0