Probabilmente c'è una risposta facile a questo, ma non riesco nemmeno a capire come formulare la query di Google per trovarlo.Come espandere in modo ricorsivo i nodi vuoti nella query del costrutto SPARQL?
Sto scrivendo query di costruzione SPARQL su un set di dati che include nodi vuoti. Quindi, se faccio una query come
CONSTRUCT {?x ?y ?z .} WHERE {?x ?y ?z .}
Poi uno dei miei risultati potrebbero essere:
nm:John nm:owns _:Node
che è un problema se tutti i
_:Node nm:has nm:Hats
le triple non ottengono in qualche modo il risultato della query (perché alcuni parser che sto usando come rdf alla lib per Python non piacciono davvero i bnodes pendenti).
C'è un modo per scrivere la mia query COSTRUZIONE originale per aggiungere in modo ricorsivo tutte le triple associate a qualsiasi risultato di bnode in modo tale che nessun bnode venga lasciato penzolare nel mio nuovo grafico?
Se stai facendo questo in un modo in cui è possibile eseguire una query costruire e quindi eseguire una query SPARQL contro che, in realtà si * può * ottenere una descrizione concisa-delimitato (CBD) utilizzando le query SPARQL. Dai un'occhiata a [Sparql query per restituire ricorsivamente tutte le triple che compongono un rdf: definizione della classe] (http://answers.semanticweb.com/questions/26220/sparql-query-to-return-all-triples-recursively- that-make-up-an-rdfsclass-definition) (e forse [Implementing Concise Bounded Description in SPARQL] (http://answers.semanticweb.com/questions/20361/implementing-concise-bounded-description-in-sparql)). –
L'idea alla base delle risposte nel commento precedente è che è possibile creare una * nuova proprietà * che agisce efficacemente come un predicato all'interno di un percorso di proprietà. Ad esempio, per ciascun nodo IRI i, si aggiunge una tripla "i selfIRI i". Quindi quando scrivi un percorso come "? X p/selfIRI? Y", hai assicurato che? Y è un nodo IRI. –