The committers can find a file called 1k_news.nq.gz at people.apache.org:~bimargulies/
I thought that I had improved my sparql understanding today, and I tried to replace a three-way union with a single solution, since (I thought) that I finally had a moment of semi-enlightenment. However, the de-unioned query is busy running 'forever'. Was I better off with the unions in the first place? Is there a way to use a subquery to first identify the 'root' resources and then use them to follow the relationship links? PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rex: <http://jug.basistech.com/2011/01/rex-entity#> # prefixed used for injected predicate constraint, at least in a unit test. prefix rules: <http://www.basistech.com/ontologies/2010/12/rules#> CONSTRUCT { ?root ?p ?o . ?root ?rp ?orel . ?orel ?p2 ?o2 . ?osub ?p3 ?osubobj . ?rei1 ?rei_p1 ?rei_o1 . ?rei2 ?rei_p2 ?rei_o2 . } WHERE { GRAPH <urn:jug:global> { { # All the triples that have the desired text. ?root (rex:text|rex:alternativeText) "Bongani Khumalo" . # all the triples with that subject. ?root ?p ?o . FILTER (?p IN (rex:alternateText, rex:text, rex:translatedText, rex:corefChainDisplayDescription, rex:corefChainDisplayName, rex:documentId, rdf:type)) ?root ?rp ?orel . FILTER (?rp IN (<http://jug.basistech.com/2011/01/rex-entity#hasEmail>, <http://www.basistech.com/ontologies/2010/12/rules#hasPosition>, <http://www.basistech.com/ontologies/2010/12/rules#supplierOf>, <http://www.basistech.com/ontologies/2010/12/rules#hasParent>, <http://www.basistech.com/ontologies/2010/12/rules#withinOrganization>, <http://www.basistech.com/ontologies/2010/12/rules#hasEmail>, <http://www.basistech.com/ontologies/2010/12/rules#hasChild>, <http://jug.basistech.com/2011/01/rex-entity#communicatedWith>, <http://jug.basistech.com/2011/01/rex-entity#traveledTo>, <http://jug.basistech.com/2011/01/rex-entity#emailCcCoOccurence>, <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>, <http://www.basistech.com/ontologies/2010/12/rules#traveledTo>, <http://www.basistech.com/ontologies/2010/12/rules#releasedProduct>, <http://jug.basistech.com/2011/01/rex-entity#withinOrganization>, <http://www.basistech.com/ontologies/2010/12/rules#hasSpouse>, <http://www.basistech.com/ontologies/2010/12/rules#acquired>, <http://www.basistech.com/ontologies/2010/12/rules#hasSibling>, <http://jug.basistech.com/2011/01/rex-entity#metadataRelationship>, <http://jug.basistech.com/2011/01/rex-entity#hasSpouse>, <http://jug.basistech.com/2011/01/rex-entity#ruleRelationship>, <http://jug.basistech.com/2011/01/rex-entity#hasSibling>, <http://jug.basistech.com/2011/01/rex-entity#hasPosition>, <http://jug.basistech.com/2011/01/rex-entity#hasRelative>, <http://jug.basistech.com/2011/01/rex-entity#emailFromTo>, <http://jug.basistech.com/2011/01/rex-entity#hasParent>, <http://www.basistech.com/ontologies/2010/12/rules#costOfObject>, <http://www.basistech.com/ontologies/2010/12/rules#phoneNumber>, <http://jug.basistech.com/2011/01/rex-entity#hasChild>, <http://jug.basistech.com/2011/01/rex-entity#coOccurInSentence>, <http://www.basistech.com/ontologies/2010/12/rules#hasRelative>, <http://www.basistech.com/ontologies/2010/12/rules#communicatedWith>, <http://www.basistech.com/ontologies/2010/12/rules#nameChangeTo>)) # all our triples about s2. ?orel ?p2 ?o2 . FILTER (?p2 IN (rex:alternateText, rex:text, rex:translatedText, rex:corefChainDisplayDescription, rex:corefChainDisplayName, rex:documentId, rdf:type)) # grab reifications of rels between root and s2. ?rei1 rdf:subject ?root . ?rei1 rdf:object ?orel . ?rei1 rdf:predicate ?rp . # and all the facts about the rel. ?rei1 ?rei_p1 ?rei_o1 . # any subject that can be reached from there by a single relationship step. ?osub ?rp3 ?root . FILTER (?rp3 IN (<http://jug.basistech.com/2011/01/rex-entity#hasEmail>, <http://www.basistech.com/ontologies/2010/12/rules#hasPosition>, <http://www.basistech.com/ontologies/2010/12/rules#supplierOf>, <http://www.basistech.com/ontologies/2010/12/rules#hasParent>, <http://www.basistech.com/ontologies/2010/12/rules#withinOrganization>, <http://www.basistech.com/ontologies/2010/12/rules#hasEmail>, <http://www.basistech.com/ontologies/2010/12/rules#hasChild>, <http://jug.basistech.com/2011/01/rex-entity#communicatedWith>, <http://jug.basistech.com/2011/01/rex-entity#traveledTo>, <http://jug.basistech.com/2011/01/rex-entity#emailCcCoOccurence>, <http://www.basistech.com/ontologies/2010/12/rules#locatedAt>, <http://www.basistech.com/ontologies/2010/12/rules#traveledTo>, <http://www.basistech.com/ontologies/2010/12/rules#releasedProduct>, <http://jug.basistech.com/2011/01/rex-entity#withinOrganization>, <http://www.basistech.com/ontologies/2010/12/rules#hasSpouse>, <http://www.basistech.com/ontologies/2010/12/rules#acquired>, <http://www.basistech.com/ontologies/2010/12/rules#hasSibling>, <http://jug.basistech.com/2011/01/rex-entity#metadataRelationship>, <http://jug.basistech.com/2011/01/rex-entity#hasSpouse>, <http://jug.basistech.com/2011/01/rex-entity#ruleRelationship>, <http://jug.basistech.com/2011/01/rex-entity#hasSibling>, <http://jug.basistech.com/2011/01/rex-entity#hasPosition>, <http://jug.basistech.com/2011/01/rex-entity#hasRelative>, <http://jug.basistech.com/2011/01/rex-entity#emailFromTo>, <http://jug.basistech.com/2011/01/rex-entity#hasParent>, <http://www.basistech.com/ontologies/2010/12/rules#costOfObject>, <http://www.basistech.com/ontologies/2010/12/rules#phoneNumber>, <http://jug.basistech.com/2011/01/rex-entity#hasChild>, <http://jug.basistech.com/2011/01/rex-entity#coOccurInSentence>, <http://www.basistech.com/ontologies/2010/12/rules#hasRelative>, <http://www.basistech.com/ontologies/2010/12/rules#communicatedWith>, <http://www.basistech.com/ontologies/2010/12/rules#nameChangeTo>)) # all the triples about s3. ?osub ?p3 ?osubobj . FILTER (?p3 IN (rex:alternateText, rex:text, rex:translatedText, rex:corefChainDisplayDescription, rex:corefChainDisplayName, rex:documentId, rdf:type)) # grab reifications of rels between root and s2. ?rei2 rdf:object ?root . ?rei2 rdf:subject ?osub . ?rei2 rdf:predicate ?rp3 . # and all the facts about the rel. ?rei2 ?rei_p2 ?rei_o2 . } } }
