2015-05-19 27 views
1

我想創建一個關於會場信息的RDFS模式,其中包含例如:在RDFS中重新定義和聲明屬性

地址信息。

我發現了另一個關於它的模式:https://schema.org/Place它有屬性地址信息。

第一個問題是我可以申報的場地也有地址嗎? 我已經知道,我可以使用該屬性而無需聲明它。我想宣佈它使我的模式更清晰的原因。

<?xml version="1.0"?> 

    <rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:place="https://schema.org/Place#" 
    xml:base="http://localhost:3000/VenueSchema#"> 

    <rdfs:Class rdf:ID="Venue"> 
    <rdfs:subClassOf rdf:resource="https://schema.org/Place"/> 
    </rdfs:Class> 

    <rdf:Property rdf:ID="address"> 
     <rdf:type source:"https://schema.org/Place#address"> 
    </rdf:Property> 

    </rdf:RDF> 

第二個問題是我可以重新定義該屬性的地址?它可以實現覆蓋或超載效果嗎?

<?xml version="1.0"?> 

<rdf:RDF 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:place="https://schema.org/Place#" 
xml:base="http://localhost:3000/VenueSchema#"> 

<rdfs:Class rdf:ID="Venue"> 
<rdfs:subClassOf rdf:resource="https://schema.org/Place"/> 
</rdfs:Class> 

    <rdf:Property rdf:ID="address"> 
    <rdfs:domain rdf:resource= "#Venue"> 
    <rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Literal"/> 
</rdf:Property> 

</rdf:RDF> 

回答

2

的第一個問題是,我可以申報地點也有 地址的財產?我已經知道我可以使用該財產而無需聲明 它。我想宣佈它使我的模式更清晰的原因。

在RDFS中沒有屬性。屬性可以聲明域和範圍,但不會使屬性屬於類。當你說

                p RDFS:域d

你是說,當X P Y [,您可以推斷X RDF:類型d。這就是所有的領域公理。範圍公理是相似的,但可以讓您推斷出和的類型。您可以在屬性上聲明附加的域和範圍,但請注意,這意味着您將能夠推斷出該屬性屬於所有域。例如,如果你說:

                hasFoot RDFS:域大象

                hasFoot RDFS:域人

然後當你看到那個Jimbo hasFoot腳73,你將能夠推斷出Jimbo是一個人類和一頭大象。

第二個問題是我可以重新定義物業地址嗎? 可以實現覆蓋或超載效果嗎?

您可以說關於資源的其他內容;這是關於語義網的奇妙之處之一。然而,你不能讓別人收回他們所說的話,儘管你可以自由地忽略他們所說的話。也就是說,即使其他人已經聲明瞭屬性,也可以包含聲明。 RDF數據模型基於三元組的集合,三元組不包含重複項,所以無論您說出一次還是一百次都沒有區別。

但是,談論重寫或重載沒有意義。我在之前的一些早期問題的答案中已經說過,但是RDF不是面向對象的編程語言,儘管它具有屬性和類的概念。屬性只是一個IRI。它沒有任何行爲或副作用。您可以說有關財產的其他內容,並且您忽略了其他人對他們所說的事情,但您可以重寫或重載財產。

您可以定義子屬性,這可能是有用的。例如,你可以說:

:hasParent a rdfs:Property ; 
      rdfs:range :Human . 

:hasMother a rdfs:Property ; 
      rdfs:range :Woman ; 
      rdfs:subPropertyOf :hasParent . 

如果你這樣做,那麼當你說X hasMotherŸ,則可以推斷Ÿ女人,你可以推斷出即x hasParent y

+0

假設:hasParent a rdfs:Property; rdfs:range:Human。在file1中定義。當我只在file2中寫入時沒有提及範圍和域,只有:hasParent源:file1#hasParent。 file2在file1中有範圍和域嗎? – AlexWei

+0

@AlexWei我不知道「hasParent source:file1#hasParent」。應該是這個意思。如果你不加載第一個文件,那麼你將不會在第一個文件中有內容。 –

+0

這裏我的意思是在文件2中:我想指定hasParent已經在file1中定義了。這樣file2會得到file1中的範圍和域嗎? – AlexWei