Không hoàn toàn chắc chắn nếu đây là những gì bạn cần, nhưng bạn có thể dễ dàng thể hiện rằng một lớp có một tập hợp các thuộc tính bằng cách tạo một cấu trúc biểu đồ của sự kiện (xem danh sách các thuộc tính sự kiện bên dưới và quy tắc để tìm các thuộc tính bên trong một bộ).
Sau đó, để thể hiện thành phần của tập hợp thuộc tính đó, bạn cần một tập hợp các sự kiện thành phần và quy tắc phát hiện ra bất kỳ thuộc tính phụ của lớp và kết quả là nó có thể bao gồm.
Tôi cũng đã đưa ra một ví dụ mã bên dưới để giúp giải thích.
property(bird, red_robotic_bird).
property(red, red_robotic_bird).
property(robot, red_robotic_bird).
property(tasty, cake).
property(red_robotic_bird, macaw).
property(Property, Thing) :-
property(PropertySet, Thing),
property(Property, PropertySet).
composition(buttons, red_robotic_bird).
composition(cheese, red_robotic_bird).
composition(wire, red_robotic_bird).
composition(flour, cake).
composition(Material, Thing) :-
property(Property, Thing),
composition(Material, Property).
dụ truy vấn
?- composition(Material, macaw).
Material = buttons ;
Material = cheese ;
Material = wire ;
no
?- composition(buttons, Thing).
Thing = red_robotic_bird ;
Thing = macaw ;
no
?- composition(flour, macaw).
no
?- property(bird, macaw).
yes
?- property(bird, cake).
no
property(Property, macaw).
Property = red_robotic_bird ;
Property = bird ;
Property = red ;
Property = robot ;
no
quy tắc Prolog trong ngắn.
Quy tắc cơ bản chỉ là sự kiện (ví dụ: animal(cat).
) có điều kiện về các quy tắc hoặc sự kiện khác là đúng sự thật. Quy tắc được tạo thành một đầu và một cơ thể (head :- body.
). Một cơ thể là một bằng chứng hợp lý phổ biến nhất được thể hiện trong hình thức bình thường liên kết (A/\ B/\ C). Nhà điều hành và trong prolog là ,
, nhà điều hành hoặc là ;
(nhưng việc sử dụng nó không được khuyến khích trong quy tắc) và khoảng thời gian (.
) biểu thị kết thúc của quy tắc hoặc thực tế. Lưu ý rằng nếu một quy tắc sau đó hoặc thực tế trong cơ thể thất bại thì prolog sẽ quay lại và yêu cầu một câu trả lời thay thế từ một quy tắc hoặc thực tế trước đó và sau đó thử lại. Hãy xem xét ví dụ hơi có phần bên dưới.
share_same_colour (FruitA, FruitB): - màu (Màu sắc, FruitA), màu (Màu, FruitB).
Nếu chúng tôi thực hiện truy vấn share_same_colour(apple, strawberry).
thì colour(Colour, apple).
có thể trả lại Màu là màu lục. Tuy nhiên, không có dâu tây màu xanh lá cây, vì vậy prolog sẽ quay lại và hỏi những màu sắc khác làm táo đến.Câu trả lời tiếp theo có thể là màu đỏ, khi đó câu lệnh màu thứ hai sẽ thành công và toàn bộ quy tắc là đúng.
Dunes là câu trả lời đúng hướng cho bạn? Nếu vậy tôi có thể minh họa bản dịch thành core.logic. – dnolen
Tôi đánh giá cao việc dịch sang core.logic vì tôi không quen thuộc với cú pháp ngôn ngữ khác. Tôi có thể cho anh ta tín dụng mặc dù sau khi trải qua phản ứng. – bmillare