如何在OWL中聲明屬性必須具有一組有序值?如何在OWL中聲明屬性必須具有一組有序值?
例如:一個程序必須有一個rdf:Seq of Series,而一個Series必須有一個rdf:Seq of Episodes?
http://purl.org/ontology/po/本體使用屬性http://purl.org/ontology/po/position來代替。
哪種方法更好?
如何在OWL中聲明屬性必須具有一組有序值?如何在OWL中聲明屬性必須具有一組有序值?
例如:一個程序必須有一個rdf:Seq of Series,而一個Series必須有一個rdf:Seq of Episodes?
http://purl.org/ontology/po/本體使用屬性http://purl.org/ontology/po/position來代替。
哪種方法更好?
OWL(和RDF)很難表示序列,它更多的是關於無序集合的東西。我發現最好的方法是通過屬性分配一個數字,然後跟蹤這個索引並在需要時使用它來迭代。
代表你想要的拍攝也可以成爲這樣的OWL本體(採用曼徹斯特語法 - 你可以保存爲.owl文件,並與Protege開放 - #
是註釋):
Prefix: xsd: <http://www.w3.org/2001/XMLSchema#>
Prefix: owl: <http://www.w3.org/2002/07/owl#>
Prefix: : <brain#>
Prefix: xml: <http://www.w3.org/XML/1998/namespace>
Prefix: rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
Prefix: dc: <http://purl.org/dc/elements/1.1/>
Prefix: rdfs: <http://www.w3.org/2000/01/rdf-schema#>
Ontology: <brain.owl>
Datatype: xsd:int
ObjectProperty: has
Characteristics:
Transitive
# Property used to save the number in the sequence
DataProperty: episode-number
Range:
xsd:int
# Definition of a program: A program as at least a series
Class: Program
SubClassOf:
has some Series
Class: owl:Thing
# Definition of series: A series as at least one episode
Class: Series
SubClassOf:
has some Episode
Class: Episode
# Instance of episode
Individual: episode1
Types:
Episode
# Episode number
Facts:
episode-number "1"^^xsd:int
# Second instance of episode
Individual: episode2
Types:
Episode
Facts:
episode-number "2"^^xsd:int
比方說,然後你想迭代劇集實例。這可以通過OWL查詢Episode and episode-number value 1
來實現。你必須照顧自己更新號碼。
如何在OWL中聲明屬性必須具有一組有序的 值?例如:一個程序必須有一個rdf:Seq of Series,而一個 Series必須有一個rdf:Seq of Episodes?
如果您使用的是OWL(DL),那麼您不應該真的在使用RDF集合。 loopasam's answer是很好的,如果你可以通過關係來定義和包含位置編號,但是你也可以在OWL中聲明自己的列表結構,類似於RDF列表(這只是單向鏈表的RDF編碼)。因此,你可以有
:series hasEpisodeList [ ex:first :episodeA ;
ex:rest [ ex:first :episodeB ;
ex:rest [ :episodeC ;
ex:rest ex:nil ] ] ] .
缺點這種方法,雖然是數量的信息僅僅是隱含的,這是很難用DL查詢重建(雖然它不是太難使用SPARQL)。這兩種表示序列的方法都在Ordering of entities in an ontology以及鏈接的其他問題和答案中有更詳細的描述。
我想你的意思是EquivalentClass而不是SubClassOf? –
這就是我和http://purl.org/ontology/po/實現這個 –
這兩個選項都是可以接受的,它取決於你想要捕獲的東西。在這裏,它是謹慎的建模,沒有強大的斷言('subClassOf'),但也可以與'equivalentClass'一起工作(在對本體進行分類時會產生更強烈的後果)。 – loopasam