- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在测试 Sesame 2.7.2,当面对 DESCRIBE 查询不包含空白节点闭包这一事实时,我感到非常惊讶[编辑:正确的术语是 CBD for concise bounded description ]
如果我正确理解的话,SPARQL 规范对此相当宽松,并表示返回的内容实际上取决于提供者,但我仍然对这个选择感到惊讶,因为 bnodes (在描述查询的结果中)不能在后续 SPARQL 查询中使用。
所以问题是:如何获得资源的封闭描述 <uri1>
不做:
DESCRIBE <uri1>
DESCRIBE ?b WHERE { <uri1> pred_relating_to_bnode_ ?b }
如果我没记错的话,深度 2 bnodes 必须用
来描述DESCRIBE ?b2 WHERE {<uri1> <p1&> ?b . ?b <p2> ?b2 }
除非有更简单的方法来做到这一点?
最后,让 DESCRIBE
不是更好更简单吗?返回资源的封闭描述,您仍然可以获得当前返回的结果,如下所示?
CONSTRUCT {<uri1> ?p ?o} WHERE {<uri1> ?p ?o}
编辑:这是我想从 Sesame 获取的关闭结果的示例
<urn:sites#1> a my:WebSite .
<urn:sites#1> my:domainName _:autos1 .
<urn:sites#1> my:online "true"^^xsd:boolean .
_:autos1 a rdf:Alt .
_:autos1 rdf:_1 _:autos2
_:autos2 my:url "192.168.2.111:15001"@fr
_:autos2 my:url "192.168.2.111:15002"@en
当前:DESCRIBE <urn:sites#1>
返回与查询 CONSTRUCT WHERE {<urn:sites#1> ?p ?o}
相同的结果,所以我只得到这个
<urn:sites#1> a my:WebSite .
<urn:sites#1> my:domainName _:autos1 .
<urn:sites#1> my:online "true"^^xsd:boolean .
最佳答案
根据您的评论,这还不是一个精确的解决方案,但请注意,您可以在给定的 describe
查询中描述多个内容。例如,给定数据:
@prefix : <http://example.org/> .
:Alice :named "Alice" ;
:likes :Bill, [ :named "Carl" ;
:likes [ :named "Daphne" ]].
:Bill :likes :Elaine ;
:named "Bill" .
您可以运行查询:
PREFIX : <http://example.org/>
describe :Alice ?object where {
:Alice :likes* ?object .
FILTER( isBlank( ?object ) )
}
并获取结果:
@prefix : <http://example.org/> .
:Alice
:likes :Bill ;
:likes [ :likes [ :named "Daphne"
] ;
:named "Carl"
] ;
:named "Alice" .
这当然不是完整的描述,因为它只是遵循 :Alice
中的 :likes
,而不是任意谓词。但它确实获得了名为“Carl”
和“Daphne”
的空白节点,这是一个开始。
看起来您将不得不执行如上所述的操作,并且可能需要进行多次搜索,或者您将不得不修改 Sesame。编写一些创造性 SPARQL 的替代方法是更改 Sesame 实现描述查询的方式。有些端点使这相对容易,但 Sesame 似乎不是其中之一。有一个 2011 年的邮件列表线程,Custom SPARQL DESCRIBE Implementation ,这似乎解决了同样的问题。
罗伯托·加西亚问道:
I'm trying to customise the behaviour of SPARQL DESCRIBE queries. I'm willing to get something similar to CBD (i.e. all properties and values for the described resource plus all properties and values for the blank nodes connected to it).
I have tried to reproduce a similar behaviour using a CONSTRUCT query but the performance is not good and the query gets quite complex if I try to consider long chains of properties pointing to blank nodes starting from the described resource.
吉恩·布鲁克斯特拉回复:
The implementation of DESCRIBE in Sesame is hardcoded in the query parser. It can only be changed by adapting the parser itself, and even then it will be tricky, as the query model has no easy way to express it either: it needs an extension of the algebra.
> If this is not possible, any advice about how to implement it using CONSTRUCT queries?
I'm not sure it's technically possible to do this in a single query. CBDs are recursive in nature, and while SPARQL does have some support for recursivity (property chains), the problem is that you have to do an intermediate check in every step of the property chain to see if the bound value is a blank node or not. This is not something that SPARQL supports out of the box: property chains are defined to have only length of the path as the stop condition.
Perhaps something is possible using a convoluted combination of subqueries, unions and optionals, but I doubt it.
I think the best workaround is instead to use the standard DESCRIBE format that Sesame supports, and for each blank node value in that result do a separate consecutive query. In other words: you solve it by hand.
The only other option is to log a feature request for support of CBDs in Sesame. I can't give any guarantees about if/when that will be followed up on though.
关于sparql - 如何使用 Sesame 获得资源的简洁有界描述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363199/
我正在使用 SPARQL,我想知道是否可以在 in 子句中放入 sparql?更具体地说,我需要获取对此 sparql 查询具有特定条件的实体(s1,s2)[s1 在某个字段上的聚合值大于 5] se
我们有办法在 SPARQL 中做一个不减少的累加和吗? 例如, SELECT ?p WHERE { VALUES ?p { 1 1 2 } } ORDER BY ?p 将导致 1 2 4, - 而
在这个小片段中,第二行的 a 是做什么的? CONSTRUCT { ?uri a skos:Concept ; skos:prefLabel ?prefLabel ; 我确
我写了一个 Sparql 查询。 PREFIX table: SELECT ?name ?color FROM WHERE { ?element table:group ?group. ?gro
下面的两个查询有什么区别吗? select distinct ?i where{ ?i rdf:type . FILTER EXISTS { ?i ?b.
我不太明白为什么在SPARQL中他们没有实现基本的逻辑运算符。然而,在大多数情况下,可以通过多种方式获得相同的结果。 这个问题的目的是快速引用可以替代“or”语句的可能方式。 这是我能想到的: 1)联
我的问题很简单:我有一个源my:g1,其中包含: my:a1 my:b "literal 1" 然后我有第二个源my:g2,其中包含: my:a2 my:b my:c. my:c rdfs:label
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我有以下 SPARQL 查询: PREFIX rdfs: PREFIX type: PREFIX prop: SELECT * WHERE { ?person a foaf:Per
我想知道如何在sparql中表达以下问题: “请告诉我每个 child 都上麻省理工学院的 parent ” 更一般地说,我想知道查询 sparql 的限制是什么?请问数据库中有哪些类型的答案不能
我正在尝试编写一个优雅的 SPARQL,为多个可能的查询提供一个解决方案。我有多个主语和多个谓词,我想接收一个对象。单一解决方案的存在非常不确定,因此我给出了多种选择。如果我没记错的话,这可以通过以下
这是一个关于 Sparql 和 Wikidata 的问题。我想制定一个返回实例类型关系的查询,但如果它不可用,则返回其子类。我尝试过: SELECT DISTINCT ?ent_type WHER
我想做一些类似的事情 { SELECT ?page, "A" AS ?type WHERE { ?s rdfs:label "Microsoft"@en;
我正在尝试进行 SPARQL 查询,该查询返回一个变量,其中包含两个单词,由某些内容分隔。实际上,我尝试获取一个变量,如 ?πληθυσμός_population(希腊语和英语)。但是,我更喜欢与“
我想知道 SPARQL 默认情况下是否采用开放世界假设,或者这是否取决于执行 SPARQL 查询的三元组存储。 这个假设在查询中的含义是什么。 致以诚挚的问候。 最佳答案 嗯.... 我想知道这对于这
我在处理数字数据类型时遇到 SPARQL 问题。 我有一个本体 ( http://cabas.ugr.es/ontology/ugr ),我在其中定义了一对属性,表示特定性别的学生人数:
我正在玩DBPedia . 通过这个查询,我得到了所有出生在伦敦的人: SELECT ?person WHERE { ?person dbo:birthPlace :London } 但
我需要处理 SPARQL 查询。有没有人有很好的链接来学习 SPARQL 查询?我正在寻找有关 SPARQL 查询和示例语法的好文章,以便我可以快速学习。 最佳答案 Lee Feigenbaum 的
我有一个 SPARQL 查询,它在 Virtuoso SPARQL 查询编辑器中运行时提供结果,但相同的查询在 SPARQL 查询验证器中给出语法错误。问题是什么?为什么显示语法错误? PREFIX
我正在运行 sparql 查询 PREFIX rdfs: PREFIX rdfs: SELECT DISTINCT(?film_link) ?film_name ?wiki
我是一名优秀的程序员,十分优秀!