بســم الله الـرحمــن الرحيــم
السلام عليكم و رحمة الله و بركاته
من دون مقدمات :
أريد بناء ontology بسيطة حول أي موضوع كيف يمكن الاستفادة من java في ذلك و هل من حلول أخرى
لكم جزيل الشكر
بســم الله الـرحمــن الرحيــم
السلام عليكم و رحمة الله و بركاته
من دون مقدمات :
أريد بناء ontology بسيطة حول أي موضوع كيف يمكن الاستفادة من java في ذلك و هل من حلول أخرى
لكم جزيل الشكر
السلام عليكم
هناك مكتبة تدعى jena للتعامل مع الأونتولوجيات المكتوبة بلغات RDF/S و OWL
RDF Tutorial
http://bat710.univ-lyon1.fr/~champin/rdf-tutorial/
Tutorial on OWL
http://www.cs.man.ac.uk/~horrocks/ISWC2003/Tutorial/
Jena
An Introduction to RDF and the Jena RDF API
http://jena.sourceforge.net/tutorial/RDF_API/index.html
Jena Ontology API
أبو خالد السوري
بســم الله الـرحمــن الرحيــم
كل الشكر لك أخ أبو خالد السوري
الرجاء أن تكمل معروفك
أريد مثال بسيط على بناء أنطولوجيا مع الأدوات اللازمة و كل ما لديك عن الموضوع
كل الشكر مرة ثانية
ياليت لو تكتب لنا نبذة اخي سامر عن ontology ؟ (اريدها من وجهه نظرك انت الشخصية وليس من الانترنت)
السلام عليكــم ورحمـة الله وبركاتــه
الأخ العزيز مجلد جديد
هل الغاية من هذا السؤال هي الأستفهام أم الاختبار أم الاستنكار
السلام عليكــم ورحمـة الله وبركاتــه
بســم الله الـرحمــن الرحيــم
الأونتولوجيا هي توصيف رسمي (formal) لمجال معين (domain) من خلال تحديد المفاهيم الخاصة به (concepts) و صفاتها (attributes) و العلاقات بين هذه المفاهيم (relations). تكون المفاهيم عادة منظمة بشكل هرمي (hierarchy) بحسب علاقة التعميم و التخصيص (generalization/specialization) بين هذه المفاهيم. في هذه الهرمية يكون المفهوم الخاص ابناً للمفهوم الأعم منه. مثلاً : "الطالب" هو "إنسان" و "الإنسان" هو "كائن حي" (المفهوم "طالب" هو ابن المفهوم "إنسان" و الذي بدوره ابن المفهوم "كائن حي"). جميع المفاهيم هي ضمناً أبناء للمفهوم "شيء" Thing.
لنأخذ مثال بسيط جداً للأونتولوجيا المبينة بالشكل التالي. هذه الأونتولوجيا تتكون من خمس مفاهيم:
Person, Student, Professor, Diploma, Module
المفهومان Student و Professor هما ابنان للمفهوم Person
المفهوم Person له الواصفات التالية: الاسم personName (من النمط string) و العمر age (من النمط integer) و البريد الالكتروني email (من النمط string)
في الأونتولوجيا صفات الآباء يرثها الأبناء. و بالتالي واصفات Person يرثها أبناؤه Student و Professor ضمنياً.
المفهوم Student يملك واصفة إضافية هي studentNumber .
المفهوم Module يملك الواصفة moduleName . المفهوم Diploma يملك الواصفة diplomaName .
المفهوم Student يرتبط بالمفهوم Diploma من خلال العلاقة enrolledIn (مُسجل في). يسمى المفهوم Student منطلق (domain) العلاقة enrolledIn في حين أن مستقرها (range) هو المفهوم Diploma .
الواصفات أيضاً لها منطلق و مستقر. المنطلق هو المفهوم المالك للواصفة و المستقر هو نمط بيانات هذه الواصفة (datatype).
العلاقة teach تربط بين Professor و Module أي تحدد لكل مدرس المقررات التي يدرسها, بينما العلاقة taughtBy هي معاكسة لها (inverse) و هي تربط بين Module و Professor و تحدد لكل مقرر من هم المدرسون الذين يدرسونه.
أخيراً العلاقة hasModule تربط المفهوم Diploma بالمفهوم Module (تحدد لكل شهادة المقررات التي تتضمنها).
هناك لغات عديدة لوصف الأونتولوجيا. أحدثها و أشهرها و أكثرها استخداماً هي OWL (Web Ontology Language).
http://www.w3.org/TR/owl-features/
لن أدخل في تفاصيل هذه اللغة لأنها واسعة جداً.
أريد فقط الإشارة إلى أن المفهوم يعبر عنه باستخدام owl:Class
الواصفة يعبر عنها باستخدام owl:DatatypeProperty
العلاقة يعبر عنها باستخدام owl:ObjectProperty
علاقة الابن بأبيه يعبر عنها باستخدام rdfs:subClassOf
المنطلق يشار له باستخدام rdfs:domain
و المستقر يشار له باستخدام rdfs:range
owl:FunctionalProperty هي حالة خاصة من العلاقات يكون فيها لكل عنصر من المنطلق مقابل واحد على الأكثر في المستقر (هي نفسها التابع أو الدالة في الرياضيات) .
فيما يلي ترميز الأونتولوجيا السابقة بلغة OWL :
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:my="http://www.something.com/myontology#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:daml="http://www.daml.org/2001/03/daml+oil#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <owl:Ontology rdf:about="http://www.something.com/myontology"/> <owl:Class rdf:about="http://www.something.com/myontology#Student"> <rdfs:subClassOf> <owl:Class rdf:about="http://www.something.com/myontology#Person"/> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:about="http://www.something.com/myontology#Diploma"/> <owl:Class rdf:about="http://www.something.com/myontology#Module"/> <owl:Class rdf:about="http://www.something.com/myontology#Professor"> <rdfs:subClassOf rdf:resource="http://www.something.com/myontology#Person"/> </owl:Class> <owl:ObjectProperty rdf:about="http://www.something.com/myontology#hasModule"> <rdfs:range rdf:resource="http://www.something.com/myontology#Module"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Diploma"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:about="http://www.something.com/myontology#teach"> <owl:inverseOf> <owl:ObjectProperty rdf:about="http://www.something.com/myontology#taughtBy"/> </owl:inverseOf> <rdfs:range rdf:resource="http://www.something.com/myontology#Module"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Professor"/> </owl:ObjectProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#email"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Person"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#studentNumber"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Student"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#diplomaName"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Diploma"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#moduleName"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Module"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#personName"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Person"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:about="http://www.something.com/myontology#age"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> <rdfs:domain rdf:resource="http://www.something.com/myontology#Person"/> </owl:DatatypeProperty> <owl:FunctionalProperty rdf:about="http://www.something.com/myontology#enrolledIn"> <rdfs:domain rdf:resource="http://www.something.com/myontology#Student"/> <rdfs:range rdf:resource="http://www.something.com/myontology#Diploma"/> </owl:FunctionalProperty> </rdf:RDF>
من أشهر الأدوات مفتوحة المصدر لبناء الأونتولوجيا هي Protégé من جامعة ستانفورد - كاليفورنيا
لست هنا بصدد الحديث عن هذه الأداة , و لكن فيما يلي درس تعليمي عنها بشكل مختصر و مفيد:
http://protege.stanford.edu/publications/o...ontology101.pdf
من أجل بناء الأونتولوجيا في java باستخدام مكتبة Jena , يجب أولاً تحميلها من الموقع التالي :
http://jena.sourceforge.net/downloads.html
و من ثم تضمين كل ملفات jar في برنامج الـ java .
فيما يلي برنامج java لبناء الأونتولوجيا السابقة باستخدام Jena :
import java.io.StringWriter;
import com.hp.hpl.jena.ontology.DatatypeProperty;
import com.hp.hpl.jena.ontology.ObjectProperty;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntModelSpec;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.vocabulary.OWL;
import com.hp.hpl.jena.vocabulary.XSD;
public class JenaTest {
public static void main(String[] args) {
OntModel model = ModelFactory.createOntologyModel(OntModelSpec.OWL_DL_MEM);
String uriBase = "http://www.something.com/myontology";
model.createOntology(uriBase);
model.setNsPrefix("my",uriBase+"#");
// create classes
OntClass person = model.createClass(uriBase+"#Person");
OntClass module = model.createClass(uriBase+"#Module");
OntClass diploma = model.createClass(uriBase+"#Diploma");
OntClass student = model.createClass(uriBase+"#Student");
OntClass professor = model.createClass(uriBase+"#Professor");
// set sub-classes
person.addSubClass(student);
person.addSubClass(professor);
// create datatype properties
DatatypeProperty personName = model.createDatatypeProperty(uriBase+"#personName");
personName.setDomain(person); personName.setRange(XSD.xstring);
DatatypeProperty age = model.createDatatypeProperty(uriBase+"#age");
age.setDomain(person); age.setRange(XSD.integer);
DatatypeProperty email = model.createDatatypeProperty(uriBase+"#email");
email.setDomain(person); email.setRange(XSD.xstring);
DatatypeProperty studentNumber = model.createDatatypeProperty(uriBase+"#studentNumber");
studentNumber.setDomain(student); studentNumber.setRange(XSD.xstring);
DatatypeProperty diplomaName = model.createDatatypeProperty(uriBase+"#diplomaName");
diplomaName.setDomain(diploma); diplomaName.setRange(XSD.xstring);
DatatypeProperty moduleName = model.createDatatypeProperty(uriBase+"#moduleName");
moduleName.setDomain(module); moduleName.setRange(XSD.xstring);
// create object properties
ObjectProperty teach = model.createObjectProperty(uriBase+"#teach");
teach.setDomain(professor); teach.setRange(module);
ObjectProperty taughtBy = model.createObjectProperty(uriBase+"#taughtBy");
taughtBy.setDomain(module); taughtBy.setRange(professor);
ObjectProperty enrolledIn = model.createObjectProperty(uriBase+"#enrolledIn");
enrolledIn.setDomain(student); enrolledIn.setRange(diploma);
ObjectProperty hasModule = model.createObjectProperty(uriBase+"#hasModule");
hasModule.setDomain(diploma); hasModule.setRange(module);
// set inverse properties
teach.setInverseOf(taughtBy);
// set functional properties
enrolledIn.setRDFType(OWL.FunctionalProperty);
// write out the model
model.write(System.out,"RDF/XML-ABBREV");
// write the model to a string
StringWriter sw = new StringWriter();
model.write(sw,"RDF/XML-ABBREV");
String owlCode = sw.toString();
// ...
}
}أبو خالد السوري
samer985 كتب:السلام عليكــم ورحمـة الله وبركاتــهالأخ العزيز مجلد جديد
هل الغاية من هذا السؤال هي الأستفهام أم الاختبار أم الاستنكار
:D
لا اخي العزيز ، الغاية ليست الاختبار ولا الاستنكار :)
اردت فقط ان اخذ فكرة بسيطة عن ontology منك انت ، لانه غالبا عندما يسأل احد بمثل هذه النوعية من الاسئلة فان الجواب يكون رابط لموقع او wikipedia ويكون الجواب مفصل جداً ولا استطيع قراءة كاملاً.
فاردت ان اخذ منك اجابة صغيرة عن ontology :)
بســم الله الـرحمــن الرحيــم
مشكور اخ أبو خالد السوري .... بالسوري (الله يعطيك العافيه)
الأخ مجلد جديد وصلك الرد و عذرا على الأسلوب السابق
الأسبوع الماضي ما كان عندي نت و أسف على التأخر في الرد
يتبـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــع
كيف يمكن تكييف مفهوم oop في خدمة ال ontology
هل البرمجة غرضية التوجه هي الأساس الذي بني عليه مفهوم الأنتولوجيا
السلام عليكم
اقتباسكيف يمكن تكييف مفهوم oop في خدمة ال ontologyهل البرمجة غرضية التوجه هي الأساس الذي بني عليه مفهوم الأنتولوجيا
اقتباسOne point to note is that ontology is not equivalent to object-oriented programming. Although the terms in OOP have been derived from research in AI, the OOP environment is suited for programming and is thus built according to programming conventions and practice.
http://www.cs.bilkent.edu.tr/~erayo/ontolo...background.html
بالرغم من أن كلا المفهومين : الأونتولوجيا و البرمجة غرضية التوجه متشابهان من حيث أسلوب النمذجة ..
حيث كليهما يعتمدان على الصفوف و الأغراض و الوراثة ..
إلا أنهما مفهومان مختلفان تماماً .. من حيث الغاية و الهدف و التفاصيل ..
الغاية من الأونتولوجيا هي مجرد توصيف لمجال مفاهيمي معين بشكل مستقل عن أي تطبيق (لا علاقة لها بالبرمجة) .. و بالتالي الهدف منها هو فهم هذا المجال و عناصره بشكل متفق عليه من قبل عدة أطراف ..
البرمجة غرضية التوجه هي أسلوب في البرمجة , و الغاية منها هي بناء البرامج بشكل غرضي التوجه بالاعتماد على تغليف الإجرائيات (الوظائف) في صفوف .. أي أن الهدف هو برنامج .. أي تطبيق .. أي تنفيذ لعمليات معينة ..
في الأونتولوجيا ليس هناك وجود لمفهوم الوظائف أو التنفيذ ..
بل يمكنك اعتبارها نموذج بيانات ساكن (static data model) مبني بشكل واضح و صريح ..
الأونتولوجيا هي أقرب لأن تكون قاعدة بيانات أكثر من أن تكون أسلوب في البرمجة ..
كمبرمج يمكنك تصور الأونتولوجيا على أنها قاعدة بيانات بدون بيانات (أو بكمية صغيرة جداً من البيانات) .. إذ أن الغاية منها توصيف المعلومات و ليس تخزينها ( كقاعدة البيانات) و ليس معالجتها (كالبرمجة) ..
أبو خالد السوري
بســم الله الـرحمــن الرحيــم
ألف شكر الأخ العزيز أبو خالد ... ممكن لمحة عن عملك و شهاداتك .
الرد منطقي و كنت أحاول ايجاد العلاقة بين oop و ontology كمفهوم عام و أسلوب للعمل
ما مدى معرفتك بموضوع الانطولوجيا و منذ متى
هل يوجد لديك تطبيق بسيط يقوم بالاستفادة من الانطولوجيا المبنية سابقا
في protege هل يمكن تصدير الانطولوجيا المبنية الى صيغة jena
عذرا على الاطالة و انتظر الرد
اقتباسممكن لمحة عن عملك و شهاداتك .
http://raji.ghawi.free.fr/index.html
اقتباسما مدى معرفتك بموضوع الانطولوجيا و منذ متى
موضوع رسالة الدكتوراة التي أعمل عليها (من ثلاث سنوات و نصف) هو تعاون نظم المعلومات بالاعتماد على الأونتولوجيا
.. للاطلاع على موضوع البحث يمكنك الإطلاع على المقالة التالية :
http://raji.ghawi.free.fr/files/publications/OWSCIS.pdf
اقتباسهل يوجد لديك تطبيق بسيط يقوم بالاستفادة من الانطولوجيا المبنية سابقا
لا ..
على كل حال .. خذ وقتك في قراءة المقالة التالية للتعرف على الاستخدامات الرئيسية للأونتولوجيا ..
http://ebiz.u-aizu.ac.jp/~paikic/lecture/2...logies-AiAi.pdf
اقتباسفي protege هل يمكن تصدير الانطولوجيا المبنية الى صيغة jena
لا أعتقد ..
هناك محاولات لمكاملة jena مع protégé :
http://protege.stanford.edu/plugins/owl/je...ntegration.html
و لكن هذه المحاولات لا يمكنها تصدير الأونتولوجيا إلى jena
على كل حال يمكنك في protégé الحصول على ترميز الأونتولوجيا بلغة OWL
أبو خالد السوري
ألأخ العزيز أبو خالد بعد التحية و السلام
وجدت مايلي... لذا أرجو الإطلاع و التفضل بالرد و لكم كل التقدير و الاحترام
The table below clarifies concepts used with
object-oriented programming languages and frame-based ontology languages.
Programming languages Ontology languages
software development ontologization
programmer ontologist
class class, category, frame
variable property, attribute, slot, field
object instance, individual
value of variable value of property, attribute, slot, field
type of variable range or facet of property, attribute, slot, field
class that contains the variable domain of property, attribute, slot, field
Ontology-Based Image Annotation and Retrieval
Avril Styrman
و الله شي بيرفع الراس ياابو خالد
أتمنى لكم كل التوفيق
و العودة القريبة إلى الوطن إنشاالله مع شهادة دكتوراه بأحسن تقدير
على فكرة انا طالب سنة خامسة في كلية الهندسة المعلوماتية و أتمنى التواصل الدائم
سلام
تصحيح الرد السابق خطأ في التنسيق
The table below clarifies concepts used with
object-oriented programming languages and frame-based ontology languages.
Programming languages Ontology languages
software development ontologization
programmer ontologist
class class, category, frame
variable property, attribute, slot, field
object instance, individual
value of variable value of property, attribute, slot, field
type of variable range or facet of property, attribute, slot, field
class that contains the variable domain of property, attribute, slot, field
Ontology-Based Image Annotation and Retrieval
Avril Styrman
أين انت يا ابو خالد
أهلاً بك أخي سامر
شكراً لك .. و أنا بدوري أتمنى لك التوفيق في دراستك ..
و أن شاء الله بنشوفك قريباً مهندس قد الدنيا ..
آسف على التأخر في الرد ..
كما هو واضح الكاتب يقابل بين عناصر لغات البرمجة و عناصر لغات الأونتولوجيا ..
تطوير البرمجية يقابل تطوير الأونتولوجيا
المبرمج يقابل مهندس الأونتولوجيا (ontologist)
الصف في البرمجة يقابل المفهوم في الأونتولوجيا (يسمى صف, فئة , أو إطار)
المتحول في البرمجة يقابل الواصفة في الأونتولوجيا (تسمى خاصية, أو حقل)
الأغراض في البرمجة تقابل الأفراد في الأونتولوجيا
قيمة المتحول تقابل قيمة الواصفة
نمط المتحول يقابل مستقر الواصفة
الصف الحاوي للمتحول يقابل منطلق الواصفة
- على ما يبدو ما يقصده الكاتب بالمتحول ليس المتحول بالمعنى العام في البرمجة .. و إنما صفات الصف (attributes) ..
- لم يشر الكاتب في هذه المقارنة إلى العلاقات بين المفاهيم (object properties) ..
هذه العلاقات تقابل في البرمجة الغرضية التوجه الصفة من صفات الصف التي يكون نمطها هو صف آخر ..
بناءاً على ما سبق يمكننا التعبير عن أونتولوجيتنا السابقة بالبرمجة الغرضية التوجه (java) بالشكل التالي :
class Person {
String personName;
int age;
String email;
}
class Student extends Person {
String studentNumber;
Diploma enrolledIn;
}
class Professor extends Person {
Module teach;
}
class Diploma {
String diplomaName;
Module hasModule;
}
class Module {
String moduleName;
Professor taughtBy;
}من الملاحظ أنه ليس هناك في الـ oop ما يسمح بالتعبير عن كون علاقتين متعاكستين ..
مثلاً .. لا يمكننا التعبير أنه إذا كان البروفسور X يدرس المادة Y فإن المادة Y تُدرس من قبل X
بينما يمكننا التعبير عن هذا في الأونتولوجيا باستخدام inverseOf
ينبغي الانتباه أيضاً إلى أن العلاقات بين المفاهيم في الأونتولوجيا هي علاقات متعددة القيم (multi-valued) .. إذا لم يشار إلى عكس ذلك صراحة (single-valued) من خلال التصريح عن العلاقة باستخدام FunctionalProperty بدلاً من ObjectProperty ..
هذا يعني على سبيل المثال أن المدرس X يدرس عدة مواد و ليس مادة واحدة فقط .. و أن المادة Y تدرس من قبل عدة مدرسين و ليس مدرس واحد فقط .. و بالتالي هذا يفرض علينا إعادة كتابة الصفوف السابقة و استبدال الصفات المعبرة عن العلاقات متعددة القيم بمصفوفة أو متجهة ..
class Person {
String personName;
int age;
String email;
}
class Student extends Person {
String studentNumber;
Diploma enrolledIn;
}
class Professor extends Person {
Vector<Module> teach;
}
class Diploma {
String diplomaName;
Vector<Module> hasModule;
}
class Module {
String moduleName;
Vector<Professor> taughtBy;
}ملاحظة أخيرة هي أن لغة OWL ترتكز على فرضية العالم المفتوح (open world assumption) .. أي أننا لا يمكننا افتراض أننا نعرف كل المعلومات عن المجال. و بالتالي عدم توفر معلومة معينة لا يعني نفيها ..
مثلاً إذا لم نكن قادرين على إثبات أن X هو فرد (individual) من الصف Y .. فهذا لا يعني أنه ليس فرداً منه ..
مثال آخر : التصريح عن صفين مختلفين X و Y لا يعني بالضرورة أنهما منفصلان (disjoint) .. ( منفصلين يعني أنهما لا يمتلكان أفراد مشتركة ) ..
في أونتولوجيتنا السابقة لا يمكننا القول أن المدرس لا يمكن أن يكون طالب لأننا لم نصرح أن هذين المفهومين منفصلين
للقيام بذلك (للتصريح أن Professor وStudent مفهومان منفصلان) نستخدم owl:disjointWith
<owl:Class rdf:ID="Professor"> <rdfs:subClassOf rdf:resource="#Person"/> <owl:disjointWith rdf:resource="#Student"/> </owl:Class>
بالمقابل , قواعد البيانات و البرمجة الغرضية التوجه ترتكزان على فرضية العالم المغلق (closed world assumption) أو النفي عند الفشل (negation as failure) .. هذا يعني أننا نفترض أننا نعرف كل المعلومات عن المجال. و بالتالي عدم توفر معلومة معينة يعني نفيها ..
مثلاً في البرمجة , إذا كان x غرضاً من الصف Professor فهذا يعني بشكل افتراضي أنه ليس غرضاً من Student ..
و الله أعلم
أبو خالد السوري
بالمناسبة
ما هي طبيعة العلاقة بين دراستك أو عملك بالأونتولوجيا ؟
أي ماذا تحتاج بالضبط من الأونتولوجيا ؟؟
أبو خالد السوري
جاري الرد....جاري الرد
الخ العزيز أبو خالد
بعد التحية و السلام:
في البداية أنا لا أدافع عن فكرة التطابق بين الأنتولوجيا و البرمجة غرضية التوجهةكل ما احاول
البحث عنه محاولة الاستفادة من المفهوم الغرضي التوجيه لتسهيل فهم الانتولوجيا على المبرمجين
جميعا . فعندما تتحدث عن الانتولوجيا و تشرحها للوهلة الأولى تكون صعبة الفهم و لكن عندما تبني
على معارف الشخص السابقة و التي هي البرمجة غرضية التوجه تبدو الأمور أكثر ألفة.
كما أشرت بداية لست مدافعا ولكن مستفسرا أقول ما قلت و أتمنا منكم الصبر على ضحالة معلوماتي
في هذا الموضوع فقد بدأت به منذ ثلاث أسابيع و نصف...
المثالين المذكورين جميلين و نسهل الفهم على الجميع عندما نقول الأنتولوجيا مشابه للمفهوم غرضي التوجه
و فيها بعض الإضافات مثل التعبير عن علاقتين متعاكسين و التعبير عن العلاقة المتعددة و التي يمكن التغلب
عليها من خلال الوراثة في البرمجة غرضية التوجه....
من خلال معلوماتي المتواضعة في التعليم و التعلم و نظرياتها المتعددة أرى أنه من السهل و الممتع الاستفادة
من معرفة سابقة من اجل اكساب معرفة جديدة و التي تكون على شكل هرم مقلوب...
؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
المهم
هل هناك IDE بيئة تطوير متكاملة تجعلني أكتب أنتولوجي باستخدام rdf و من ثم اترجمها مثل باقي لغات البرمجة
و تدلني على مواقع الخطأ
أي كيف اتعلم rdf وowl من الصفر
أيضا:
كيف يمكن القيام بمساوات و دمج و تكامل و تقسيم ال ontologys
مع كل التقدير...
السلام عليكــم ورحمـة الله وبركاتــة ،،
اقتباسهل هناك IDE بيئة تطوير متكاملة تجعلني أكتب أنتولوجي باستخدام rdf و من ثم اترجمها مثل باقي لغات البرمجةو تدلني على مواقع الخطأ
أي كيف اتعلم rdf وowl من الصفر
(1) مع Protégé يمكنك :
1- بناء أونتولوجيا (rdf أو owl) بشكل يدوي أي إنشاء المفاهيم و العلاقات بينها ..
ثم استعراض الكود ..
2- بناء أونتولوجيا من خلال تحميل كود rdf أو owl مكتوب سلفاً ..
(يمكنك استخدام هذه الطريقة للتدرب على كتابة كود rdf و owl ..
حيث يمكنك التأكد من صحة الكود الذي كتبته من خلال تحميله في protégé )
في كلا الحالاتين يتيح protégé الاستعراض البياني للأونتولوجيا من خلال الـ plugin المسماة Jambalaya
(2) يمكنك كتابة كود rdf في أي محرر نصوص (في notepad مثلاً)
ثم التأكد من صحته .. و معرفة الأخطاء إن وجدت .. من خلال تفحصه online عبر خدمة RDF Validation Service من منظمة W3C
http://www.w3.org/RDF/Validator/
أنصح بالاطلاع على الكتاب التالي .. ففيه كل تفاصيل لغتي RDF و OWL
Ontological Engineering
By: Asuncion Gomez-Perez, Oscar Corcho, Mariano Fernandez-Lopez
ISBN: 1852335513
Publisher: Springer - 2004
انظر الصفحات 62 - 66 و 259 - 267 بخصوص RDF
و الصفحات 75 - 81 و 283 - 294 بخصوص OWL
----
الكتاب التالي قد يكون مفيداً أيضاً (لم أطلع عليه) ..
Practical RDF
By: Shelley Powers
ISBN: 0596002637
Publisher: O'Reilly Media - 2003
------------------------------
يتبع ..
كلمة السر gigapedia
:wink:
أبو خالد السوري
السلام عليكم و رحمة الله و بركاته
أرجو المساعدة في تحميل ال plugin
الـ plugin مدمج مع protégé
لاستعراضه اختر الأمر configure من القائمة project
ثم اختر الـ plugin الذي تريد من التبويب tab widget
أبو خالد السوري
اقتباسكيف يمكن القيام بمساواة و دمج و تكامل و تقسيم ال ontologys
بدأنا ندخل في الجد
هذه المسائل واسعة جداً و لا تزال مفتوحة أمام الباحثين ..
سنستعرض إن شاء الله موضوع مساواة / مقابلة الأونتولوجيا
ontology matching أو ontology mapping
ثم موضوع دمج و تكامل الأونتولوجيا
ontology merging أو ontology integration
أما تقسيم الأونتولوجيا
فلم أسمع بشيء بهذا الاسم !!
تم تعديل هذه المشاركة بواسطة أبو خالد السوري في 4 مارس 2009 في 02:39
أبو خالد السوري
المقابلة بين الأونتولوجيات
ontology matching / ontology mapping
المقابلة بين أونتولوجيتين هي عملية تحديد التوافقات (correspondances) بين المكونات (المفاهيم , الواصفات , العلاقات) المتقاربة دلالياً في هاتين الأونتولوجيتين ..
و بالتالي هي عملية مد جسور دلالية (semantic bridges)
من مكونات الأونتولوجيا الأولى إلى مكونات الأونتولوجيا الثانية ..
كما في الشكل التالي :
عادة ما تكون الغاية من هذه العملية تحويل (transform) أفراد (individuals/instances) أونتولوجيا مصدرية (source ontology) إلى أفراد في أونتولوجيا هدف (target ontology)
للجسر الدلالي عدة أبعاد :
1) البعد الكائناتي (entity dimension) :
يحدد طبيعة الكائنات على طرفي الجسر .. هل هي مفاهيم (جسر بين مفهومين) أم واصفات أم علاقات ..
2) البعد العددي (cardinality dimension)
يحدد عدد الكائنات على طرفي الجسر ..
و بالتالي هناك جسور واحد لواحد (one-to-one) ,
واحد لكثير (one-to-many) , (مثلاً الجسر بين الواصفة name و واصفتين first_name و last_name)
و كثير لكثير (many-to-many)
3) البعد البنيوي (structural dimension)
يحدد طبيعة العلاقة بين الجسر و الجسور الأخرى ..
و التي قد تكون علاقة تخصيص (specialization) (الجسر X حالة خاصة من الجسر Y , أي ابن له)
أو تجريد (abstraction) أو تركيب (composition) (الجسر X مركب من جسرين Y و Z)
4) بعد القيود (constraint dimension)
يحدد طبيعة القيود المطبقة على الجسر (شروط منطقية)
مثلاً الجسر بين X و Y يتم تطبيقه في حال تحقق الشرط Z
5) بعد التحويلات (transformation dimension)
يحدد طبيعة التحويلات (الدوال) المطبقة على طرف الجسر الأول للحصول على الطرف الثاني
مثلاً الجسر الواصل بين الواصفتين temperature في أونتولوجيتين الأولى تعتمد مقياس Fahrenheit و الثانية مقياس Celsius سيحوي دالة التحويل التالية :
Celsius = ( 5 / 9 ) * ( Fahrenheit - 32 )
في الأدبيات , غالبية الطرق المقترحة لحل مشكلة المقابلة بين الأونتولوجيات هي طرق يدوية (manual) ..
أي الوصل اليدوي بين مكونات الأونتولوجيا الأولى و مقابلاتها من مكونات الأونتولوجيا الثانية ..
و القليل منها طرق شبه أوتوماتيكية (semi-automatic)
تبدأ بحساب / تخمين التشابه بين مكونات الأونتولوجيا الأولى و مكونات الأونتولوجيا الثانية ..
هذا التشابه يعتمد على النواحي الدلالية (semantic) و البنيوية (structural) و اللغوية (lexical)
و من ثم اقتراح الجسور الدلالية الممكنة من خلال اختيار ثنائيات المكونات الأكثر تشابهاً ..
هنا يتدخل الخبير لتأكيد أو نفي كل من الجسور المقترحة ..
مراجع
RDFT: A Mapping Meta-Ontology for Business Integration Borys Omelayenko (2002) Ontology Mapping - An Integrated Approach Marc Ehrig and York Sure (2004) MAFRA - An Ontology MApping FRAmework for Distributed Ontologies A Maedche, B Motik, N Silva, R Volz (2002) Service-Oriented Ontology Mapping System Nuno Silva and Joao Rocha (2003) Semantic Web Complex Ontology Mapping Silva N. and Rocha, J. (2003) A Conceptual Modeling Approach for building semantics-driven enterprise applications Motik B., Maedche, A., and Volz, R. (2002) An Instance Mapping Ontology for the Semantic Web Yuangui Lei (2005) Ontology mapping: the state of the art Kalfoglou, Y. and Schorlemmer, M. (2003)
----------------------
يتبع
أبو خالد السوري
التقسيم أو التجزئة هي عملية تحويل أنطولوجي كبيرة إلى عدد من ال ontologys الصغيرة المتخصصة