You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Hélio Azevedo <ha...@usp.br> on 2017/11/28 20:08:03 UTC

Fuseki Reasoner

Hi

I have an ontology that was elaborated with the support of the Protégé tool.
In this ontology I use a data property, named "objectId". This property was
flagged as "Functional". If I insert two "objectId" for the same concept
and activate the Pellet reasoner the Protégé tool signals an error.

When loading the same ontology in Fuseki environment and inserting two
"objectId" for the same concept, Fuseki does not acknowledge an error!
The new objectId is inserted with the use of a Sparql endpoint.

How should I proceed ?

The reasoner activation on Fuseki is done by the configuration below:

@prefix :      <http://base/#> .
@prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
@prefix fuseki: <http://jena.apache.org/fuseki#> .


@prefix ontsense: <http://example.org/sense#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .



:service1  a                          fuseki:Service ;
        fuseki:dataset                :dataset ;
        fuseki:name                   "ontsense" ;
        fuseki:serviceQuery           "query" , "sparql" ;
        fuseki:serviceReadGraphStore  "get" ;
        fuseki:serviceReadWriteGraphStore
                "data" ;
        fuseki:serviceUpdate          "update" ;
        fuseki:serviceUpload          "upload" .

:dataset  a     ja:DatasetTxnMem ;
  ja:defaultGraph <#model_inf_1> ;
  .

<#model_inf_1> rdfs:label "Inf-1" ;
 ja:reasoner
 [ ja:reasonerURL
 <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>];






-- 
PhD Student
Robot Learning Laboratory LAR
ICMC - USP São Carlos - Brazil

Re: Fuseki Reasoner

Posted by ajs6f <aj...@apache.org>.
I'm not sure if it was clear from Andy's reply, but that is not really a supported functionality right now.

What is more, using OWL is not really a great way to do that. Reasoners for OWL (or RDFS) are meant to create new inferred triples, not constrain graphs. You would want to look at SHACL or ShEx for constraint languages.

ajs6f

> On Nov 30, 2017, at 10:18 AM, Hélio Azevedo <ha...@usp.br> wrote:
> 
> Hi
> 
> I understand that this is a high level discussion that involves changes to
> the Fuseki interface.
> 
> However, my need is very basic: when sending a sparql command that breaks
> an axiom of my ontology, I would like to receive a simple error indication.
> 
> Thankful.
> 
> Helio
> 
> On Wed, Nov 29, 2017 at 8:13 AM, Andy Seaborne <an...@apache.org> wrote:
> 
>> 
>> 
>> On 29/11/17 08:13, Dave Reynolds wrote:
>> 
>>> With the Jena API there's a separate validate() call on InfModel (and
>>> thus on OntModel) which will return a list of validation error reports.
>>> 
>>> I don't think there's any way to invoke that from Fuseki.
>>> 
>> 
>> Thread drift ....
>> 
>> Pull request 316 [1] is an addition to Fuseki (service side) to allow
>> extension services to be added - like an "invoke inference" service or
>> "validation report" service.
>> 
>> "/datasets/query" is the query service on /dataset - an extension service
>> would be "/datasets/validation-report" and it can have an HTTP query string.
>> 
>> PR#316 is not an implementation of any new services but it means code can
>> be added and wired into Fuseki for features not in the core system.
>> 
>> If there are customization features that don't fit into the "add a
>> service" style, do please give a use case and describe what is required.
>> 
>>    Andy
>> 
>> [1] https://github.com/apache/jena/pull/316
>> 
>> 
>> Whether the builtin rule reasoners would detect your specific issue I'm
>>> not sure but probably. However, in general if you want complete DL level
>>> validation you need to use a DL reasoner such as Pellet which is not
>>> included in Jena.
>>> 
>>> Dave
>>> 
>>> 
>>> On 28/11/17 20:08, Hélio Azevedo wrote:
>>> 
>>>> Hi
>>>> 
>>>> I have an ontology that was elaborated with the support of the Protégé
>>>> tool.
>>>> In this ontology I use a data property, named "objectId". This property
>>>> was
>>>> flagged as "Functional". If I insert two "objectId" for the same concept
>>>> and activate the Pellet reasoner the Protégé tool signals an error.
>>>> 
>>>> When loading the same ontology in Fuseki environment and inserting two
>>>> "objectId" for the same concept, Fuseki does not acknowledge an error!
>>>> The new objectId is inserted with the use of a Sparql endpoint.
>>>> 
>>>> How should I proceed ?
>>>> 
>>>> The reasoner activation on Fuseki is done by the configuration below:
>>>> 
>>>> @prefix :      <http://base/#> .
>>>> @prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
>>>> @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>>>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>>>> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
>>>> @prefix fuseki: <http://jena.apache.org/fuseki#> .
>>>> 
>>>> 
>>>> @prefix ontsense: <http://example.org/sense#> .
>>>> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>>>> @prefix owl: <http://www.w3.org/2002/07/owl#> .
>>>> 
>>>> 
>>>> 
>>>> :service1  a                          fuseki:Service ;
>>>>         fuseki:dataset                :dataset ;
>>>>         fuseki:name                   "ontsense" ;
>>>>         fuseki:serviceQuery           "query" , "sparql" ;
>>>>         fuseki:serviceReadGraphStore  "get" ;
>>>>         fuseki:serviceReadWriteGraphStore
>>>>                 "data" ;
>>>>         fuseki:serviceUpdate          "update" ;
>>>>         fuseki:serviceUpload          "upload" .
>>>> 
>>>> :dataset  a     ja:DatasetTxnMem ;
>>>>   ja:defaultGraph <#model_inf_1> ;
>>>>   .
>>>> 
>>>> <#model_inf_1> rdfs:label "Inf-1" ;
>>>>  ja:reasoner
>>>>  [ ja:reasonerURL
>>>>  <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>];
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
> 
> 
> -- 
> PhD Student
> Robot Learning Laboratory LAR
> ICMC - USP São Carlos - Brazil


Re: Fuseki Reasoner

Posted by Hélio Azevedo <ha...@usp.br>.
Hi

I understand that this is a high level discussion that involves changes to
the Fuseki interface.

However, my need is very basic: when sending a sparql command that breaks
an axiom of my ontology, I would like to receive a simple error indication.

Thankful.

Helio

On Wed, Nov 29, 2017 at 8:13 AM, Andy Seaborne <an...@apache.org> wrote:

>
>
> On 29/11/17 08:13, Dave Reynolds wrote:
>
>> With the Jena API there's a separate validate() call on InfModel (and
>> thus on OntModel) which will return a list of validation error reports.
>>
>> I don't think there's any way to invoke that from Fuseki.
>>
>
> Thread drift ....
>
> Pull request 316 [1] is an addition to Fuseki (service side) to allow
> extension services to be added - like an "invoke inference" service or
> "validation report" service.
>
> "/datasets/query" is the query service on /dataset - an extension service
> would be "/datasets/validation-report" and it can have an HTTP query string.
>
> PR#316 is not an implementation of any new services but it means code can
> be added and wired into Fuseki for features not in the core system.
>
> If there are customization features that don't fit into the "add a
> service" style, do please give a use case and describe what is required.
>
>     Andy
>
> [1] https://github.com/apache/jena/pull/316
>
>
> Whether the builtin rule reasoners would detect your specific issue I'm
>> not sure but probably. However, in general if you want complete DL level
>> validation you need to use a DL reasoner such as Pellet which is not
>> included in Jena.
>>
>> Dave
>>
>>
>> On 28/11/17 20:08, Hélio Azevedo wrote:
>>
>>> Hi
>>>
>>> I have an ontology that was elaborated with the support of the Protégé
>>> tool.
>>> In this ontology I use a data property, named "objectId". This property
>>> was
>>> flagged as "Functional". If I insert two "objectId" for the same concept
>>> and activate the Pellet reasoner the Protégé tool signals an error.
>>>
>>> When loading the same ontology in Fuseki environment and inserting two
>>> "objectId" for the same concept, Fuseki does not acknowledge an error!
>>> The new objectId is inserted with the use of a Sparql endpoint.
>>>
>>> How should I proceed ?
>>>
>>> The reasoner activation on Fuseki is done by the configuration below:
>>>
>>> @prefix :      <http://base/#> .
>>> @prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
>>> @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>>> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
>>> @prefix fuseki: <http://jena.apache.org/fuseki#> .
>>>
>>>
>>> @prefix ontsense: <http://example.org/sense#> .
>>> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>>> @prefix owl: <http://www.w3.org/2002/07/owl#> .
>>>
>>>
>>>
>>> :service1  a                          fuseki:Service ;
>>>          fuseki:dataset                :dataset ;
>>>          fuseki:name                   "ontsense" ;
>>>          fuseki:serviceQuery           "query" , "sparql" ;
>>>          fuseki:serviceReadGraphStore  "get" ;
>>>          fuseki:serviceReadWriteGraphStore
>>>                  "data" ;
>>>          fuseki:serviceUpdate          "update" ;
>>>          fuseki:serviceUpload          "upload" .
>>>
>>> :dataset  a     ja:DatasetTxnMem ;
>>>    ja:defaultGraph <#model_inf_1> ;
>>>    .
>>>
>>> <#model_inf_1> rdfs:label "Inf-1" ;
>>>   ja:reasoner
>>>   [ ja:reasonerURL
>>>   <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>];
>>>
>>>
>>>
>>>
>>>
>>>
>>>


-- 
PhD Student
Robot Learning Laboratory LAR
ICMC - USP São Carlos - Brazil

Re: Fuseki Reasoner

Posted by Andy Seaborne <an...@apache.org>.

On 29/11/17 08:13, Dave Reynolds wrote:
> With the Jena API there's a separate validate() call on InfModel (and 
> thus on OntModel) which will return a list of validation error reports.
> 
> I don't think there's any way to invoke that from Fuseki.

Thread drift ....

Pull request 316 [1] is an addition to Fuseki (service side) to allow 
extension services to be added - like an "invoke inference" service or 
"validation report" service.

"/datasets/query" is the query service on /dataset - an extension 
service would be "/datasets/validation-report" and it can have an HTTP 
query string.

PR#316 is not an implementation of any new services but it means code 
can be added and wired into Fuseki for features not in the core system.

If there are customization features that don't fit into the "add a 
service" style, do please give a use case and describe what is required.

     Andy

[1] https://github.com/apache/jena/pull/316

> Whether the builtin rule reasoners would detect your specific issue I'm 
> not sure but probably. However, in general if you want complete DL level 
> validation you need to use a DL reasoner such as Pellet which is not 
> included in Jena.
> 
> Dave
> 
> 
> On 28/11/17 20:08, Hélio Azevedo wrote:
>> Hi
>>
>> I have an ontology that was elaborated with the support of the Protégé 
>> tool.
>> In this ontology I use a data property, named "objectId". This 
>> property was
>> flagged as "Functional". If I insert two "objectId" for the same concept
>> and activate the Pellet reasoner the Protégé tool signals an error.
>>
>> When loading the same ontology in Fuseki environment and inserting two
>> "objectId" for the same concept, Fuseki does not acknowledge an error!
>> The new objectId is inserted with the use of a Sparql endpoint.
>>
>> How should I proceed ?
>>
>> The reasoner activation on Fuseki is done by the configuration below:
>>
>> @prefix :      <http://base/#> .
>> @prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
>> @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
>> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
>> @prefix fuseki: <http://jena.apache.org/fuseki#> .
>>
>>
>> @prefix ontsense: <http://example.org/sense#> .
>> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>> @prefix owl: <http://www.w3.org/2002/07/owl#> .
>>
>>
>>
>> :service1  a                          fuseki:Service ;
>>          fuseki:dataset                :dataset ;
>>          fuseki:name                   "ontsense" ;
>>          fuseki:serviceQuery           "query" , "sparql" ;
>>          fuseki:serviceReadGraphStore  "get" ;
>>          fuseki:serviceReadWriteGraphStore
>>                  "data" ;
>>          fuseki:serviceUpdate          "update" ;
>>          fuseki:serviceUpload          "upload" .
>>
>> :dataset  a     ja:DatasetTxnMem ;
>>    ja:defaultGraph <#model_inf_1> ;
>>    .
>>
>> <#model_inf_1> rdfs:label "Inf-1" ;
>>   ja:reasoner
>>   [ ja:reasonerURL
>>   <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>];
>>
>>
>>
>>
>>
>>

Re: Fuseki Reasoner

Posted by Dave Reynolds <da...@gmail.com>.
With the Jena API there's a separate validate() call on InfModel (and 
thus on OntModel) which will return a list of validation error reports.

I don't think there's any way to invoke that from Fuseki.

Whether the builtin rule reasoners would detect your specific issue I'm 
not sure but probably. However, in general if you want complete DL level 
validation you need to use a DL reasoner such as Pellet which is not 
included in Jena.

Dave


On 28/11/17 20:08, Hélio Azevedo wrote:
> Hi
> 
> I have an ontology that was elaborated with the support of the Protégé tool.
> In this ontology I use a data property, named "objectId". This property was
> flagged as "Functional". If I insert two "objectId" for the same concept
> and activate the Pellet reasoner the Protégé tool signals an error.
> 
> When loading the same ontology in Fuseki environment and inserting two
> "objectId" for the same concept, Fuseki does not acknowledge an error!
> The new objectId is inserted with the use of a Sparql endpoint.
> 
> How should I proceed ?
> 
> The reasoner activation on Fuseki is done by the configuration below:
> 
> @prefix :      <http://base/#> .
> @prefix tdb:   <http://jena.hpl.hp.com/2008/tdb#> .
> @prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
> @prefix ja:    <http://jena.hpl.hp.com/2005/11/Assembler#> .
> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
> @prefix fuseki: <http://jena.apache.org/fuseki#> .
> 
> 
> @prefix ontsense: <http://example.org/sense#> .
> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
> @prefix owl: <http://www.w3.org/2002/07/owl#> .
> 
> 
> 
> :service1  a                          fuseki:Service ;
>          fuseki:dataset                :dataset ;
>          fuseki:name                   "ontsense" ;
>          fuseki:serviceQuery           "query" , "sparql" ;
>          fuseki:serviceReadGraphStore  "get" ;
>          fuseki:serviceReadWriteGraphStore
>                  "data" ;
>          fuseki:serviceUpdate          "update" ;
>          fuseki:serviceUpload          "upload" .
> 
> :dataset  a     ja:DatasetTxnMem ;
>    ja:defaultGraph <#model_inf_1> ;
>    .
> 
> <#model_inf_1> rdfs:label "Inf-1" ;
>   ja:reasoner
>   [ ja:reasonerURL
>   <http://jena.hpl.hp.com/2003/OWLFBRuleReasoner>];
> 
> 
> 
> 
> 
>