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

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

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

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

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


person Thomas Grainger    schedule 29.03.2013    source источник


Ответы (2)


В 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. Вы должны сами позаботиться об обновлении номера.

person loopasam    schedule 30.03.2013
comment
Я думаю, вы имеете в виду EquivalentClass, а не SubClassOf? - person Thomas Grainger; 05.04.2013
comment
Оба варианта приемлемы, все зависит от того, что вы хотите снять. Здесь это осторожное моделирование, без строгого утверждения (subClassOf), но также будет работать с equivalentClass (более сильные последствия при классификации онтологии). - person loopasam; 05.04.2013

Как указать в OWL, что свойство должно иметь набор упорядоченных значений? Например: Программа должна иметь rdf: Seq of Series, а серия должна иметь rdf: Seq of Episodes?

Если вы работаете в OWL (DL), вам не следует использовать коллекции RDF. ответ loopasam хорош, если вы можете переопределить отношение и включить номера позиций, но вы также можете объявить свою собственную структуру списка в OWL, аналогичный списку RDF (который является просто кодировкой RDF односвязного списка). Таким образом, вы могли иметь

:series hasEpisodeList [ ex:first :episodeA ;
                         ex:rest [ ex:first :episodeB ;
                                   ex:rest [ :episodeC ;
                                             ex:rest ex:nil ] ] ] .

Однако недостатком этого подхода является то, что числовая информация неявна, и ее трудно восстановить с помощью запросов DL (хотя это не так уж сложно с использованием SPARQL). Оба подхода к представлению последовательностей более подробно описаны в Упорядочивании сущностей в онтологии и в других вопросах и ответах. он ссылается на.

person Joshua Taylor    schedule 25.06.2014