2016-05-29 9 views
0

Ich habe eine SPARQL-Abfrage, die die Hauptstädte Europas und ihre Bevölkerung zurückgibt. Die Abfrage sieht so aus:SPARQL Abfrage endgültiges Label

select ?s ?pop 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> 
} 

In diesem Zustand gibt es die Namen der Städte in der folgenden Form zurück: z. "<http://dbpedia.org/resource/London>" und was ich will, ist in diesem Fall nur London anzuzeigen. Also, gibt es eine Möglichkeit, SPARQL zu sagen, dass ich nur das endgültige Label möchte?

Ich Abfrage gegen diesen Endpunkt: https://rdf.s4.ontotext.com/4730361296/demo01/repositories/test01

Antwort

0

Die Beratung hier ist ähnlich wie in anderen Fragen - SPARQL verwenden, um die Daten zu überprüfen. Also versuchen Sie zuerst diese Abfrage, um zu sehen, ob es irgendwelche Label Eigenschaften sind definiert:

select * 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> . 
    ?s ?p ?o . 
} 

In diesem Fall finden Sie, dass keine Label Eigenschaften haben für place Klassendefinitionen definiert. Falls gewünscht, können Sie den lokalen Namen verwenden - den Text nach dem letzten Schrägstrich (oder Hash) als Namen. Versuchen Sie diese Abfrage:

select * 
where { 
    ?s <http://dbpedia.org/ontology/populationTotal> ?pop . 
    ?s a <http://dbpedia.org/ontology/place> . 
    BIND(REPLACE(xsd:string(?s), ".*[/#]", "") AS ?label) 
}