2017-05-10 34 views
1

據我從SPARQL https://www.w3.org/TR/sparql11-query/#sparqlGrammar的語法閱讀它允許有文字作爲三重主題:常量作爲主題在SPARQL三倍

[75] TriplesSameSubject ::= VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList 
[106] VarOrTerm  ::= Var | GraphTerm 
[109] GraphTerm  ::= iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | NIL 

因此,這將有可能有三重這樣如:

(3, rdfs:label, 'three') 

我可以在Python的rdflib處理這樣的三元,但是當我試圖讓與炫技版06.01.3127 SERVICE聯合SPARQL查詢,炫技抱怨。下面是我執行在當地的錯誤消息,在安裝http://localhost:8890/sparql

Virtuoso 37000 Error SP031: SPARQL compiler: No one quad map pattern is suitable for GRAPH _:_::default_8_4 { 3 <http://www.w3.org/2000/01/rdf-schema#label> ?s } triple at line 8 

SPARQL query: 
define sql:big-data-const 0 
#output-format:text/html 
define sql:signal-void-variables 1 PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT ?s WHERE { 
    SERVICE <http://127.0.0.1:5000/sparql> { 
    SELECT ?s WHERE { 
     3 rdfs:label ?s . 
    } 
    } 
} 

這是一個炫技問題,或者這是一個更一般的SPARQL/RDF問題 - 或編程錯誤,我做什麼呢?

+1

它被添加到SPARQL 1.1今後遵守,但尚未獲準無論是在RDF 1.0也不RDF 1.1 – AKSW

+0

'TriplesSameSubject :: = VarOrTerm PropertyListNotEmpty'似乎已經已經在第一SPARQL HTTPS被引入://www.w3.org/TR/rdf-sparql-query/#rTriplesSameSubject –

回答

3

很少(我認爲當前計數爲零)企業級三重或四店處理「廣義RDF」,這是RDF,允許在主體位置的文字。到目前爲止,人們普遍認爲這種方法不夠好,儘管它在小規模上可能有用或有趣,例如TimBL基於Python的封閉世界機器CWM

Virtuoso是一個企業級DBMS,處理表格式SQL數據,圖形化RDF數據等等。目前,對於未來計劃,Virtuoso不會處理廣義RDF。

所有這一切,應該指出,你正在運行一個相當老的Virtuoso,從2012年7月左右開始。無論你是運行Commercial還是Open Source,更新到更新的版本(至少7.2.4.2 2016年4月)強烈建議用於各種性能和功能性原因。

ObDisclaimer:OpenLink Software產生Virtuoso,並僱用我。

+0

是的,版本比較老。我從Ubuntu 16.04 LTS發行版安裝了它。我不知道爲什麼它沒有在該版本的Ubuntu中更新。 –

2

SPARQL始終包括文字如受試者中,即使在SPARQL 1.0語法 - 從一個位置變量可以通過變量匹配文字-as主體發生無論如何在另一個這樣使用。

SPARQL 1.0:
https://www.w3.org/TR/rdf-sparql-query/#sparqlTriplePatterns
SPARQL 1.1:
https://www.w3.org/TR/sparql11-query/#sparqlTriplePatterns

當然,它們不會爲存儲匹配RDF。

CONSTRUCT的規則說「拒絕這樣的三元組」。

https://www.w3.org/TR/sparql11-query/#construct