Khác với biểu diễn ontology theo kiểu hình thức, biểu diễn ontology theo kiểu không hình thức gắn bó chặt chẽ với việc xây dựng hệ thống. Theo cách tiếp cận này, các mối quan hệ trong ontology sẽ được định nghĩa rõ ràng bởi các ngôn ngữ riêng, hoặc sử dụng trực tiếp các mối quan hệ sẵn có như lớp-lớp con, lớp-đối tượng-giá trị…trong các ngôn ngữ đó. Có rất nhiều phương pháp biểu diễn ontology không hình thức khác nhau và có thể phân chia thành hai dạng chính:
• Cách biển diễn ontology trực tiếp bằng ngôn ngữ lập trình
• Cách biểu diễn ontology sử dụng các ngôn ngữ riêng
Trong cách biểu diễn thứ nhất, ontology được biểu diễn trực tiếp bằng ngôn ngữ lập trình như Java hay C++. Cách biểu diễn này có ưu điểm là hỗ trợ phát triển nghĩa là có thể sử dụng trực tiếp kết quả biểu diễn cho phát triển các trình ứng dụng và khi đó các thành phần trong hệ thống dễ dàng hiểu được nội dung và cấu trúc của ontology. Để minh hoạ cho cách biểu diễn này, ta xem xét lại ví dụ trong Hình 3.1. Giả sử các lớp UserRequest và Cost đã được định nghĩa trước. Khi đó, các khái niệm HotelRequest, TrainRequest sẽ được định nghĩa thành các lớp, các khái niệm khác sẽ được định nghĩa thành các thuộc tính tương ứng với hai lớp trên và được biểu diễn trong ngôn ngữ Java như sau:
public class HotelRequest extends UserRequest implements java.io.Serializable{ private Cost roomCost;
private int starNumber; private int distance; private boolean internet; public int getroomCost(){
return roomCost; }
public int getstarNumber(){ return starNumber; }
public int getdistance(){ return distance; }
public boolean getinternet(){ return internet;
}
public void setroomCost(Cost newcost){ this.roomCost = newcost;
public void setstarNumber(int newstarNumber){ this.starNumber = newstarNumber;
}
public void setdistance(int newdistance){ this.distance = newdistance;
}
public void setinternet(boolean newinternet){ this.internet = newinternet;
} }
public class TrainRequest extends UserRequest implements java.io.Serializable{ private int possition;
private int timelost; private Cost ticketPrice; public int getpossition(){
return possition; }
public int gettimelost(){ return timelost; }
public int getticketprice(){ return ticketprice; }
public void setpossition(int newpossition){ this.possition = newpossition;
}
public void settimelost(int newtimelost){ this.timelost = newtimelost;
}
public void setticketprice(Cost newprice){ this.ticketprice = newprice;
} }
Như vậy, trong cách biểu diễn ontology theo ngôn ngữ lập trình, các mối quan hệ được định nghĩa theo quan hệ kế thừa và quan hệ lớp - thuộc tính cùng với các hàm trả lại giá trị trong các lớp và thuộc tính đó.
Để hỗ trợ cho phát triển các hệ đa agent trên Internet, nhiều nghiên cứu đã tiến hành và đưa ra các ngôn ngữ dành riêng cho biểu diễn ontology như Topic Maps, RDF, OIL, DAML (xem chi tiết trong [1]). Hầu hết các phương pháp này đều tập trung vào việc biểu diễn các tài nguyên trên Internet thông qua các địa chỉ URL và khi đó các mối quan
hệ giữa các tài nguyên sẽ được cấu trúc giống như mạng ngữ nghĩa trong biểu diễn tri thức.