2016-05-06 7 views
1

dieser Datenstruktur gegebenfolgenden Namespaces in SPARQL Query

@prefix core <http://www.w3.org/2004/02/skos/core#> 
<http://localhost/myvocab/1> core#notation 1 . 
<http://localhost/myvocab/1> <http://www.w3.org/2006/time#inDateTime> <http://localhost/myvocab/item1#DateDescription> . 

<http://localhost/myvocab/item1#DateDescription> <http://www.w3.org/2006/time#year> 2016 ; 
      <http://www.w3.org/2006/time#month> "June" 

Wenn ich

laufen
select * where {?s ?p ?o . 
        <http://www.w3.org/2004/02/skos/core#notation> 1 . } 

dann nur die ersten 2 Dreibettzimmer (:hasID und :hasTime) zurückgegeben werden. Gibt es eine Sparql-Abfrage (vorzugsweise nicht mit einem Regex-Filter für den Abgleich der ID), um alle Tripel aus den Kind-Namespaces auch zurückzugeben?

Ich gehofft, ich kann entlang der Linien von

------------------------------------------------------------------------------------------------------------------------------------------------------- 
| s            | p            | o            | 
======================================================================================================================================================= 
| <http://localhost/myvocab/item1>     | <http://www.w3.org/2006/time#inDateTime>  | <http://localhost/myvocab/item1#DateDescription | 
| <http://localhost/myvocab/item1>     | <http://www.w3.org/2004/02/skos/core#notation> | 1            | 
| <http://localhost/myvocab/item1#DateDescription> | <http://www.w3.org/2006/time#month>   | "June"           | 
| <http://localhost/myvocab/item1#DateDescription> | <http://www.w3.org/2006/time#year>    | 2016           | 
------------------------------------------------------------------------------------------------------------------------------------------------------- 
+0

Was meinst du mit "Kind Namespaces"? Du meinst, dass du den Eigenschaften folgen willst, um das Jahr 2016 und den Monat Juni auch zu bekommen? –

+0

@JoshuaTaylor yeh. (Also, was ist der korrekte Oberbegriff für diese?) – ChrisW

+0

Die '<.../item1 # DateTime>' ist nur eine weitere Ressource. Sie versuchen auch, die Eigenschaften/Werte von dieser Ressource abzurufen (und möglicherweise rekursiv, um diesen zu folgen). Ich denke nicht, dass es einen bestimmten Begriff dafür gibt, aber in SPARQL können Sie einen * Eigenschaftspfad * verwenden, um ihn zu finden. Sie * könnte * interessiert sein an dem Begriff [prägnante beschränkte Beschreibung] (https://www.w3.org/Submission/CBD/), der relevant ist, obwohl nicht genau das, wonach Sie hier fragen, seit '<. ../ item # DateTime> 'ist kein leerer Knoten. –

Antwort

2

Es hilft immer ein Ergebnis etwas erreichen, wenn Sie Daten, die wir tatsächlich laden und Eigentum gebildet Abfragen, die Sie versucht haben. Die Daten, die Sie angezeigt haben, sind weder tatsächlich legal noch die von Ihnen angegebene Abfrage. Hier einige Beispieldaten, die tatsächlich ladbar ist:

@prefix core: <http://www.w3.org/2004/02/skos/core#> 

<http://localhost/myvocab/1> core:notation 1 ; 
          <http://www.w3.org/2006/time#inDateTime> <http://localhost/myvocab/item1#DateDescription> . 

<http://localhost/myvocab/item1#DateDescription> <http://www.w3.org/2006/time#year> 2016 ; 
               <http://www.w3.org/2006/time#month> "June" 

Wenn ich Sie verstehen, können Sie die folgen möchten: zu item1_DateTime Eigenschaften des Objekts. Sie können dies mit einem folgenden Eigenschaftenpfad tun: Eigenschaften und Wert von item1 usw. In dieser Abfrage verwende ich (: |! :) als Platzhalter, da jede Eigenschaft entweder : ist oder nicht. Die * am Ende bedeutet, Pfade beliebiger Länge zu folgen.

prefix core: <http://www.w3.org/2004/02/skos/core#> 

select ?s ?p ?o where { 
    ?s_ core:notation 1 ; 
     (<>|!<>)* ?s . 
    ?s ?p ?o . 
} 
-------------------------------------------------------------------------------------------------------------------------------------------------- 
| s            | p          | o            | 
================================================================================================================================================== 
| <http://localhost/myvocab/1>      | <http://www.w3.org/2006/time#inDateTime> | <http://localhost/myvocab/item1#DateDescription> | 
| <http://localhost/myvocab/1>      | core:notation       | 1            | 
| <http://localhost/myvocab/item1#DateDescription> | <http://www.w3.org/2006/time#month>  | "June"           | 
| <http://localhost/myvocab/item1#DateDescription> | <http://www.w3.org/2006/time#year>  | 2016            | 
-------------------------------------------------------------------------------------------------------------------------------------------------- 
+0

Als erstes klarstellen: Ist ': item1 # DateTime' keine legale Ressource? – ChrisW

+0

Ein IRI kann sicherlich in einem solchen Fragment enden, aber ich denke nicht, dass man # im Turtle-Stil abgekürzt IRI wie ': item # fragment' verwenden kann. –

+0

Ah, ok - danke. Ich schätze, das hängt damit zusammen, warum Sie es durch '_' ersetzt haben - aber ich kämpfe immer noch mit der Einhaltung der Hash-URLs, denen ich gegenübergestanden bin. – ChrisW