В 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. Вы должны сами позаботиться об обновлении номера.
personloopasamschedule30.03.2013
comment
Я думаю, вы имеете в виду EquivalentClass, а не SubClassOf?
- personThomas Grainger; 05.04.2013
comment
Оба варианта приемлемы, все зависит от того, что вы хотите снять. Здесь это осторожное моделирование, без строгого утверждения (subClassOf), но также будет работать с equivalentClass (более сильные последствия при классификации онтологии).
- personloopasam; 05.04.2013
Как указать в OWL, что свойство должно иметь набор упорядоченных значений? Например: Программа должна иметь rdf: Seq of Series, а серия должна иметь rdf: Seq of Episodes?
Если вы работаете в OWL (DL), вам не следует использовать коллекции RDF. ответ loopasam хорош, если вы можете переопределить отношение и включить номера позиций, но вы также можете объявить свою собственную структуру списка в OWL, аналогичный списку RDF (который является просто кодировкой RDF односвязного списка). Таким образом, вы могли иметь
Однако недостатком этого подхода является то, что числовая информация неявна, и ее трудно восстановить с помощью запросов DL (хотя это не так уж сложно с использованием SPARQL). Оба подхода к представлению последовательностей более подробно описаны в Упорядочивании сущностей в онтологии и в других вопросах и ответах. он ссылается на.