On 27/12/10 03:15, Benson Margulies wrote:
Goal here: (a) all triples with a subject which has a
'hasNormalizedText' of "Kerr" and also (b) all triples with a subject
which 'is owl:sameAs' one of the subjects from (a). Inference is not
turned on, so I have to (?) do this myself. I seem to be stuck on how
to get the rest of the triples for the subjects that pass the sameAs
test.
It will depend on which way round the owl:sameAs is written so you will
need to two cases for subject/object and object/subject.
CONSTRUCT{ ?s ?p ?o }
WHERE
{
GRAPH x-arq:UnionGraph {
# Items of interest.
?entity rex:hasNormalizedText "Kerr" .
#sets ?s by direct reference.
{ BIND(?entity AS ?s} }
UNION
# sets ?s by forward owl:sameAs
{ ?s owl:sameAs ?entity }
UNION
# sets ?s by backward owl:sameAs
{ ?entity owl:sameAs ?s }
# All triples of the subject
?s ?p ?o .
}
But it's weak in that only zero or one step of owl:sameAs is done.
Using property paths for any number of owl:sameAs in either direction
should work:
CONSTRUCT { ?s ?p ?o }
{
GRAPH x-arq:UnionGraph {
?entity rex:hasNormalizedText "Kerr" .
?entity (owl:sameAs|^owl:sameAs)* ?s
?s ?p ?o .
}
}
Andy
PREFIX rex:<http://www.basistech.com/ontologies/2010/6/rex.owl#>
PREFIX owl:<http://www.w3.org/2002/07/owl#>
PREFIX x-arq:<urn:x-arq:>
CONSTRUCT {
# all tuples with the selected entity as a subject
?entity ?pred ?val .
?corefEntity owl:sameAs ?entity .
}
WHERE
{
GRAPH x-arq:UnionGraph {
?entity rex:hasNormalizedText "Kerr" .
OPTIONAL { ?entity ?pred ?val }
OPTIONAL { ?corefEntity owl:sameAs ?entity }
}
}