2013-03-29 1 views
3

Как указать в OWL, что свойство должно иметь набор упорядоченных значений?Как указать в OWL, что свойство должно иметь набор упорядоченных значений?

Например: программа должна иметь rdf: Seq of Series, а серия должна иметь rdf: Seq of Episodes?

Вместо этого онтология использует свойство http://purl.org/ontology/po/position.

Какой подход лучше?

ответ

0

В OWL (и RDF) сложно представлять последовательности, это больше о неупорядоченных наборах вещей. Лучший способ сделать это, я нахожу, - назначить число через свойство, затем отслеживать этот индекс и использовать его для перебора по мере необходимости.

Совиная онтология, представляющее то, что вы хотите, чтобы захватить может быть как то (с использованием синтаксис Манчестера - вы можете сохранить как .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. Вы должны сами позаботиться об обновлении номера.

+0

Я думаю, вы имеете в виду EquivalentClass not SubClassOf? –

+0

Вот как я и http://purl.org/ontology/po/ реализует это –

+0

Оба варианта приемлемы, это зависит от того, что вы хотите захватить. Здесь это осторожное моделирование, сильное утверждение ('subClassOf'), но оно будет работать и с эквивалентным классом (более сильные последствия, если вы классифицируете онтологию). – loopasam

0

Как указать в OWL, что Имущество должно иметь набор упорядоченных значений ? Например: программа должна иметь rdf: Seq of 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, а также в других вопросах и ответах, на которые он ссылается.

 Смежные вопросы

  • Нет связанных вопросов^_^