CONSTRUCT {...}, INSERT {...}, or DELETE {...} statementsThe are times when you may want to post-process existing RDF triples, en route to creating enhanced data views.
For instance, you may want to enhance the literal values associated with annotation properties such as rdfs:label and rdfs:comment.
You can do this in CONSTRUCT {...}, INSERT {...}, or DELETE {...} construction templates, by including expressions wrapped in back-ticks, i.e.
--
`expression`
Here some SPARQL 1.1 Update Language examples showcasing how this is achieved using Virtuoso.
CONSTRUCT
{
?inst
rdfs:label
`bif:concat ( ?inst_label,
" Instance with up to ",
str(?core_val),
" logical processors and " ,
str(?sess_val) ,
" concurrent ODBC sessions from licensed host" )`
}
FROM <http://uda.openlinksw.com/pricing/>
WHERE
{
?inst a gr:Individual ,
oplweb:ProductLicense ;
rdfs:label ?inst_label ;
oplweb:hasMaximumProcessorCores ?core ;
oplweb:hasSessions ?sess .
?core a gr:QuantitativeValueInteger ;
gr:hasMaxValueInteger ?core_val .
?sess a gr:QuantitativeValueInteger ;
gr:hasValue ?sess_val .
}
You can see live results of this query.
SPARQL
INSERT INTO GRAPH <urn:mygraph>
{
?inst
rdfs:label
`bif:concat ( ?inst_label,
" Instance with up to ",
str(?core_val),
" logical processors and " ,
str(?sess_val) ,
" concurrent ODBC sessions from licensed host" )`
}
FROM <http://uda.openlinksw.com/pricing/>
WHERE
{
?inst a gr:Individual ,
oplweb:ProductLicense ;
rdfs:label ?inst_label ;
oplweb:hasMaximumProcessorCores ?core ;
oplweb:hasSessions ?sess .
?core a gr:QuantitativeValueInteger ;
gr:hasMaxValueInteger ?core_val .
?sess a gr:QuantitativeValueInteger ;
gr:hasValue ?sess_val .
};
Done. -- 406 msec.
SQL> SPARQL
SELECT ?label
FROM <urn:mygraph>
WHERE
{
?inst rdfs:label ?label
};
label
VARCHAR
_______________________________________________________________________________
ODBC Driver (Single-Tier Express Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ODBC Driver (Single-Tier Express Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
JDBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
OLEDB Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
ADO.NET Driver (Single-Tier Lite Edition) Instance with up to 16 logical processors and 5 concurrent ODBC sessions from licensed host
9 Rows. -- 31 msec.
SPARQL
DELETE FROM GRAPH <urn:mygraph>
{
?inst
rdfs:label
`bif:concat ( "JDBC Driver (Single-Tier Lite Edition) Instance with up to ",
str(?core_val),
" logical processors and ",
str(?sess_val),
" concurrent ODBC sessions from licensed host"
)`
}
FROM <http://uda.openlinksw.com/pricing/>
WHERE
{
?inst a gr:Individual ,
oplweb:ProductLicense ;
rdfs:label ?inst_label ;
oplweb:hasMaximumProcessorCores ?core ;
oplweb:hasSessions ?sess .
FILTER ( regex ( ?inst_label, "JDBC Driver" ) ) .
?core a gr:QuantitativeValueInteger ;
gr:hasMaxValueInteger ?core_val .
?sess a gr:QuantitativeValueInteger ;
gr:hasValue ?sess_val .
};
Done. -- 32 msec.
SQL> SPARQL
SELECT ?label
FROM <urn:mygraph>
WHERE
{
?inst rdfs:label ?label
};
label
VARCHAR
_______________________________________________________________________________
ODBC Driver (Single-Tier Express Edition) Instance with up to 16 logical ...
ODBC Driver (Single-Tier Express Edition) Instance with up to 16 logical ...
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
ODBC Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
OLEDB Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
ADO.NET Driver (Single-Tier Lite Edition) Instance with up to 16 logical processor ...
8 Rows. -- 16 msec.