我使用隐士推理器和Java加载了带有Pizza.owl文件的Neo4j。 当我通过一个简单的查询时:
match (n) where n="name:Pizza" return n;
我收到以下错误
Don't know how to compare that. Left: Node[1]{name:"owl:Thing"} (NodeProxy); Right: "name:Pizza" (String)
NodeProxy是数据类型吗?我怎样才能让他们两个进行比较。我可以在查询时进行投射吗?是否有任何查询来更改整个图节点的数据类型?如何检查节点的类型?
答案 0 :(得分:5)
您正在将节点n
与字符串“name:Pizza”进行比较,这是没有意义的。您想要的是将节点name
的属性n
与字符串“Pizza”进行比较:WHERE n.name = "Pizza"
。然后整个查询看起来像这样
MATCH (n)
WHERE n.name = "Pizza"
RETURN n
节点实际上没有类型。请查看Neo4j manual更多关于nodes, relationships, properties and labels和Cypher的信息,特别是WHERE
clause。