[英]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不匹配。
构造规则说“拒绝这样的三元组”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.