在neo4j快速查询窗格中,有“关系类型”和“属性键”,它们在Neo4j cypher 查询语法的上下文中有意义。
在SPARQL中,有没有办法区分作为属性的三元组和作为属性的三元组?
我想一些示例数据可能如下所示:
<actor12> <http://some.ontology.com/#ActedIn> <movie45> #relationship
<movie45> <http://some.ontology.com/#title> “Gone with the Wind" #property key/val
答案 0 :(得分:6)
SPARQL 是一种针对特定数据模型的查询语言,由RDF数据定义的查询语言。通常,它用于查询RDF或OWL数据。
RDF定义properties而不在对象引用属性和数据引用属性中对它们进行分类。您可以通过检查它们的范围来间接区分它们。如果它们的范围是XSD属性,那么您可以推断它是一个数据引用属性。
OWL实际上对两种属性进行了正式区分。这些名称为 object properties和data properties 。因此,如果使用OWL数据模型,则可以通过其OWL类直接识别属性的类型。你称之为“关系类型”的实际上是“对象属性”,而你称之为“属性键”的那些是OWL术语中的“数据属性”。它们分别被识别为owl:ObjectProperty和owl:DatatypeProperty类的实例。
希望我帮忙!
答案 1 :(得分:3)
您可以通过测试来检查数据对象是否是文字:
?s ?p ?o
FILTER (isLiteral(?o) )
答案 2 :(得分:2)
Pantelis Natsiavas正确points out,在OWL中,您可以区分对象和数据类型属性。您询问了如何在SPARQL中执行此操作。 owl:DatatypeProperty
和owl:ObjectProperty
是RDFS类,因此您可以查询事物是否是它们的实例。例如,您可以从DBpedia请求数据属性:
select ?property where {
?property a owl:DatatypeProperty
}
limit 10