Reasoning with owl:unionOf and owl:intersectionOf

Hi/Hello
I want to share with you this great community the issues that I found during using Virtuoso.
First, I know that The Virtuoso built-in inferencing in the open-source product cannot support owl:unionOf, and owl:intersectionOf. In addition, I am using Virtuoso version: 08.03.3327. Although version 8 was installed, I could not handle complex inference rules. Please, I need some suggestions to bypass this issue.
I really appreciate any help you can provide.
The following is an example of my inference rule.

c:Measure rdf:type owl:Class ;
                      owl:equivalentClass [ owl:intersectionOf ( i:Attr
                                                                 [ rdf:type owl:Restriction ;
                                                                   owl:onProperty i:label ;
                                                                   owl:hasValue "meta"
                                                                 ]
                                                               ) ;
                                            rdf:type owl:Class
                                          ] ;
                      rdfs:subClassOf i:Attr ;
                      i:AttrType "con" ;
                      rdfs:label "MP"@en ,
                                 "Mät"@sv .

The Virtuoso built-in inferencing support is the same in the open source and commercial (version 8) products, with owl:unionOf and owl:intersectionOf not supported.

In the Virtuoso commercial version 8.x product only, support for custom inferencing rules using the SPIN vocabulary is supported, enabling users to create there own inference rules. Example scripts are available here.

1 Like

Thank you so much for this answer. It is really helpful to justify some decisions That I need to take.

To be clear, Virtuoso offers built-in and custom inference capability.

Built-in inference is based on RDF Schema and a subset of OWL (owl:sameAs, owl:equivalentClass, owl:equivalentProperty, owl:TransitiveProperty, owl:InverseFunctionalProperty, and owl:inverseOf).

Custom inference enables you create whatever custom relations you seek, courtesy of terms from the SPIN Vocabulary, using SPARQL CONSTRUCT as the Rules Language.