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
>>>>>> 
>>>> 
>>>> 
>>> 
>> 

Reply via email to