2014-01-16 54 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中)。實際上,這是不正確的,因爲註釋屬性也可能具有字面值,但是其中的想法是:如果您查找具有字面值的屬性,則會找到具有字面值的屬性。 –

相關問題