簡體   English   中英

DotNetRDF sparql查詢以獲取具有特定資源的主題

[英]DotNetRDF sparql query to get subjects with a specific resource

我對Sparql查詢有一點問題。 我想讓所有主題都具有“TopologicalNode”類型,帶有一個名為“BaseVoltage”的謂詞和一個特定的資源(在這個例子中,'#_aa9')

有一個我的.xml樣本

<cim:TopologicalNode rdf:ID="_f4d">   
    <cim:IdentifiedObject.name>dj</cim:IdentifiedObject.name>
    <cim:TopologicalNode.BaseVoltage rdf:resource="#_2a9"/>
</cim:TopologicalNode>

<cim:TopologicalNode rdf:ID="_738">    
    <cim:IdentifiedObject.name>iT</cim:IdentifiedObject.name>
    <cim:TopologicalNode.BaseVoltage rdf:resource="#_a5c"/>   
</cim:TopologicalNode>

<cim:TopologicalNode>
    <cim:TopologicalNode rdf:ID="_2a2">
    <cim:IdentifiedObject.name>Hi</cim:IdentifiedObject.name>
    <cim:TopologicalNode.BaseVoltage rdf:resource="#_2a9"/>
    <cim:TopologicalNode.ConnectivityNodeContainer rdf:resource="#_d7a"/>
</cim:TopologicalNode>

我的查詢不起作用(遇到一個終止三重模式的令牌,但有太多的令牌形成一個有效的三重模式)

"SELECT ?s  WHERE {?s rdf:type cim:TopologicalNode; cim:TopologicalNode.BaseVoltage ?o rdf:resource '#_2a9';}"

我也試圖直接把完整的URI ...同樣的錯誤!

"SELECT ?s  WHERE {?s rdf:type cim:TopologicalNode; cim:TopologicalNode.BaseVoltage ?o rdf:resource <example.org/EQ#_2a9>;}"

我的錯是什么? 它必須在第三塊,因為我看到這是有效的

"SELECT ?s  WHERE {?s rdf:type cim:TopologicalNode; cim:TopologicalNode.BaseVoltage ?o }"  

非常感謝你 !

您的查詢是無效的SPARQL,如果您包含一些空格,您可以很容易地看到:

SELECT ?s  
WHERE 
{
  ?s rdf:type cim:TopologicalNode ; 
     cim:TopologicalNode.BaseVoltage ?o rdf:resource '#_2a9' ;
}

經過?o ,你立即宣布另一個謂語和賓語對,但不包括任何其他標點令牌分離,表明一個新的三重圖案所以解析器是完全正確的,給你這個錯誤。 當然,錯誤可能更有幫助,但這是一個單獨的問題。

您可以通過插入一個額外的分號字符來修復您的查詢,如下所示:

SELECT ?s  
WHERE 
{
  ?s rdf:type cim:TopologicalNode ; 
     cim:TopologicalNode.BaseVoltage ?o ;
     rdf:resource '#_2a9' ;
}

順便說一句,你仍然不會得到任何結果,因為rdf:resource只是RDF / XML的序列化細節,不會顯示在你的數據中。 您可能想要的只是使用URI代替?o如此:

SELECT ?s  
WHERE 
{
  ?s rdf:type cim:TopologicalNode ; 
     cim:TopologicalNode.BaseVoltage <http://example.org#_2a9> ;
}

當然,您可能仍需要稍微調整一下以使用正確的URI,但這應該指向正確的方向

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM