hi, again.
there might be a fundamental difference about the view
what inference is or i'm fundamentaly misusing virtuoso
- i have to confess that i'm spoiled by owlim.
here's exactly what i do :
1. DB.DBA.RDF_LOAD_RDFXML (http_get
('http://www.w3.org/2009/08/skos-reference/skos-owl1-dl.rdf'), 'no',
'urn:rules.skos');
2. DB.DBA.RDF_LOAD_RDFXML (http_get ('http://www.w3.org/2002/07/owl.rdf'),
'no', 'urn:rules.skos');
3. DB.DBA.RDF_LOAD_RDFXML (http_get
('http://turnguard.com/virtuoso/test10.rdf'), 'no',
'http://www.turnguard.com/virtuoso');
4. rdfs_rule_set ('skos-inference', 'urn:rules.skos');
(note: test10.rdf is more or less the same data i sent two mails ago, i added
one concept with a skos:related property,
please open in a browser and take a look, the following queries are about these
five concepts)
now if i do :
Query :
define input:inference "skos-inference"
SELECT *
FROM <http://www.turnguard.com/virtuoso>
WHERE
{
<http://www.turnguard.com/ElectroPop> ?p ?o
}
Expected :
Expected result with support for symmetricProperty would include http://www.turnguard.com/KrautRock
(Solution : <http://www.turnguard.com/ElectroPop> skos:related <http://www.turnguard.com/KrautRock>)
Expected result with support for inverseOf would include
(Solution : <http://www.turnguard.com/ElectroPop> skos:broader <http://www.turnguard.com/TechnoPop>)
at least these two solutions are missing.
essentially i get the exact same results as with the previous release (6.0.)
the only thing that
for sure works as expected is rdfs:subPropertyOF
all these tests were made on
./virtuoso-t -?
Virtuoso Open Source Edition (multi threaded)
Version 6.1.0.3126-pthreads as of Feb 4 2010
Compiled for Linux (i686-pc-linux-gnu)
Copyright (C) 1998-2010 OpenLink Software
with a complete fresh installation and newly imported data.
any idea really appreciated
wkr turnguard
Okay, think we found out what amiss here, basically missing docs re. the
use of the Transitive Option when using this inference feature.
You can test the no SPARUL and Rule Creation bits via the following
endpoints:
1. http://lod.openlinksw.com/sparql
2. http://uriburner.com/sparql
Example based on Relationship Vocab:
## Verify Ontology Data is in Quad Store by using Sponger pragmas to
re-load cache if missing
## Ontology: <http://vocab.org/relationship/> (Relationship Ontology)
DEFINE get:soft "replace"
SELECT *
FROM <http://vocab.org/relationship/>
WHERE {?s ?p ?o}
## Clean up instance data graph
CLEAR GRAPH <urn:owl.tests.data>
## Create Instance Data for Relationship Ontology
PREFIX rel: <http://purl.org/vocab/relationship/>
INSERT into GRAPH <urn:owl.tests>
{<http://kingsley.idehen.name/dataspace/person/kidehen#this>
rel:employedBy <http://www.openlinksw.com/dataspace/organization#this>.
<http://myopenlink.net/dataspace/person/tthibodeau#this> rel:worksWith
<http://kingsley.idehen.name/dataspace/person/kidehen#this>.
<http://kingsley.idehen.name/dataspace/person/kidehen#this>
rel:worksWith <http://demo.openlinksw.com/dataspace/person/demo#this>.}
## Verify instance data graph has expected data
SELECT *
FROM <urn:owl.tests> where {?s ?p ?o}
-- SQL mode
-- Create Inference Rule that references the Relationship Ontology Named
Graph
rdfs_rule_set ('urn:owl.tests', 'http://vocab.org/relationship') ;
-- Verify rule creation (just a double check)
SELECT * FROM sys_rdf_schema ;
## Back to RDF realm
## Test owl:TransitiveProperty Reasoning
## Start with a specific URI
## Goal: See inferred Triples
## In this case, relationship between:
<http://myopenlink.net/dataspace/person/tthibodeau#this>
## and <http://demo.openlinksw.com/dataspace/person/demo#this>)
## NOTE: use of the Transitivity Option re. (T_DISTINCT)
DEFINE input:inference 'urn:owl.tests'
PREFIX rel: <http://purl.org/vocab/relationship/>
SELECT *
FROM <urn:owl.tests>
WHERE {
<http://myopenlink.net/dataspace/person/tthibodeau#this>
rel:worksWith ?o OPTION (T_DISTINCT)
}
## OR
## Should get all combinations of workWith relationships in solution
## Including the inferred triple
DEFINE input:inference 'urn:owl.tests'
PREFIX rel: <http://purl.org/vocab/relationship/>
SELECT ?o ?o2
FROM <urn:owl.tests>
WHERE {
<http://myopenlink.net/dataspace/person/tthibodeau#this>
rel:worksWith ?o OPTION (T_DISTINCT).
?o rel:worksWith ?o2 OPTION (T_DISTINCT).
}
## Test owl:SymmetricalProperty Reasoning
## Should show same data irrespective of worksWith data in Subject or
Object slots of Triple
DEFINE input:inference 'urn:owl.tests'
PREFIX rel: <http://purl.org/vocab/relationship/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT *
FROM <urn:owl.tests>
WHERE {<http://kingsley.idehen.name/dataspace/person/kidehen#this>
rel:worksWith ?o OPTION (T_DISTINCT)}
## OR
DEFINE input:inference 'urn:owl.tests'
PREFIX rel: <http://purl.org/vocab/relationship/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT *
FROM <urn:owl.tests>
WHERE {?s rel:worksWith
<http://kingsley.idehen.name/dataspace/person/kidehen#this> OPTION
(T_DISTINCT)}
## Test owl:inverseOf Reasoning
## Should show triples exposing the inverseOf relation.
## In this case rel:employerOf instance data triple exist, so the system
should add the inverse triples for rel:employedBy
DEFINE input:inference 'urn:owl.tests'
PREFIX rel: <http://purl.org/vocab/relationship/>
SELECT *
FROM <urn:owl.tests>
WHERE {?s rel:employedBy ?o}
Conclusion:
Due to docs trailing the release the need for Transitivity option wasn't
clear :-)
Kingsley
----- Original Message -----
From: "Kingsley Idehen" <kide...@openlinksw.com>
To: "Jürgen Jakobitsch" <jakobits...@punkt.at>
Cc: virtuoso-users@lists.sourceforge.net
Sent: Thursday, February 4, 2010 3:34:03 PM
Subject: Re: [Virtuoso-users] 6.1 owl support
Jürgen Jakobitsch wrote:
hi,
first, congrats to the new release and the many improvements.
is there a doc or could you shed some light on how i would
have to understand support for owl:SymmetricProperty, owl:inverseOf
and owl:TransitiveProperty?
any pointer really appreciated
wkr turnguard
Sure, we're still rolling things out, but stay tuned for examples.
BTW - this simply means that you can have the assertions in an OWL graph
that is used for an Inference Rules context (as per usual), then when
you SPARQL (with inference rules pragma) see the effects on the solution
based on the inference context.