These are questions that have not so much to do with Jena but with OWL generally, so you may wish to ask them in other fora.
> 1) What does "individual" mean ? An individual is an entity, usually as opposed to a class (of individuals). E.g. we are all individuals in the class of Jena users. If you are interested in using OWL, you will be very well served by reading: https://www.w3.org/TR/owl-primer/ which is published by W3C precisely to answer these kinds of questions. See: https://www.w3.org/TR/owl-primer/#Classes_and_Instances > :p1 a owl:ObjectProperty ; rdfs:range xsd:integer . > :p2 a owl:DatatypeProperty ; rdfs:range owl:Thing . I think you have things exactly backwards. If :p2 rdfs:range owl:Thing . then :p2 represents a relationship between individuals and is more likely to be an owl:ObjectProperty, and the other way 'round for :p1. See: https://www.w3.org/TR/owl-primer/#Object_Properties --- A. Soroka The University of Virginia Library > On Sep 9, 2016, at 11:51 AM, Jérémy Coulon <jeremy.coulon.j...@gmail.com> > wrote: > > Since I still don't have a clear answer on my particular situation, I guess > I am asking the wrong questions. > Here are further questions. > > 1) What does "individual" mean ? > > 2) Does the following ontology make any sense ? Why ? (I have the feeling > it doesn't) > :p1 a owl:ObjectProperty ; > rdfs:range xsd:integer . > :p2 a owl:DatatypeProperty ; > rdfs:range owl:Thing . > > > > On Tue, Sep 6, 2016 at 3:53 PM, Nikolaos Beredimas <bere...@gmail.com> > wrote: > >> Briefly, >> owl:Thing --> The class of OWL individuals >> *Object properties* connect pairs of individuals. >> *Data properties* connect individuals with literals >> >> In Jena, now, let's say you have a Statement instance >> >> getSubject >> <https://jena.apache.org/documentation/javadoc/jena/ >> org/apache/jena/rdf/model/Statement.html#getSubject--> >> () >> will give you Statement's subject as an instance of Resource. >> getURI >> <https://jena.apache.org/documentation/javadoc/jena/ >> org/apache/jena/rdf/model/Resource.html#getURI--> >> () >> on that Resource will get you a String with the URI of the subject, or null >> if it is a blank node >> >> getObject() >> >> will give you Statement's subject as an instance of RDFNode >> >> on this RDFNode you can use isLiteral() and isResource() to determine >> what it is. >> >> Of course there are other methods, you can use to get the same results. >> >> . >> >> >> On Tue, Sep 6, 2016 at 4:32 PM, Jérémy Coulon < >> jeremy.coulon.j...@gmail.com> >> wrote: >> >>> Thank you for your answers. >>> I think I am in the case you described by "There is also the possibility >> to >>> use simple SPARQL to determine whether a graph meets some conditions of >>> interest and then take action in application code accordingly." >>> I would like to retrieve the rdfs:range of a property and take actions >>> accordingly. >>> This is the reason why I would like to make a distinction between ranges >>> that could be rdfs:Literal (or a subclass of Literal) and ranges that are >>> "URIs or BlankNodes". >>> >>> What is the meaning of owl:Thing exactly ? >>> What is the meaning of owl:ObjectProperty vs. owl:DatatypeProperty ? >>> >>> >>> On Tue, Sep 6, 2016 at 2:02 PM, A. Soroka <aj...@virginia.edu> wrote: >>> >>>> This is a very common misunderstanding, and we can correct it even more >>>> generally: _nothing_ in RDFS _or_ OWL can be used to restrict the >> triples >>>> in a graph, ever, under their specified semantics [1]. They can only be >>>> used to create new triples, not to disallow triples. SPIN (or >>>> implementations of the forthcoming SHACL specification) are indeed a >> more >>>> reasonable approach. There is also the possibility to use simple SPARQL >>> to >>>> determine whether a graph meets some conditions of interest and then >> take >>>> action in application code accordingly. >>>> >>>> --- >>>> A. Soroka >>>> The University of Virginia Library >>>> >>>> [1] There is an alternative closed-world semantics for OWL called ICV, >>> but >>>> I am not sure how easy it would be to use with Jena. It is implemented >> in >>>> Pellet, but this documentation for Pellet (https://github.com/ >>>> Complexible/pellet/wiki/FAQ#jena-interface) refers to DIG, so it seems >>>> rather out of date. >>>> >>>>> On Sep 6, 2016, at 5:41 AM, Nikolaos Beredimas <bere...@gmail.com> >>>> wrote: >>>>> >>>>> I think you are misunderstanding the meaning of rdfs:range (a very >>> common >>>>> mistake) >>>>> Per definition, >>>>> rdfs:range is an instance of rdf:Property >>>>> <https://www.w3.org/TR/rdf-schema/#ch_property> that is used to >> state >>>> that >>>>> the values of a property are instances of one or more classes. >>>>> >>>>> So, rdfs:range is not supposed to be used to restrict the "kind" of >> an >>>>> object, but to infer it. >>>>> >>>>> If you want restrictions, try something like SPIN. >>>>> >>>>> Regards, >>>>> Nikos >>>>> >>>>> On Tue, Sep 6, 2016 at 12:34 PM, Jérémy Coulon < >>>> jeremy.coulon.j...@gmail.com >>>>>> wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> I would like to write my own ontology. >>>>>> For some properties I would like to restrict their range to URIs or >>>>>> BlankNodes but to forbid literals. >>>>>> For example: >>>>>> myprop a rdf:Property ; >>>>>> rdfs:range ***URIs or BlankNodes*** . >>>>>> >>>>>> I have difficulties to understand some semantics of RDFS and OWL. >>>>>> I don't see a way to do what I want with pure RDFS. >>>>>> I have read about owl:Thing but I don't understand what it is >> supposed >>>> to >>>>>> mean. >>>>>> Is owl:Thing the range I am looking for ? >>>>>> Is it possible to do what I need after all ? >>>>>> >>>>>> Thanks for your help. >>>>>> >>>>>> Jeremy >>>>>> >>>> >>>> >>> >>