2017-02-20 3 views
0

Meine Ontologie IRI ist "http://mycompany.com/ontologies/quality". Ich möchte „Suche alle Personen mit einem bestimmten Objekteigenschaft (hasSolution)“Warum generiert diese SPARQL-Abfrage einen Fehler

SELECT ?subject 
    WHERE { ?subject hasSolution <http://mycompany.com/ontologies/quality#Issue> } LIMIT 10 

Es verursacht diese Fehlermeldung zu finden:

Caused by: org.openrdf.query.parser.sparql.ast.TokenMgrError: Lexical error at line 8, column 30. Encountered: " " (32), after : "hasSolution" 
    at org.openrdf.query.parser.sparql.ast.SyntaxTreeBuilderTokenManager.getNextToken(SyntaxTreeBuilderTokenManager.java:3499) 
    at org.openrdf.query.parser.sparql.ast.SyntaxTreeBuilder.jj_ntk(SyntaxTreeBuilder.java:8861) 

Antwort

2

ich das Problem hier vermuten, wie Sie Ihr Prädikat ausgedrückt haben - es sollte in IRI Form sein, entweder über Winkel-Klammern wie folgt aus:

SELECT ?subject 
    WHERE { 
    ?subject <http://mycompany.com/ontologies/hasSolution> <http://mycompany.com/ontologies/quality#Issue> 
    } 
    LIMIT 10 

Oder die Prefix-Anweisung Sie etwas zu geben:

PREFIX mycoont: <http://mycompany.com/ontologies/> 
SELECT ?subject 
WHERE 
{ 
?subject mycoont:hasSolution <http://mycompany.com/ontologies/quality#Issue> 
} 
LIMIT 10 

oder allgemeiner, wenn Sie nicht wissen, was das Prädikat IRI genau ist, können Sie es Teil einer Abfrage machen:

SELECT ?subject ?predicate 
    WHERE { 
    ?subject ?predicate <http://mycompany.com/ontologies/quality#Issue> 
    } 
    LIMIT 10 

Und die Ergebnisse erforschen - die zurück Prädikat Werte sollte ausgedrückt werden als vollständige IRIs oder, abhängig von Ihrer Abfrage-Engine, als eine Form von Präfix: Suffix-Anordnung.

Bei der Untersuchung der Ergebnisse sollten Sie einfach in der Lage sein, den entsprechenden Wert in das Prädikat triple Ihrer WHERE-Klausel einzufügen und das Prädikat triple aus Ihrer SELECT-Klausel zu entfernen.

Verwandte Themen