Ist es möglich, Ergebnisse herauszufiltern, die einen nicht auflösbaren URI innerhalb der SPARQL-Abfrage enthalten?Wie filtert man nicht auflösbare URIs in einer SPARQL-Abfrage?
Ein Beispiel: Ich mache die folgende Abfrage (Endpunkt: http://linkeddata.systems:8890/sparql):
PREFIX RO: <http://www.obofoundry.org/ro/ro.owl#>
PREFIX SIO: <http://semanticscience.org/resource/>
PREFIX EDAM: <http://edamontology.org/>
PREFIX PHIO: <http://linkeddata.systems/ontologies/SemanticPHIBase#>
PREFIX PUBMED: <http://linkedlifedata.com/resource/pubmed/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX up: <http://purl.uniprot.org/core/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT DISTINCT ?disn_1 ?label ?rel ?valor
WHERE { ?disn_1 ?rel ?valor . ?disn_1 rdfs:label ?label FILTER((?disn_1 = <http://linkeddata.systems/SemanticPHIBase/Resource/host/HOST_00561>))}
In den Ergebnissen, wie Sie es sehen können ist Tapferkeit Variable eine dreifache, die einen nicht auflösbaren URI enthält? (Text:/hostncbitaxid /) Ich würde gerne wissen, ob es einen bestimmten FILTER gibt, der in der SPARQL-Abfrage hinzugefügt werden kann, um diese Ergebnisse mit nicht auflösbaren URIs zu entfernen.
Ich habe Probleme mit der API, die ich verwende, um diese Ergebnisse in C# zu verarbeiten, weil es eine Ausnahme wegen nicht auflösbarer URIs zurückgibt, also möchte ich sie in der SPARQL-Abfrage herausfiltern (wenn möglich).
Hallo Joshua, danke für deine Antwort. Ich habe schon so etwas gemacht, aber das Problem ist, dass es eines der Ergebnisse herausfiltert, dass es kein URI ist (konkret, das wo? Valor ist "" Host - null - HOST_00561 "" ". Ist es möglich filtere nur die Werte von? valor mit dem Typ "URI" heraus, und das, wie du sagtest, nicht mit http? – alejandrorg
@alejandrorg beginnt. Sicher, ändere den Filter einfach auf 'filter (! isURI (? x) || strstarts (str (? x), "http")) '. –