2017-02-08 2 views
0

Ich muss die Pfadlänge zwischen zwei beliebigen Knoten des Dbpedia-Graphen finden, wenn eine Verbindung zwischen ihnen besteht. Zu diesem Zeitpunkt sind mir nur Start- und Endknoten bekannt und verbundene Eigenschaftswege sind nicht bekannt. Also, ich bin versucht, SPARQL-Abfrage zu schreiben wie:Finden Sie die Pfadlänge zwischen zwei Knoten des Dbpedia-Graphen-Netzwerks, ohne den zugrunde liegenden Eigenschaftspfad zu kennen.

PREFIX dbo:<http://dbpedia.org/ontology/> 
PREFIX dbp:<http://dbpedia.org/property/> 

select dbp:Video dbo:VideoGame (count(?mid) as ?length) 
where { 
    dbp:Video (<>|!<>)* ?mid . 
    ?mid (<>|!<>)+ dbo:VideoGame . 
} 
group by dbp:Video dbo:VideoGame 

Here I Pfadlänge zwischen Video und Videogame finden möge. Aber es gibt Fehler wie:

syntax error at 'dbo:VideoGame' before '}'

Kann jemand helfen, den richtigen zu schreiben?

Antwort

2

Die Fehlermeldung kann irreführend sein. Ein Problem, das ich sehe, ist, dass Sie keine Konstanten, nur Variablen auswählen können. Sie können einige binden Aussagen versuchen, sie in Variablen zu drehen:

PREFIX dbo:<http://dbpedia.org/ontology/> 
PREFIX dbp:<http://dbpedia.org/property/> 

select ?vid ?vidGame (count(?mid) as ?length) 
where { 
    BIND(dbp:Video AS ?vid) 
    BIND(dbo:VideoGame AS ?vidGame) 
    ?vid (<>|!<>)* ?mid . 
    ?mid (<>|!<>)+ ?vidGame . 
} 
group by ?vid ?vidGame 
+0

Nun ist es ein anderer Fehler geben: ** Virtuoso 42000 Fehler TN ...: Überschritten 1000000000 Bytes in transitiv temporären Speicher. Verwenden Sie t_distinct, t_max oder mehr T_MAX_memory Optionen, um die Suche zu begrenzen oder den Pool zu erhöhen ** –

+0

Wenn ich versuche, diese Abfrage von https://dbpedia.org/sparql auszuführen, gibt es den Fehler: ** Virtuoso 37000 Error SP031 : SPARQL-Compiler: Die Liste der Rückgabewerte enthält '*', aber das Muster enthält keine Variablen **. Kann jemand helfen? –

+0

Sie können versuchen, ein LIMIT zu verwenden, um zu verhindern, dass das Byte-Limit überschritten wird. In Bezug auf den Virtuoso-Fehler möchten Sie vielleicht den Anbieter kontaktieren. – scotthenninger

Verwandte Themen