Hi Kingsley,

Do you mean that if I modify the query in a following way it should work 
without any problem?

PREFIX:  sq:<http://our_schema><http://our_schema>

SELECT *
FROM  <http://this_is_the_graph_name >
WHERE
{
    ?customer sq:hasOrder ?order .
    ?order sq:hasGoods ?goods .
    ?goods sq:Name ?goodsName . FILTER (?goodsName in ('Name1', 'Name2')) .
    ?goods sq:hasSubCategory ?subCategory . #note that subcategory is IRI
    ?subCategory sq:hasParentCategory ?category #note that category is IRI
};
Thank you.
Best regards,
Alexander Efimov.

From: Kingsley Idehen [mailto:kide...@openlinksw.com]
Sent: Monday, December 14, 2015 11:49 PM
To: virtuoso-users@lists.sourceforge.net
Subject: Re: [Virtuoso-users] Find out which SQL query is generated from my 
SPARQL

On 12/14/15 11:34 AM, Efimov, Alexander wrote:
Hi Kingsley,

The idea is that our concept model I map to with R2RML is not the same as 
source tables.
So just  using output from Generate RDF Views would not work.
I write custom R2RML code which maps from flat DB model to graph concept model

For example:

Let it be the following tables:


1.       Goods

a.       ID Integer

b.      Name String

c.       Category String

d.      SubCategory String



2.       Customer

a.       ID Integer

b.      Name String



3.       Order

a.       ID Integer

b.      Goods ID Integer

c.       Customer ID Integer

These three tables map to our Concept model which is a bit different from table 
structure and I'm executing SPARQL Query like this:

PREFIX:  sq:<http://our_schema><http://our_schema>

SELECT *
FROM  <http://this_is_the_graph_name >
WHERE
{
    ?customer sq:hasOrder ?order .
    ?order sq:hasGoods ?goods .
    ?goods sq:Name ?goodsName . FILTER (?goodsName in ('Name1', 'Name2')) .
    ?goods sq:hasSubCategory ?subCategory . #note that subcategory is IRI
    ?subCategory a sq:SubCategory .
    ?subCategory sq:hasParentCategory ?category #note that category is IRI
    ?subCategory a sq:Category .
};

In my particular case I map data from ~10 views to ~13 classes in our concept 
model and WHERE statement is a bit longer.



You have a number of rdf:type relations in your query which pose problems 
unless you leverage the use of physical triples sync'd with transient triples 
(the product of loading your r2rml mappings).

Command:

RDF_VIEW_SYNC_TO_PHYSICAL ('{virtual-triples-named-graph-iri}', 1, 
'{physical-triples-named-graph-iri}');

Example:

Given a named-graph containing virtual triples (result of loading your r2rml 
declarations) identified by the IRI 
<http://demo.openlinksw.com/SQLServer#><http://demo.openlinksw.com/SQLServer>, 
you could make the physical sync replica using a named-graph that holds 
physical triples identified by the IRI: <urn:demo.openlinksw.com:SQLServer> 
using the command:

RDF_VIEW_SYNC_TO_PHYSICAL 
('http://demo.openlinksw.com/SQLServer#<http://demo.openlinksw.com/SQLServer>', 
1, 'urn:demo.openlinksw.com:SQLServer');

Virtuoso will keep <urn:demo.openlinksw.com:SQLServer> in sync with 
<http://demo.openlinksw.com/SQLServer#><http://demo.openlinksw.com/SQLServer> 
and that named graph should be the target of queries that are scoped to 
rdf:type relations.

Links:

[1] 
http://kidehen.blogspot.com/2015/07/conceptual-data-virtualization-across.html
[2] http://docs.openlinksw.com/virtuoso/fn_rdf_view_sync_to_physical.html  .




--

Regards,



Kingsley Idehen

Founder & CEO

OpenLink Software

Company Web: http://www.openlinksw.com

Personal Weblog 1: http://kidehen.blogspot.com

Personal Weblog 2: http://www.openlinksw.com/blog/~kidehen

Twitter Profile: https://twitter.com/kidehen

Google+ Profile: https://plus.google.com/+KingsleyIdehen/about

LinkedIn Profile: http://www.linkedin.com/in/kidehen

Personal WebID: http://kingsley.idehen.net/dataspace/person/kidehen#this
------------------------------------------------------------------------------
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to