【发布时间】:2020-10-27 13:12:44
【问题描述】:
我有一组信息(当然不是全部显示):
s:Marshmallow rdfs:subClassOf s:Android
s:galaxyEdge6 s:OS s:Marshmallow;
s:price 350.
...
我想查询同时是安卓且价格低于400的手机。
我的查询:
SELECT ?phone WHERE {
?phone s:OS ?system
?system rdfs:subClassOf s:Android
?phone s:price ?value
} FILTER (?value < 400)
根据我上面的查询,我是否需要包含?system rdfs:subClassOf s:Android?或者我可以删除该行并将其上方的行更改为:?phone s:OS s:Android?
【问题讨论】:
-
试一试,如果你这样做会怎样?剧透:它应该是空的,因为在您的数据中,图形模式是
?phone s:OS ?system . ?system rdfs:subClassOf s:Android,即从手机到作为操作系统的 Android 的 2 条边 -
另外,您应该知道您使用的是与类和个人相同的 URI。
-
嗯?我不太清楚你的意思:/
-
是什么意思?在您的数据中,手机连接到连接到 Android 的操作系统。所以你的 SPARQL 查询必须完全使用这个图形模式。只是做
?phone s:OS s:Android与您数据中的任何内容都不匹配。并且不可能进行推理。一个常见的推理规则是X rdf:type C . C rdfs:subClassOf D => X rdf:type D- 这显然不在您的数据范围内。 -
顺便说一句,您的问题包含一些错误/类型:
s:Marshmaloow和s:Anroid以及过滤器在查询之外。请使您的示例尽可能正确。
标签: database sparql rdf rdfs turtle-rdf