On 5/23/18 8:32 PM, Jason Koh wrote:
> Hi,
>
> First I would like to appreciate this community where I am receiving a
> lot of help. 
>
> I have a query would like to get answers but a variable predicate.
>
> The dataset is:
> ```
> # Insert Triples
> sparql
>
> prefix owl: <http://www.w3.org/2002/07/owl#>
> prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> prefix : <http://example.com#>
>
> insert data {
> graph <urn:proptest> {
> :PropB a owl:TransitiveProperty.
> :PropB1 rdfs:subPropertyOf :PropB.
> :PropB2 rdfs:subPropertyOf :propB1.
>
> :b a :EntityB.
> :b1 a :EntityB.
> :b2 a :EntityB.
> :aaa a :EntityB;
>      :propB :b;
>      :propB1 :b1;
>      :propB2 :b2.
> }
> };
> ```
> Basically there is "aaa" who is related to "b", "b1", "b2" with
> "PropB", "PropB1", "PropB2". And they have a hierarchy as PropB2 is a
> sub property of PropB1 that is a sub property of PropB.
>
> However, below query does not return anything:
> ```
> sparql
> prefix owl: <http://www.w3.org/2002/07/owl#>
> prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> prefix : <http://example.com#>
>
> select ?s ?p ?o from <urn:proptest> where {
> ?p rdfs:subPropertyOf* :PropB.
> ?s ?p ?o.
> };
> ```
>
> So I added reasoning rules based on Kingsley's previous comment.
>
> Here's the rule graph:
> ```
> sparql
> prefix owl: <http://www.w3.org/2002/07/owl#>
> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> prefix : <http://example.com#>
>
> insert data {
> graph <urn:proptest:rules> {
> :PropB a owl:TransitiveProperty.
> :PropB1 rdfs:subPropertyOf :PropB.
> :PropB2 rdfs:subPropertyOf :propB1.
> }
> };
> ```
>
> Then I inserted the rule with a command:
> ``rdfs_rule_set ('urn:proptest:rules', 'urn:proptest:rules') ;``
>
> Then I enabled the rule in the query:
> ```
> sparql
> DEFINE input:inference 'urn:proptest:rules'
> prefix owl: <http://www.w3.org/2002/07/owl#>
> prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
> prefix : <http://example.com#>
>
> select ?s ?p ?o from <urn:proptest> where {
> ?p rdfs:subPropertyOf* :PropB.
> ?s ?p ?o.
> };
> ```
> But still it does not return anything.
>
> I am not sure if the query is valid in SPARQL or there is something I
> miss in Virtuoso. 
>
> If there is anything that I can learn about, please let me know.
>
> Thank you!
>
>
> With regards,
> Jason Koh
> cseweb.ucsd.edu/~jbkoh <http://cseweb.ucsd.edu/%7Ejbkoh>


Jason,

Here is a complete script. Please study it.

```

-- Clear Graphs

SPARQL CLEAR GRAPH <urn:rdfs:inference:rules:def> ;
SPARQL CLEAR GRAPH <urn:rdfs:inference:rules:test>  ;



-- Load TBox Data

SPARQL
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <#>

INSERT DATA {
                GRAPH <urn:rdfs:inference:rules:def>
                {
                    rdfs:subPropertyOf a owl:TransitiveProperty .
                    rdfs:subClassOf a owl:TransitiveProperty .
                    :rel1 a rdf:Property .
                    :rel2 rdfs:subPropertyOf :rel1 .
                    :rel3 rdfs:subPropertyOf :rel2 .
                   
                }
};

-- Load Abox Data

SPARQL
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <#>

INSERT DATA {
                GRAPH <urn:rdfs:inference:rules:test>
                {
                    :this :rel3 :that .
                    :this :rel3 :that .
                    :that :rel2 :other .
                    :other :rel1 :final .
                }
};

SPARQL

SELECT *
FROM <urn:rdfs:inference:rules:def> 
WHERE {?s ?p ?o} ;

RDFS_RULE_SET ('urn:rdfs:inference:rules', 'urn:rdfs:inference:rules:def') ;

SELECT *
FROM DB.DBA.SYS_RDF_SCHEMA
WHERE RS_NAME = 'urn:rdfs:inference:rules' ;

-- Test Query 1 using Property Path "+" operator

SPARQL

DEFINE input:inference 'urn:rdfs:inference:rules'
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <#>

SELECT DISTINCT :this ?p ?o
FROM <urn:rdfs:inference:rules:test>
WHERE {
        :this :rel1+ ?o ;
               ?p ?o2.

} ;


-- Test Query 2 using Property Path "*" operator

SPARQL

DEFINE input:inference 'urn:rdfs:inference:rules'
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <#>

SELECT DISTINCT :this ?o ?p ?o2
FROM <urn:rdfs:inference:rules:test>
WHERE {
                :this :rel1* ?o .
                ?o ?p ?o2 .
} ;


```


-- 
Regards,

Kingsley Idehen       
Founder & CEO 
OpenLink Software   (Home Page: http://www.openlinksw.com)

Weblogs (Blogs):
Legacy Blog: http://www.openlinksw.com/blog/~kidehen/
Blogspot Blog: http://kidehen.blogspot.com
Medium Blog: https://medium.com/@kidehen

Profile Pages:
Pinterest: https://www.pinterest.com/kidehen/
Quora: https://www.quora.com/profile/Kingsley-Uyi-Idehen
Twitter: https://twitter.com/kidehen
Google+: https://plus.google.com/+KingsleyIdehen/about
LinkedIn: http://www.linkedin.com/in/kidehen

Web Identities (WebID):
Personal: http://kingsley.idehen.net/public_home/kidehen/profile.ttl#i
        : 
http://id.myopenlink.net/DAV/home/KingsleyUyiIdehen/Public/kingsley.ttl#this

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to