A basic question of using Protege to create individuals

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

A basic question of using Protege to create individuals

chengke1992
Hi all:

I am new to Protege and OWL and I am currently working on building an
ontology. However, I encountered a problem about creating individuals.

Specifically, suppose I have a class named "Task", a object property named
"isConstrainedBy", and another class named "Constraints". Then, I define the
class "Task" is an equivalent class of "isConstrainedBy some Constraints",
this means any individuals of the class "Task" should be related to at least
one individual of the class "Constraints" with the property
"isConstrainedBy".

If this is correct, then when I create an individual of the class "Task",
say "Fixing a computer", is it possible to automatically create an
individual, say "constraints_1" of the class "Constraints", then establish
the property "isConstrainedBy" between them? Or, if I already crated some
individuals of the class "Constraints", say constraint_1, constraint_2 and
constraint_3, when I create an individual of the class "Task", is there any
way to automatically select a constraint individual (randomly) than do the
property assertion between the task individual and selected constraint
individual?

I apologize that this question maybe stupid and any suggestions will be much
appreciated, thanks a lot in advance!!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Michael DeBellis-2
If I'm understanding what you want to do, it falls much more easily into the standard object-oriented paradigm rather than the Semantic Web paradigm. For a starter I recommend you look at this:  https://www.w3.org/TR/sw-oosd-primer/

In standard OOP what you are describing is of course trivial. You have a constructor method for a task and when you create a task you also create a constraint object. Probably the best way to do what you need is to use something like Apache Jena:  https://jena.apache.org/  Jena lets you create and manipulate your OWL objects like standard Java objects. 

What I think you essentially want is default reasoning: "If a Task doesn't have a Constraint then create one" This is difficult if not impossible in OWL due to the Open World Assumption (OWA) which means you can't support negation as failure.I.e., in a programming language like Java you can test if there is some value for hasConstraint and if there isn't you create one. With the OWA there is always the chance that there is some constraint out there that you don't know about so you can't have rules that say "if no value for hasConstraint then do..."  See:  http://wiki.opensemanticframework.org/index.php/Overview_of_the_Open_World_Assumption  

On Tue, Oct 22, 2019 at 5:08 AM chengke1992 <[hidden email]> wrote:
Hi all:

I am new to Protege and OWL and I am currently working on building an
ontology. However, I encountered a problem about creating individuals.

Specifically, suppose I have a class named "Task", a object property named
"isConstrainedBy", and another class named "Constraints". Then, I define the
class "Task" is an equivalent class of "isConstrainedBy some Constraints",
this means any individuals of the class "Task" should be related to at least
one individual of the class "Constraints" with the property
"isConstrainedBy".

If this is correct, then when I create an individual of the class "Task",
say "Fixing a computer", is it possible to automatically create an
individual, say "constraints_1" of the class "Constraints", then establish
the property "isConstrainedBy" between them? Or, if I already crated some
individuals of the class "Constraints", say constraint_1, constraint_2 and
constraint_3, when I create an individual of the class "Task", is there any
way to automatically select a constraint individual (randomly) than do the
property assertion between the task individual and selected constraint
individual?

I apologize that this question maybe stupid and any suggestions will be much
appreciated, thanks a lot in advance!!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

chengke1992
Hi Michael:

Many thanks for the responses, which give me much insight. I still need
sometime to go through the materials you provide.

Anyway, the reason that I attempt to use RDF/OWL to build the model is that
I want to take use of the features of OWL ontology to realize some functions
in my next-step work, e.g., exploratory search.

Therefore, based on my initial understanding of your advice, I feel that
what I can do is to use other tools, such as Jena, to build something that
can be imported into Protege? Once imported, the Protege will have a fixed
ontology that has complete set of classes, individuals and properties for
analysis and searching. Just wonder if I understand you correctly. And
appreciate a lot again for your help!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Michael DeBellis-2
Glad to offer what help I can. First, a disclaimer, I've never actually used Jena myself. Everything I've done with OWL and Protege so far has involved modeling and SWRL rules so I haven't needed Jena and all I've done is worked through some tutorials for it to get the basic ideas. There are others on the list who know it far better than I do. But based on my shallow understanding what you said is correct although I would also add that it can work the other way: you can create an ontology in Protege and then import it into Jena (rather than build it in Jena and import it into Protege). I think  that is the more common way to use it. Protege is a great modeling tool and I've used a lot of them. And I think you can go back and forth between using Jena to manipulate your ontology and then viewing it and editing it with the Protege editor but for most applications if it were me, I would start in Protege first. 

Also, since you are a new user here is a post on my blog page that I wrote recently for new users.  This post points to other posts that are a bunch of miscellaneous tips, best practices, design patterns, etc. that I've seen come up most often for new users:  https://www.michaeldebellis.com/post/best-practices-for-new-protege-users  It may give you some ideas. Also, make sure you do the Pizza tutorial and if you have time the Manchester FHKB tutorial is also very good. 

One of the biggest differences between standard OOP and objects in OWL is the way properties are handled. Rather than a property "belonging" to a class as it does in OOP a property is a first class object that exists independently of any classes (although you can still define domains and ranges for it but they are optional). Essentially a property in OWL is exactly like a binary relation in set theory. The Manchester FHKB tutorial really clarifies these differences and shows you some of the powerful things you can do with OWL properties that you can't do with standard OOP properties. 

Good luck, let us know if you have more questions.

Michael

On Tue, Oct 22, 2019 at 7:03 AM chengke1992 <[hidden email]> wrote:
Hi Michael:

Many thanks for the responses, which give me much insight. I still need
sometime to go through the materials you provide.

Anyway, the reason that I attempt to use RDF/OWL to build the model is that
I want to take use of the features of OWL ontology to realize some functions
in my next-step work, e.g., exploratory search.

Therefore, based on my initial understanding of your advice, I feel that
what I can do is to use other tools, such as Jena, to build something that
can be imported into Protege? Once imported, the Protege will have a fixed
ontology that has complete set of classes, individuals and properties for
analysis and searching. Just wonder if I understand you correctly. And
appreciate a lot again for your help!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Michael DeBellis-2
In reply to this post by chengke1992
One last thing: there are other libraries for programmatically creating and manipulating OWL objects. There is the OWL Java API: https://github.com/protegeproject/swrlapi/wiki/Creating-OWLOntology-and-PrefixManager-Instances-using-the-OWLAPI   and there is a Python library as well:  https://pypi.org/project/Owlready2/  My impression is that Jena is the one that is most often used. 

On Tue, Oct 22, 2019 at 7:03 AM chengke1992 <[hidden email]> wrote:
Hi Michael:

Many thanks for the responses, which give me much insight. I still need
sometime to go through the materials you provide.

Anyway, the reason that I attempt to use RDF/OWL to build the model is that
I want to take use of the features of OWL ontology to realize some functions
in my next-step work, e.g., exploratory search.

Therefore, based on my initial understanding of your advice, I feel that
what I can do is to use other tools, such as Jena, to build something that
can be imported into Protege? Once imported, the Protege will have a fixed
ontology that has complete set of classes, individuals and properties for
analysis and searching. Just wonder if I understand you correctly. And
appreciate a lot again for your help!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Michael DeBellis-2
In reply to this post by chengke1992
Chengke, just to clarify, that general makeOWLThing builtin for SWRL probably won't suit your use case because you still have the OWA and negation as failure issue which means that you can't really do default reasoning in SWRL. I just wanted to know it for my future reference. Also, I should have mentioned SPARQL. That's another way to get around the OWA. A basic analogy is that SPARQL is to OWL as SQL is to relational databases.  And as with SQL you can do more with SPARQL than just query you can assert new info into the ontology. Note: the SPARQL implementation in Protege is not the most powerful. To the best of my knowledge it doesn't support asserting new info into the ontology so you would need to access your ontology via some other SPARQL engine. As with Jena, my recommendation would be build your ontology first in Protege and then use SPARQL (or Jena or whatever) to do the closed world things you can't do with OWL and SWRL. 

Cheers,
Michael

On Tue, Oct 22, 2019 at 7:03 AM chengke1992 <[hidden email]> wrote:
Hi Michael:

Many thanks for the responses, which give me much insight. I still need
sometime to go through the materials you provide.

Anyway, the reason that I attempt to use RDF/OWL to build the model is that
I want to take use of the features of OWL ontology to realize some functions
in my next-step work, e.g., exploratory search.

Therefore, based on my initial understanding of your advice, I feel that
what I can do is to use other tools, such as Jena, to build something that
can be imported into Protege? Once imported, the Protege will have a fixed
ontology that has complete set of classes, individuals and properties for
analysis and searching. Just wonder if I understand you correctly. And
appreciate a lot again for your help!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

chengke1992
Hi Michael:

Thanks very much for all your kind suggestions!! I will go through the
materials you recommended and see how it goes.

And I have one more questions besides the technical problem, i.e., what are
the pros and cons when comparing OWL and Neo4j? I searched the blogs and
videos online, it seems that Neo4j can store information in a more compact
manner which can save memory and accelerate searching speed, whereas OWL and
RDF are well tested and standard tools and are better at inference of
implicit facts? But I still do not know clearly what is the most essential
differences between them and in what situations should we apply OWL/RDF and
Neo4j, respectively? could you please share some feelings about this? Thanks
again!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Luis Enrique Ramos García
Dear Cheng, 

I'm going to take the dare of answer some of your questions, at first OWL and Neo4j are two total different things, because OWL, as RDF are ontology languages. While Neo4j is a "graph database", which data model can be represented in OWL and RDF(1). Many of these "graph data base" can use rdf and/or owl in some levels, some of them use json, and most of the time the reasoning implementation is taken in account for comparing (2). 

With reference to reasoning, I would strongly recommend you to take a look at the book of Baader (3), because beside of the many example you can find in internet, this is not a trivial task. What I can tell you now is that the use of any of those languages, because OWL also has some profiles, depends of the expressive level you require. 

While Neo4j, and any other "graph database", are implementations with different features, in my case I am currently working with blazegraph and wikidata, by company decision. Both have support for rdf, but in the case of blazegraph, I do not see very clear its support to OWL, while in wikidata there is not support for OWL yet. Could be this considered as a miss advantage  for them?, we should take in account many thing before concluding this, I hope this information helps.


Best regards.



El mié., 23 oct. 2019 a las 2:07, chengke1992 (<[hidden email]>) escribió:
Hi Michael:

Thanks very much for all your kind suggestions!! I will go through the
materials you recommended and see how it goes.

And I have one more questions besides the technical problem, i.e., what are
the pros and cons when comparing OWL and Neo4j? I searched the blogs and
videos online, it seems that Neo4j can store information in a more compact
manner which can save memory and accelerate searching speed, whereas OWL and
RDF are well tested and standard tools and are better at inference of
implicit facts? But I still do not know clearly what is the most essential
differences between them and in what situations should we apply OWL/RDF and
Neo4j, respectively? could you please share some feelings about this? Thanks
again!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Michael DeBellis-2
In reply to this post by chengke1992
I agree with what Luis said: you are really comparing two different kinds of tools when you compare OWL and Protege with Neo4J. 

One thing to note is that when Neo4J talks about "graph databases" those are essentially the same kind of technology (although probably not the same standard) as underlies OWL. OWL as you probably know is built on RDF which is a W3C standard language for describing graph databases. 

I've never heard of Neo4J before.  I thought there might be a chance that they can import models in RDF or even OWL but in a quick look at their web site I didn't see that supported. They can import CSV files and there is a CSV Export plugin for Protege so you could import models that way but my guess is you would lose some, perhaps a lot, of the semantic info you have with OWL by exporting as CSV and then importing into another tool. 

The big issue I see (just from a quick glance at their site, I could be wrong) with Neo4J is that they seem to have their own proprietary graph language. If that's the case, it really locks you into their tool and may make it difficult to use other tools. Also, there are lots of vocabularies out there already developed in OWL and RDF that you couldn't take advantage of including industry standards such as SNOMED. I would recommend you take a look at Pool Party. I'm pretty sure it can import OWL ontologies. I have no idea though how its functionality and price stacks up with Neo4J. (I have no connection with Pool Party). 

One more point on graph languages, there is an important alternative to RDF and OWL called https://schema.org/  There are a number of issues that people don't like about RDF which I think the schema.org standard is supposed to address. That standard has been embraced by Microsoft and many other major companies so IMO a tool that doesn't embrace either the W3C standard or the Microsoft et. al. standard would have to be pretty great for me to consider using it. I know next to nothing about the schema.org standard except I think its also a graph language, i.e., like RDF but doesn't have the richer semantics of OWL. 

I'll give you my opinions on pros and cons just keep in mind these are all just my opinions and not based on any extensive research so essentially take everything below with a grain of salt and realize I could be wrong and others on the list might disagree. 

Pros of OWL and Protege:
1) Free
2) Open source. 
3) Based on W3C standard so can easily integrate with many other tools and standards such as Jena, Eclipse, and SPARQL and can utilize vocabularies and industry standards defined in OWL
4) Very rich semantic layer based on set theory and Description Logic which is a subset of First Order Logic. 
5) Can use Reasoners such as Hermit and Pellet to both validate your ontology and do additional reasoning based on OWL semantics. 
6) Excellent modeling tool. The underlying OWL language is inherently very rich but very few people want to work at the level of writing OWL code. Protege is one of the most intuitive modeling tools I've ever seen. 

Cons:
1) Possible performance issues. I've never experienced this myself but in different online groups I've heard people complain about the performance of RDF and OWL. Keep in mind I'm not talking primarily about a Protege issue here, rather how efficiently the RDF graphs can be stored and can perform when used by applications compared to other possible alternatives.
2) Open World Assumption is somewhat counter intuitive to new users and makes doing certain things impossible within the OWL and SWRL paradigm and requires you to go to SPARQL or Java. 
3) Much of the database management, analytics, identity management, version control features that from my quick look are probably part of Neo4J aren't in the scope of what Protege tries to do, it's only a modeling tool. Note however there are other tools that will do this for OWL standard ontologies, some are open source and others are commercial tools such as Pool Party. 

Pros of Neo4J
1) Potentially scales up better than OWL (I don't know this is true but my guess is they would claim it and it may well be so, proprietary formats often beat standards)
2) Much more functionality than Protege provides. Protege is only a modeling tool Neo4J is a complete product, more like a document management system like Documentum or a content management system like Interwoven but geared toward graph databases. 
3) Probably better support since that is part of the license fee.

Cons of Neo4J
1) Proprietary data format locks you into their tool and may put restrictions on other tools or development environments you can use (again, I don't know if it's proprietary for sure, there may be ways to import standard formats that I didn't find in a quick look at their web site). 
2) Not free.
3) (Assuming you can't import OWL) Much less rich semantic layer. Probably doesn't support things like transitive and inverse relations and won't work with reasoners such as Pellet. Probably harder to define rich models because you don't have the powerful and intuitive ontology editing capabilities of Protege. 

On Tue, Oct 22, 2019 at 5:07 PM chengke1992 <[hidden email]> wrote:
Hi Michael:

Thanks very much for all your kind suggestions!! I will go through the
materials you recommended and see how it goes.

And I have one more questions besides the technical problem, i.e., what are
the pros and cons when comparing OWL and Neo4j? I searched the blogs and
videos online, it seems that Neo4j can store information in a more compact
manner which can save memory and accelerate searching speed, whereas OWL and
RDF are well tested and standard tools and are better at inference of
implicit facts? But I still do not know clearly what is the most essential
differences between them and in what situations should we apply OWL/RDF and
Neo4j, respectively? could you please share some feelings about this? Thanks
again!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Lorenz Buehmann
just some comments as I've been working with RDF and property graphs,
i.e. anything RDF, OWL, SPARQL related as well as graph databases (among
others Neo4J with Cypher):

On 24.10.19 22:32, Michael DeBellis wrote:
> I agree with what Luis said: you are really comparing two different
> kinds of tools when you compare OWL and Protege with Neo4J. 
>
> One thing to note is that when Neo4J talks about "graph databases"
> those are essentially the same kind of technology (although probably
> not the same standard) as underlies OWL. OWL as you probably know is
> built on RDF which is a W3C standard language for describing graph
> databases.
Not really, the difference between Property Graphs and RDF/OWL is
obvious. As usual, there are pros and cons
>
> I've never heard of Neo4J before.
That's surprising given that Neo4J is by far the most prominent graph
database I'd say. If you have time, you should really play a bit with
Neo4J and Cypher. Never wrong to get some other view on data.
> I thought there might be a chance that they can import models in RDF
> or even OWL but in a quick look at their web site I didn't see that
> supported. They can import CSV files and there is a CSV Export plugin
> for Protege so you could import models that way but my guess is you
> would lose some, perhaps a lot, of the semantic info you have with OWL
> by exporting as CSV and then importing into another tool.
That's not correct, there is in fact a plugin that does support RDF (and
OWL to some extent): https://neo4j.com/labs/nsmtx-rdf/
>
> The big issue I see (just from a quick glance at their site, I could
> be wrong) with Neo4J is that they seem to have their own
> proprietary graph language. If that's the case, it really locks you
> into their tool and may make it difficult to use other tools.

Cypher is the query language, true. Other graph databases might support
other like Gremlin, etc. - there are adapters from Cypher to Gremlin, as
well as from SPARQL to Gremlin. Some triple stores even support graph
query languages, like Stardog (Gremlin, GraphQL), Blazegraph, Amazon
Neptune.

The whole "zoo" of graph data query languages (Cypher, Gremlin, SPARQL,
PGQL, GraphQL etc.) and the lack of a proper standard led to a
consortium building the next standardized query language besides SQL. It
will become the next W3C standard, but clearly will take "some" time
until we have a standard and GQL.

If interested, here some notes:
https://www.w3.org/Data/events/data-ws-2019/index.html

> Also, there are lots of vocabularies out there already developed in
> OWL and RDF that you couldn't take advantage of including industry
> standards such as SNOMED. I would recommend you take a look at Pool
> Party. I'm pretty sure it can import OWL ontologies. I have no idea
> though how its functionality and price stacks up with Neo4J. (I have
> no connection with Pool Party).
Neo4J has a Community Edition which is free and the whole project is
Open Source. Pool Party is fully commercial.

>
>
> Pros of Neo4J
> 1) Potentially scales up better than OWL (I don't know this is true
> but my guess is they would claim it and it may well be so, proprietary
> formats often beat standards)
> 2) Much more functionality than Protege provides. Protege is only a
> modeling tool Neo4J is a complete product, more like a document
> management system like Documentum or a content management system like
> Interwoven but geared toward graph databases. 
> 3) Probably better support since that is part of the license fee.
>
> Cons of Neo4J
> 1) Proprietary data format locks you into their tool and may put
> restrictions on other tools or development environments you can use
> (again, I don't know if it's proprietary for sure, there may be ways
> to import standard formats that I didn't find in a quick look at their
> web site).
You can import RDF and OWL. And indeed, it allows for loading from CSV
(if you call this a "standard", but at least it's a very popular data
format)
> 2) Not free.
Nope, it's free as I said as long as you don't want a cluster edition
> 3) (Assuming you can't import OWL) Much less rich semantic layer.
> Probably doesn't support things like transitive and inverse relations
> and won't work with reasoners such as Pellet. Probably harder to
> define rich models because you don't have the powerful and intuitive
> ontology editing capabilities of Protege.
Lightweight reasoning is possible via the plugin.


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

Re: A basic question of using Protege to create individuals

Michael DeBellis-2
Lorenz, thanks for correcting my errors. In retrospect I should have done more research on Neo4J before commenting or just kept my mouth shut but I'm glad I at least sparked some discussion that hopefully helped the OP. 

On Fri, Oct 25, 2019 at 1:59 AM Lorenz Buehmann <[hidden email]> wrote:
just some comments as I've been working with RDF and property graphs,
i.e. anything RDF, OWL, SPARQL related as well as graph databases (among
others Neo4J with Cypher):

On 24.10.19 22:32, Michael DeBellis wrote:
> I agree with what Luis said: you are really comparing two different
> kinds of tools when you compare OWL and Protege with Neo4J. 
>
> One thing to note is that when Neo4J talks about "graph databases"
> those are essentially the same kind of technology (although probably
> not the same standard) as underlies OWL. OWL as you probably know is
> built on RDF which is a W3C standard language for describing graph
> databases.
Not really, the difference between Property Graphs and RDF/OWL is
obvious. As usual, there are pros and cons
>
> I've never heard of Neo4J before.
That's surprising given that Neo4J is by far the most prominent graph
database I'd say. If you have time, you should really play a bit with
Neo4J and Cypher. Never wrong to get some other view on data.
> I thought there might be a chance that they can import models in RDF
> or even OWL but in a quick look at their web site I didn't see that
> supported. They can import CSV files and there is a CSV Export plugin
> for Protege so you could import models that way but my guess is you
> would lose some, perhaps a lot, of the semantic info you have with OWL
> by exporting as CSV and then importing into another tool.
That's not correct, there is in fact a plugin that does support RDF (and
OWL to some extent): https://neo4j.com/labs/nsmtx-rdf/
>
> The big issue I see (just from a quick glance at their site, I could
> be wrong) with Neo4J is that they seem to have their own
> proprietary graph language. If that's the case, it really locks you
> into their tool and may make it difficult to use other tools.

Cypher is the query language, true. Other graph databases might support
other like Gremlin, etc. - there are adapters from Cypher to Gremlin, as
well as from SPARQL to Gremlin. Some triple stores even support graph
query languages, like Stardog (Gremlin, GraphQL), Blazegraph, Amazon
Neptune.

The whole "zoo" of graph data query languages (Cypher, Gremlin, SPARQL,
PGQL, GraphQL etc.) and the lack of a proper standard led to a
consortium building the next standardized query language besides SQL. It
will become the next W3C standard, but clearly will take "some" time
until we have a standard and GQL.

If interested, here some notes:
https://www.w3.org/Data/events/data-ws-2019/index.html

> Also, there are lots of vocabularies out there already developed in
> OWL and RDF that you couldn't take advantage of including industry
> standards such as SNOMED. I would recommend you take a look at Pool
> Party. I'm pretty sure it can import OWL ontologies. I have no idea
> though how its functionality and price stacks up with Neo4J. (I have
> no connection with Pool Party).
Neo4J has a Community Edition which is free and the whole project is
Open Source. Pool Party is fully commercial.
>
>
> Pros of Neo4J
> 1) Potentially scales up better than OWL (I don't know this is true
> but my guess is they would claim it and it may well be so, proprietary
> formats often beat standards)
> 2) Much more functionality than Protege provides. Protege is only a
> modeling tool Neo4J is a complete product, more like a document
> management system like Documentum or a content management system like
> Interwoven but geared toward graph databases. 
> 3) Probably better support since that is part of the license fee.
>
> Cons of Neo4J
> 1) Proprietary data format locks you into their tool and may put
> restrictions on other tools or development environments you can use
> (again, I don't know if it's proprietary for sure, there may be ways
> to import standard formats that I didn't find in a quick look at their
> web site).
You can import RDF and OWL. And indeed, it allows for loading from CSV
(if you call this a "standard", but at least it's a very popular data
format)
> 2) Not free.
Nope, it's free as I said as long as you don't want a cluster edition
> 3) (Assuming you can't import OWL) Much less rich semantic layer.
> Probably doesn't support things like transitive and inverse relations
> and won't work with reasoners such as Pellet. Probably harder to
> define rich models because you don't have the powerful and intuitive
> ontology editing capabilities of Protege.
Lightweight reasoning is possible via the plugin.


_______________________________________________
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: A basic question of using Protege to create individuals

chengke1992
Hi Michael:

Thanks a lot for spending time searching the information and sharing so many
thoughts about the topic, despite that some of them are not 100% correct. I
have spent a few days reading some blogs you provided, installing and trying
Jena and OWL API, and I also completed the FHKB tutorial which is more
advanced than the Pizza tutorial I did before).

I think for me it is better to test my idea with a very simple model to see
if it works (i.e., the default reasoning), using OWL API which is updated
more recently and has a closer relationship with OWL language (Jena is
closer to RDF) and Protege. Anyway, I can never know if the tool suits my
needs if I do not try out.

I write this e-mail just to say thank you, not only for sharing me your
knowledge but also for encouraging me to continue my work!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

chengke1992
In reply to this post by Luis Enrique Ramos García
Hi Luis:

Thanks very much for all your kind suggestions! I think I have a better
understanding of these concepts, can I have one more question? After I
discussed with my team-mates, they suggested me to compare the different
between Labeled Property Graph (LPG) and RDF triples, rather than OWL/RDF
and Neo4j.

I checked the materials online and it seems that they are two different
forms of describing knowledge in graphs? The LPG form is more compact and
clean, which requires less computer memory, and the LPG seems to have more
power to handle relationships between nodes (i.e., individuals).

In such case, could you please provide some personal feelings and thoughts
about the two forms? such as which one is better in which situation?

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

chengke1992
In reply to this post by Lorenz Buehmann
Hi Lorenz:

Thanks very much for your kind advice!

About your response, I have one more question, i.e., could you please share
more insights of the "Lightweight reasoning" capability of Neo4j, just want
to know how much it can express the world, comparing to the reasoning
capabilities in OWL, such as OWL Light, OWL DL and OWL Full?

Any suggestion will be much appreciated, and it will be great if you can
kindly attach some links and external materials. Thanks a lot!

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Luis Enrique Ramos García
In reply to this post by chengke1992
Hi Chengke, 

So sorry than I can not give you a proper feedback given that I have not work with Labeled Property Graphs, however what I wanted to highlight is now clear you have to compare LPG with RDF at first, that is the most important. 

I good comparison point is the reasoning capabilities, I do not know, because I have not worked with LPG, whether or not I can make some sort of reasoning, and if any what is the level of expressiveness. 

According to what you wrote you are searching for a language with a good expressiveness level, however you have to establish your reasoning goals carefully. 


Best regards


Luis Ramos




El lun., 28 oct. 2019 a las 2:46, chengke1992 (<[hidden email]>) escribió:
Hi Luis:

Thanks very much for all your kind suggestions! I think I have a better
understanding of these concepts, can I have one more question? After I
discussed with my team-mates, they suggested me to compare the different
between Labeled Property Graph (LPG) and RDF triples, rather than OWL/RDF
and Neo4j.

I checked the materials online and it seems that they are two different
forms of describing knowledge in graphs? The LPG form is more compact and
clean, which requires less computer memory, and the LPG seems to have more
power to handle relationships between nodes (i.e., individuals).

In such case, could you please provide some personal feelings and thoughts
about the two forms? such as which one is better in which situation?

Best Regards
Chengke



--
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: A basic question of using Protege to create individuals

Lorenz Buehmann
In reply to this post by Michael DeBellis-2

No worries Michael. I'd more say you could just try Neo4J and play a bit with it if you have some time. Indeed the OWL support is very limited, but hey it works for some cases. Maybe you have some small use-case for it, not sure.

In the end, we all have to wait until GQL will be finalized (in a few years), such that we can use multiple tools with the same query language to discover the world of graphs.


Cheers,
Lorenz

On 27.10.19 17:32, Michael DeBellis wrote:
Lorenz, thanks for correcting my errors. In retrospect I should have done more research on Neo4J before commenting or just kept my mouth shut but I'm glad I at least sparked some discussion that hopefully helped the OP. 

On Fri, Oct 25, 2019 at 1:59 AM Lorenz Buehmann <[hidden email]> wrote:
just some comments as I've been working with RDF and property graphs,
i.e. anything RDF, OWL, SPARQL related as well as graph databases (among
others Neo4J with Cypher):

On 24.10.19 22:32, Michael DeBellis wrote:
> I agree with what Luis said: you are really comparing two different
> kinds of tools when you compare OWL and Protege with Neo4J. 
>
> One thing to note is that when Neo4J talks about "graph databases"
> those are essentially the same kind of technology (although probably
> not the same standard) as underlies OWL. OWL as you probably know is
> built on RDF which is a W3C standard language for describing graph
> databases.
Not really, the difference between Property Graphs and RDF/OWL is
obvious. As usual, there are pros and cons
>
> I've never heard of Neo4J before.
That's surprising given that Neo4J is by far the most prominent graph
database I'd say. If you have time, you should really play a bit with
Neo4J and Cypher. Never wrong to get some other view on data.
> I thought there might be a chance that they can import models in RDF
> or even OWL but in a quick look at their web site I didn't see that
> supported. They can import CSV files and there is a CSV Export plugin
> for Protege so you could import models that way but my guess is you
> would lose some, perhaps a lot, of the semantic info you have with OWL
> by exporting as CSV and then importing into another tool.
That's not correct, there is in fact a plugin that does support RDF (and
OWL to some extent): https://neo4j.com/labs/nsmtx-rdf/
>
> The big issue I see (just from a quick glance at their site, I could
> be wrong) with Neo4J is that they seem to have their own
> proprietary graph language. If that's the case, it really locks you
> into their tool and may make it difficult to use other tools.

Cypher is the query language, true. Other graph databases might support
other like Gremlin, etc. - there are adapters from Cypher to Gremlin, as
well as from SPARQL to Gremlin. Some triple stores even support graph
query languages, like Stardog (Gremlin, GraphQL), Blazegraph, Amazon
Neptune.

The whole "zoo" of graph data query languages (Cypher, Gremlin, SPARQL,
PGQL, GraphQL etc.) and the lack of a proper standard led to a
consortium building the next standardized query language besides SQL. It
will become the next W3C standard, but clearly will take "some" time
until we have a standard and GQL.

If interested, here some notes:
https://www.w3.org/Data/events/data-ws-2019/index.html

> Also, there are lots of vocabularies out there already developed in
> OWL and RDF that you couldn't take advantage of including industry
> standards such as SNOMED. I would recommend you take a look at Pool
> Party. I'm pretty sure it can import OWL ontologies. I have no idea
> though how its functionality and price stacks up with Neo4J. (I have
> no connection with Pool Party).
Neo4J has a Community Edition which is free and the whole project is
Open Source. Pool Party is fully commercial.
>
>
> Pros of Neo4J
> 1) Potentially scales up better than OWL (I don't know this is true
> but my guess is they would claim it and it may well be so, proprietary
> formats often beat standards)
> 2) Much more functionality than Protege provides. Protege is only a
> modeling tool Neo4J is a complete product, more like a document
> management system like Documentum or a content management system like
> Interwoven but geared toward graph databases. 
> 3) Probably better support since that is part of the license fee.
>
> Cons of Neo4J
> 1) Proprietary data format locks you into their tool and may put
> restrictions on other tools or development environments you can use
> (again, I don't know if it's proprietary for sure, there may be ways
> to import standard formats that I didn't find in a quick look at their
> web site).
You can import RDF and OWL. And indeed, it allows for loading from CSV
(if you call this a "standard", but at least it's a very popular data
format)
> 2) Not free.
Nope, it's free as I said as long as you don't want a cluster edition
> 3) (Assuming you can't import OWL) Much less rich semantic layer.
> Probably doesn't support things like transitive and inverse relations
> and won't work with reasoners such as Pellet. Probably harder to
> define rich models because you don't have the powerful and intuitive
> ontology editing capabilities of Protege.
Lightweight reasoning is possible via the plugin.


_______________________________________________
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
Reply | Threaded
Open this post in threaded view
|

Re: A basic question of using Protege to create individuals

Lorenz Buehmann
In reply to this post by chengke1992
With "light-weight" I really meant very very light-weight ... and no,
this is not even close to any OWL reasoning, not even RDFS - it's
basically just class and property hierarchy [1]

I mean, in the end it's just a plugin that could be extended - at least,
rule based reasoning should be possible given that you only have to map
it to the Cypher query language. So RDFS and OWL Horst (maybe OWL RL)
could be possible given that all of those are just based on fixpoint
iteration. That said, I'm not the plugin author, so I can't give more
details but I don't think there are plans for it. But if interested,
just contact the authors .

And alternative way- as usual - is to precompute (some) inferences via a
standard OWL reasoner and load the materialized ontology into the graph
database.


[1] https://neo4j.com/docs/labs/nsmntx/current/inference/

On 28.10.19 02:51, chengke1992 wrote:

> Hi Lorenz:
>
> Thanks very much for your kind advice!
>
> About your response, I have one more question, i.e., could you please share
> more insights of the "Lightweight reasoning" capability of Neo4j, just want
> to know how much it can express the world, comparing to the reasoning
> capabilities in OWL, such as OWL Light, OWL DL and OWL Full?
>
> Any suggestion will be much appreciated, and it will be great if you can
> kindly attach some links and external materials. Thanks a lot!
>
> Best Regards
> Chengke
>
>
>
> --
> 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: A basic question of using Protege to create individuals

Igor Toujilov-2
In reply to this post by chengke1992
Hi Chengke,
It looks like you are involved in a technology comparison/review to choose the right technology for your project. This is a very important step, which will affect the future of your project. So, I decided to express my opinion, which might help.

There are two big topics in modern software engineering: interoperability and reasoning.  Interoperability is based on standards. Reasoning needs a formal logical foundation. OWL 2 DL is a unique standard, which supports both big things, i.e. interoperable reasoning.

There is no standard reasoning behind graph databases (both RDF and LPG; for their comparison you can look at [1]): people use their own customised reasoning algorithms, which are not interoperable. Similarly OWL Full has no standard reasoning capabilities. So, OWL 2 DL (or its sub-profiles) is a good choice.

Regards,
Igor

[1] https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/


> Sent: Monday, October 28, 2019 at 1:51 AM
> From: "chengke1992" <[hidden email]>
> To: [hidden email]
> Subject: Re: [protege-user] A basic question of using Protege to create individuals
>
> Hi Lorenz:
>
> Thanks very much for your kind advice!
>
> About your response, I have one more question, i.e., could you please share
> more insights of the "Lightweight reasoning" capability of Neo4j, just want
> to know how much it can express the world, comparing to the reasoning
> capabilities in OWL, such as OWL Light, OWL DL and OWL Full?
>
> Any suggestion will be much appreciated, and it will be great if you can
> kindly attach some links and external materials. Thanks a lot!
>
> Best Regards
> Chengke
>
>
>
> --
> 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