簡體   English   中英

文字作為SPARQL三元組中的主題

[英]Literals as subject in SPARQL triples

據我從SPARQL的語法https://www.w3.org/TR/sparql11-query/#sparqlGrammar所讀的內容中,可以將文字作為三元組的主題:

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

因此,可能會有一個三元組,例如:

 (3, rdfs:label, 'three')

我可以在Python的rdflib中處理這樣的三元組,但是當我嘗試在Virtuoso 06.01.3127版中使用SERVICE進行聯合SPARQL查詢時,Virtuoso抱怨。 這是我在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 .
    }
  }
}

這是Virtuoso問題,還是更普遍的SPARQL / RDF問題,還是我犯的編程錯誤?

很少(我認為當前計數為零)企業級三層或四層存儲處理“ Generalized RDF”,即允許在主題位置使用文字的RDF。 到目前為止,雖然在小規模上它可能是有用或有趣的,例如在CWM (TimBL的基於Python的封閉世界機器)中,它通常不能很好地擴展,但人們通常認為它不能很好地擴展。

Virtuoso是企業級DBMS,可處理表格SQL數據,圖形RDF數據等。 目前,對於計划的將來,Virtuoso將不會處理Generalized RDF。

綜上所述,應該注意的是,您正在運行的是2012年7月前后的Virtuoso。無論您是運行Commercial還是Open Source ,都已更新到最新版本(截至2016年4月,至少為7.2.4.2)。出於各種性能和功能方面的考慮,強烈建議使用此選項。

聲明: OpenLink Software生產Virtuoso ,並雇用了我。

即使在SPARQL 1.0時,SPARQL始終將文字作為語法的主題包括在內-來自某個位置的變量可以在另一位置使用,因此通過匹配文字即對象的變量無論如何都會發生。

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

當然,它們將與存儲的RDF不匹配。

構造規則說“拒絕這樣的三元組”。

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

暫無
暫無

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

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