2014-01-16 56 views
1

​​3210在SPARQL中,我可以区分关系和属性键吗?

在Neo4j的快速查询窗格中,有“关系类型”和“属性键”,这是有意义的Neo4j的暗号查询语法的情况下。

在SPARQL中,是否有一种方法可以区分作为属性的关系和三元组的三元组?

我想一些示例性数据可以是如下所示:

<actor12> <http://some.ontology.com/#ActedIn> <movie45>   #relationship 
<movie45> <http://some.ontology.com/#title> “Gone with the Wind" #property key/val 

回答

6

SPARQL针对一个特定的数据模型,由RDF数据定义的一个的查询语言。通常用于查询RDFOWL数据。

RDF限定properties而不对象闯民宅属性数据引用属性 distiguishing它们。您可以通过检查其范围来间接区分它们。如果它们的范围是XSD属性,那么您可以推断它是一个数据引用属性。

OWL实际上正式区分了这两种属性。这些被称为,object propertiesdata properties。因此,如果您使用OWL数据模型,则可以直接通过OWL类识别属性的类型。你称之为“关系类型”的实际上是“对象属性”,你称之为“属性关键字”的是OWL术语中的“数据属性”。它们分别被标识为owl:ObjectPropertyowl:DatatypeProperty类的实例。

希望我帮了忙!

2

Pantelis Natsiavas正确points out在OWL中,您可以区分对象和数据类型属性。您询问了如何在SPARQL中执行此操作。 owl:DatatypePropertyowl:ObjectProperty是RDFS类,因此您可以查询事情是否是它们的实例。举例来说,你可以从DBpedia中要求的数据属性:

select ?property where { 
?property a owl:DatatypeProperty 
} 
limit 10 

SPARQL results

3

你可以用一个测试检查数据的对象是否是一个文字:

?s ?p ?o 
    FILTER (isLiteral(?o)) 
+0

你可以制定一个位? – Kristian

+1

@Kristian你所说的属性键将RDF文字作为值,而不是URI或空白节点。如果搜索'?s?p?o'并且只接受匹配,其中'?o'是一个文字,那么每个'?p'都将是一个数据类型属性(在OWL中)。实际上,这是不正确的,因为注释属性也可能具有字面值,但是其中的想法是:如果您查找具有字面值的属性,则会找到具有字面值的属性。 –

相关问题