ontology building

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

ontology building

Jabardi

Hi,

I am PHD student. I try to build ontology about profile account in social network. I need more information about how to building ontology depending on profile activities ( Object properties ) such as ( friends_count, followers_count, hashtags_average, …. Etc) and how many classes are there.

I hope that you will give me a positive response. Thank you in advance

 

Yours sincerely,

JABARDI

 

Sent from Mail for Windows 10

 


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Moh Abdelrahman
Alsalam ALicom Dear Mohammed,
I think this tutorial will be useful as a start to understand how to build ontologies.
 

On Tue, May 21, 2019 at 12:20 AM mohammed.H Naji <[hidden email]> wrote:

Hi,

I am PHD student. I try to build ontology about profile account in social network. I need more information about how to building ontology depending on profile activities ( Object properties ) such as ( friends_count, followers_count, hashtags_average, …. Etc) and how many classes are there.

I hope that you will give me a positive response. Thank you in advance

 

Yours sincerely,

JABARDI

 

Sent from Mail for Windows 10

 

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user


--

Best Regards,

Sincerly,

Mohammad Abdelrahman

- Web Master@Mansoura University, Egypt
- Senior Web Designer
- Master of Information Systems


+201003370697




 

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Michael DeBellis-2
In reply to this post by Jabardi
If you haven't already done so you probably should check out the Friend of a Friend (FOAF) ontology. It's a very famous example that gets used a lot in books and is also used a lot already by various tools. It's an older ontology so (at least the last time I looked at it) it didn't take advantage of some of the more powerful constructs in OWL and was more of an RDF style model but it's so well known I think any ontology you develop related to social networking should at least be aware of it. The Wikipedia article on it is pretty good:  https://en.wikipedia.org/wiki/FOAF_(ontology)    There is also some useful info about it (and other social network ontologies) here:  https://www.w3.org/wiki/Good_Ontologies   And I think this is currently the FOAF project's home page: http://www.foaf-project.org/  You also might want to Google it, there are a lot of articles about it. 

Also, regarding Tutorials, the way you build a basic ontology whether it's for healthcare, genetic engineering, or anything is more or less the same. I think the Protege Pizza tutorial is also something every new user should do in addition to that youtube video. This is a bit old, there may be a more up to date version of the Tutorial if you search for it but this one is still worth doing: 


Just keep in mind in a few cases the UI may look a bit different (e.g., I think it says to edit the "Superclass" field rather than the "SubclassOf" field). If you think it through, it's pretty obvious what to click on in the new UI but if you get stuck feel free to ask. 

Michael

On Mon, May 20, 2019 at 3:20 PM mohammed.H Naji <[hidden email]> wrote:

Hi,

I am PHD student. I try to build ontology about profile account in social network. I need more information about how to building ontology depending on profile activities ( Object properties ) such as ( friends_count, followers_count, hashtags_average, …. Etc) and how many classes are there.

I hope that you will give me a positive response. Thank you in advance

 

Yours sincerely,

JABARDI

 

Sent from Mail for Windows 10

 

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Jabardi
In reply to this post by Moh Abdelrahman
Alsalam ALicom Dear Mohammed,
I know how to use protege and how building ontology.
I need to learn more about translating the attributes which list in my post
to classes, properties and data types.





--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Jabardi
In reply to this post by Michael DeBellis-2
Thanks Michael,
I read many articles and watched many video, the learning progress is very
good, but till now, I have confused between object and datatype attribute,
moreover the reasoner concept.

Regards,
Mohammed



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Michael DeBellis-2
> I have confused between object and datatype attribute,
> moreover the reasoner concept. 

 Mohammed, if you are familiar with traditional entity-relation modeling for relational databases then think of a data property as an attribute and an object property as a relation. Also, for traditional object-oriented modeling an object property is more or less the same as a UML property that has as datatype another class and a data property is a property that has as datatype a basic (non-object) datatype such as a string, an integer, etc. 

Note, that modeling in OWL is different in important ways than these other types of modeling but just to get the basic idea I think those analogies can help. One thing to keep in mind is that there is seldom a right or wrong answer as to how to model things. The property "address" is a good example. For some ontologies you could model a Person's address as data properties with domain of Person and range of string: hasStreet, hasState, hasZip, etc. Or another way to model this would be to make address an object class itself and then there would be an object property from a Person to their Address and the Address class would have the data properties hasStreet, hasState, hasZip, etc. 

The reasoner is an inference engine very much like what you would have in an expert system. The difference is that where as in an expert system the reasoner works primarily on if-then rules with OWL the reasoner works primarily on classifying the ontology. In languages that were precursors to OWL such as Loom and KL-One the reasoner was just called the classifier. But in OWL things get blurry because you can also have SWRL rules that are similar to forward chaining rules in an expert system. The reasoner is also a theorem prover as in logical programming. 

The goals of the reasoner are essentially 2 things: 

1) Make sure the ontology is consistent. I.e., to look at all the definitions about domains, ranges, class restrictions, etc. and make sure that there are no inconsistencies. For example, if I declare the object property hasCar to have domain Person and range Car and then I say that Car1 hasCar Car2 the reasoner will signal an inconsistency because a Car can't own another Car only a Person can.

2) Automatically infer additional information based on the axioms in the ontology. So for example if I declare that isOwnedBy is the inverse property of hasCar (i.e., a Person hasCar some Car and a Car isOwnedBy some Person) then if I declare that Joe hasCar Car1 the reasoner will automatically infer that Car1 isOwnedBy Joe, I won't have to declare that information, the reasoner can automatically infer it based on the definition of what an inverse property is. 

Michael

On Sun, Jun 2, 2019 at 5:24 AM Jabardi <[hidden email]> wrote:
Thanks Michael,
I read many articles and watched many video, the learning progress is very
good, but till now, I have confused between object and datatype attribute,
moreover the reasoner concept.

Regards,
Mohammed



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Jabardi

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Monday, June 3, 2019 5:31 PM
To: [hidden email]
Subject: Re: [protege-user] ontology building

 

> I have confused between object and datatype attribute,

> moreover the reasoner concept. 

 

 Mohammed, if you are familiar with traditional entity-relation modeling for relational databases then think of a data property as an attribute and an object property as a relation. Also, for traditional object-oriented modeling an object property is more or less the same as a UML property that has as datatype another class and a data property is a property that has as datatype a basic (non-object) datatype such as a string, an integer, etc. 

 

Note, that modeling in OWL is different in important ways than these other types of modeling but just to get the basic idea I think those analogies can help. One thing to keep in mind is that there is seldom a right or wrong answer as to how to model things. The property "address" is a good example. For some ontologies you could model a Person's address as data properties with domain of Person and range of string: hasStreet, hasState, hasZip, etc. Or another way to model this would be to make address an object class itself and then there would be an object property from a Person to their Address and the Address class would have the data properties hasStreet, hasState, hasZip, etc. 

 

The reasoner is an inference engine very much like what you would have in an expert system. The difference is that where as in an expert system the reasoner works primarily on if-then rules with OWL the reasoner works primarily on classifying the ontology. In languages that were precursors to OWL such as Loom and KL-One the reasoner was just called the classifier. But in OWL things get blurry because you can also have SWRL rules that are similar to forward chaining rules in an expert system. The reasoner is also a theorem prover as in logical programming. 

 

The goals of the reasoner are essentially 2 things: 

 

1) Make sure the ontology is consistent. I.e., to look at all the definitions about domains, ranges, class restrictions, etc. and make sure that there are no inconsistencies. For example, if I declare the object property hasCar to have domain Person and range Car and then I say that Car1 hasCar Car2 the reasoner will signal an inconsistency because a Car can't own another Car only a Person can.

 

2) Automatically infer additional information based on the axioms in the ontology. So for example if I declare that isOwnedBy is the inverse property of hasCar (i.e., a Person hasCar some Car and a Car isOwnedBy some Person) then if I declare that Joe hasCar Car1 the reasoner will automatically infer that Car1 isOwnedBy Joe, I won't have to declare that information, the reasoner can automatically infer it based on the definition of what an inverse property is. 

 

Michael

 

On Sun, Jun 2, 2019 at 5:24 AM Jabardi <[hidden email]> wrote:

Thanks Michael,
I read many articles and watched many video, the learning progress is very
good, but till now, I have confused between object and datatype attribute,
moreover the reasoner concept.

Regards,
Mohammed



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

 


_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user
Reply | Threaded
Open this post in threaded view
|

Re: ontology building

Michael DeBellis-2
Just FYI, your question is now getting a bit outside the scope of the list. This list is for answering questions about using SWRL and OWL with Protege, what you are asking here is essentially how to design a system which is more of a consulting question. I'm going to give you my reply here in case others on the list disagree with or have anything to add to what I say but if we have further discussions we should probably make them between just the two of us and not bother the whole list. So with that in mind:

1) First regarding how to model this. I would model Person and Account as two different classes because I'm assuming that it's possible (and perhaps something you want to detect) for a Person to have more than one account.  All the data in your table I would make data properties e.g., statusCount, friendsCount, would all be data properties with domain Account and range xsd:integer. 

2) There is a tool called Cellfie that if you decide to use Protege you should probably check out. It can save you a lot of time if you have big spreadsheets like this with data you want to get into an ontology. It reads a spreadsheet, associates the rows and columns with properties and values (according to guidance provided by the user) and then automatically creates and/or populates the appropriate objects with the appropriate data. Here is a tutorial for how to use it: https://github.com/protegeproject/cellfie-plugin/wiki/Grocery-Tutorial 

3) If you already know the rules that distinguish a good account from a fake account then SWRL would be something you should look at. You can write rules that will look at the various properties and classify an account as real or fake. Here is a link to a short SWRL tutorial that I wrote: https://symbolicshacker.blogspot.com/2017/06/swrl-process-modeling-tutorial.html  

4) If you don't know the rules that distinguish a good account from a fake account and what you are looking for is some system to take that data and to essentially generate an algorithm for determining one from the other than you should look into a Machine Learning approach. If you go on Coursera (it's free) look for Andrew Ng's Machine Learning class. Ng is a professor at Stanford and one of the leading gurus on Machine Learning. His class is excellent.  In fact in that class he specifically talks about this kind of problem as a good real world example of supervised learning, where you have data that show examples of good and fake accounts and you want the ML system to generate the specific formula that is the best fit to your data. Also, before you take Ng's class it's good to know some basic Linear Algebra. Things like what a matrix is, how to find the inverse of a matrix, the transpose, how to do matrix multiplication, etc. Don't worry about the linear algebra stuff, it may sound imposing but all that is very basic, you could probably learn it (assuming you don't already know) in a couple of hours. 

If you want to get deeper into Linear Algebra look for Gilbert Strang's online class from MIT on Linear Algebra. Strang's class is way more than you need for Ng's class but I personally find Linear Algebra to be fascinating and his class is one of the best online classes I've ever taken. 

Hope that helps. 

Michael

On Tue, Jun 4, 2019 at 3:55 AM mohammed.H Naji <[hidden email]> wrote:

 

Sent from Mail for Windows 10

 

From: [hidden email]
Sent: Monday, June 3, 2019 5:31 PM
To: [hidden email]
Subject: Re: [protege-user] ontology building

 

> I have confused between object and datatype attribute,

> moreover the reasoner concept. 

 

 Mohammed, if you are familiar with traditional entity-relation modeling for relational databases then think of a data property as an attribute and an object property as a relation. Also, for traditional object-oriented modeling an object property is more or less the same as a UML property that has as datatype another class and a data property is a property that has as datatype a basic (non-object) datatype such as a string, an integer, etc. 

 

Note, that modeling in OWL is different in important ways than these other types of modeling but just to get the basic idea I think those analogies can help. One thing to keep in mind is that there is seldom a right or wrong answer as to how to model things. The property "address" is a good example. For some ontologies you could model a Person's address as data properties with domain of Person and range of string: hasStreet, hasState, hasZip, etc. Or another way to model this would be to make address an object class itself and then there would be an object property from a Person to their Address and the Address class would have the data properties hasStreet, hasState, hasZip, etc. 

 

The reasoner is an inference engine very much like what you would have in an expert system. The difference is that where as in an expert system the reasoner works primarily on if-then rules with OWL the reasoner works primarily on classifying the ontology. In languages that were precursors to OWL such as Loom and KL-One the reasoner was just called the classifier. But in OWL things get blurry because you can also have SWRL rules that are similar to forward chaining rules in an expert system. The reasoner is also a theorem prover as in logical programming. 

 

The goals of the reasoner are essentially 2 things: 

 

1) Make sure the ontology is consistent. I.e., to look at all the definitions about domains, ranges, class restrictions, etc. and make sure that there are no inconsistencies. For example, if I declare the object property hasCar to have domain Person and range Car and then I say that Car1 hasCar Car2 the reasoner will signal an inconsistency because a Car can't own another Car only a Person can.

 

2) Automatically infer additional information based on the axioms in the ontology. So for example if I declare that isOwnedBy is the inverse property of hasCar (i.e., a Person hasCar some Car and a Car isOwnedBy some Person) then if I declare that Joe hasCar Car1 the reasoner will automatically infer that Car1 isOwnedBy Joe, I won't have to declare that information, the reasoner can automatically infer it based on the definition of what an inverse property is. 

 

Michael

 

On Sun, Jun 2, 2019 at 5:24 AM Jabardi <[hidden email]> wrote:

Thanks Michael,
I read many articles and watched many video, the learning progress is very
good, but till now, I have confused between object and datatype attribute,
moreover the reasoner concept.

Regards,
Mohammed



--
Sent from: http://protege-project.136.n4.nabble.com/Protege-User-f4659818.html
_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

 

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user

_______________________________________________
protege-user mailing list
[hidden email]
https://mailman.stanford.edu/mailman/listinfo/protege-user