SELECT ?ln ?ns
WHERE {
LET (?ln := afn:localname(<http://dbpedia.org/resource/Belle_de_jour_(film)>)) .
LET (?ns := afn:namespace(<http://dbpedia.org/resource/Belle_de_jour_(film)>)) .
}
results in

This is how we solved this issue.
SELECT ?ln ?ns ?fn ?li ?name ?namespaceWe work with the complete string to find the position of the last '/'.
WHERE {
LET (?ns := afn:namespace(<http://dbpedia.org/resource/Belle_de_jour_(film)>)) .
LET (?ln := afn:localname(<http://dbpedia.org/resource/Belle_de_jour_(film)>)) .
LET (?fn := fn:concat(?ns, ?ln)) .
LET (?li := (smf:lastIndexOf(?fn, "/") + 1)) .
LET (?name := afn:substr(?fn, ?li)) .
LET (?namespace := afn:substr(?fn, 0, ?li)).
}
CONSTRUCT {:X a void:Dataset.
:X void:statItem _:b0.
_:b0 scovo:dimension void:numberOfTriples.
_:b0 rdf:value ?triples.:X void:statItem _:b1.
_:b1 scovo:dimension void:numberOfResources.
_:b1 scovo:dimension skos:Concept.
_:b1 rdf:value ?concepts.
:X void:statItem _:b2.
_:b2 scovo:dimension void:numberOfResources.
_:b2 scovo:dimension dcterms:Agent.
_:b2 rdf:value ?agents.
:X void:statItem _:b3.
_:b3 scovo:dimension void:numberOfDistinctSubjects.
_:b3 rdf:value ?nrsubj.
:X void:statItem _:b4.
_:b4 scovo:dimension void:numberOfDistinctObjects.
_:b4 rdf:value ?nrobj.
}
WHERE {
LET (?triples := smf:countMatches(?s, ?p, ?o)) .
LET (?concepts := smf:countMatches(?concept, rdf:type, skos:Concept)) .
LET (?agents := smf:countMatches(?agent, rdf:type, dcterms:Agent)) .
LET (?nrsubj := smf:countResults("SELECT DISTINCT ?s WHERE {?s ?p ?o.}")) .
LET (?nrobj := smf:countResults("SELECT DISTINCT ?o WHERE {?s ?p ?o.}")) .
}Once again using heavily TopQuadrant's SparqlMotion specific SPARQL extension functions.
Comments