2015-06-30 2 views
0

Я знаю, что я могу положить аннотации на SubClassOf соотношения:OWL2: Можно ли поставить аннотацию на ObjectIntersectionOf?

SubClassOf(
    Annotation(rdfs:comment "This annotation is valid") 
    ObjectIntersectionOf(
     ObjectHasValue(:prop1 :instance1) 
     ObjectHasValue(:prop2 :instance2) 
    ) 
    ObjectHasValue(:prop3 :instance3) 
) 

Однако то, что я действительно хотел сделать это:

SubClassOf(
    ObjectIntersectionOf(
     Annotation(rdfs:comment "This annotation is invalid") 
     ObjectHasValue(:prop1 :instance1) 
     ObjectHasValue(:prop2 :instance2) 
    ) 
    ObjectHasValue(:prop3 :instance3) 
) 

То, что я хочу, чтобы создать аннотацию значимые для всех объектов с отношениями: prop1: instance1 и: prop2: instance, а не с отношением подкласса.

Я не хочу создавать класс для ObjectIntersectionOf, так как у меня будут тысячи таких классов на моем реальном примере.

Запуск гранула 2.3.1 на файл ниже, дает следующее сообщение об ошибке:

$ pellet.sh explain draft2.owl 

There are 1 input files: 
./draft2.owl 
Start loading 
org.semanticweb.owlapi.io.UnparsableOntologyException: Problem parsing file:/home/users/djogo/Desktop/ontologia%20tnm/draft2.owl 
Could not parse ontology. Either a suitable parser could not be found, or parsing failed. See parser logs below for explanation. 
The following parsers were tried: 
1) RDFXMLParser 
2) OWLXMLParser 
3) OWLFunctionalSyntaxOWLParser 
4) TurtleOntologyParser 
5) OWLOBOParser 
6) KRSS2OWLParser 
7) ManchesterOWLSyntaxOntologyParser 


Detailed logs: 
-------------------------------------------------------------------------------- 
Parser: RDFXMLParser 
org.xml.sax.SAXParseException; systemId: file:/home/users/djogo/Desktop/ontologia%20tnm/draft2.owl; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 

-------------------------------------------------------------------------------- 
Parser: OWLXMLParser 
org.xml.sax.SAXParseException; systemId: file:/home/users/djogo/Desktop/ontologia%20tnm/draft2.owl; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 

-------------------------------------------------------------------------------- 
Parser: OWLFunctionalSyntaxOWLParser 
Encountered "" at line 8, column 9. 
Was expecting one of: 
    (Line 7) 

-------------------------------------------------------------------------------- 
Parser: TurtleOntologyParser 
uk.ac.manchester.cs.owl.owlapi.turtle.parser.ParseException: Encountered "" at line 1, column 1. 
Was expecting one of: 


-------------------------------------------------------------------------------- 
Parser: OWLOBOParser 
org.coode.owlapi.obo.parser.TokenMgrError: Lexical error at line 6, column 12. Encountered: "\n" (10), after : "" 

-------------------------------------------------------------------------------- 
Parser: KRSS2OWLParser 
de.uulm.ecs.ai.owlapi.krssparser.ParseException: Encountered " <NAME> "Prefix "" at line 1, column 1. 
Was expecting: 
    <EOF> 


-------------------------------------------------------------------------------- 
Parser: ManchesterOWLSyntaxOntologyParser 
Encountered Prefix at line 1 column 1. Expected one of: 
    DifferentIndividuals: 
    Individual: 
    Class: 
    AnnotationProperty: 
    Import: 
    DisjointClasses: 
    ObjectProperty: 
    Datatype: 
    EquivalentClasses: 
    SameIndividual: 
    Prefix: 
    DataProperty: 
    DisjointProperties: 
    ValuePartition: 
(Line 1) 


    at uk.ac.manchester.cs.owl.owlapi.ParsableOWLOntologyFactory.loadOWLOntology(ParsableOWLOntologyFactory.java:236) 
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntology(OWLOntologyManagerImpl.java:880) 
    at uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.loadOntologyFromOntologyDocument(OWLOntologyManagerImpl.java:818) 
    at com.clarkparsia.pellet.owlapiv3.OWLAPILoader.parseFile(OWLAPILoader.java:142) 
    at org.mindswap.pellet.KBLoader.parse(KBLoader.java:99) 
    at com.clarkparsia.pellet.owlapiv3.OWLAPILoader.parse(OWLAPILoader.java:128) 
    at org.mindswap.pellet.KBLoader.createKB(KBLoader.java:65) 
    at pellet.PelletCmdApp.getKB(PelletCmdApp.java:210) 
    at pellet.PelletCmdApp.getKB(PelletCmdApp.java:198) 
    at pellet.PelletExplain.parseArgs(PelletExplain.java:204) 
    at pellet.Pellet.run(Pellet.java:104) 
    at pellet.Pellet.main(Pellet.java:59) 

draft2.owl

Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>) 
Prefix(:=<http://cipe.accamargo.org.br/ontologias/tnm.owl#>) 

Ontology(<http://cipe.accamargo.org.br/ontologias/tnm.owl> 

SubClassOf(
    ObjectIntersectionOf(
     Annotation(rdfs:comment "This annotation is invalid") 
     ObjectHasValue(:prop1 :instance1) 
     ObjectHasValue(:prop2 :instance2) 
    ) 
    ObjectHasValue(:prop3 :instance3) 
) 

ответ

1

Нет, я не думаю, что вы можете сделать это. Спецификация OWL 2 допускает аннотации онтологий, аксиом и сущностей, а сложные выражения классов не являются ни тем, ни другим (см. §10 Annotations).

Pellet не имеет ничего общего с этим, вы получаете ошибку от парсера OWL API FSS, поскольку ваша онтология синтаксически недействительна.

+0

Спасибо за ваш ответ. Есть ли у вас какие-либо предложения о том, как комментировать это? –

+0

Я не уверен, что понимаю, что вы подразумеваете под «созданием аннотации, значимой для всех объектов с ...». Что значимо? Если вы хотите, чтобы любой человек, который был выведен как экземпляр конъюнкции, каким-то образом был связан с конкретной аннотацией, тогда я не вижу иного способа, кроме введения нового имени класса (то есть нового объекта), которое является суперкласса конъюнкции, а затем аннотирование этого объекта. Это может, конечно, замедлить классификацию и загромождать ваш класс в Protege (или что-то еще). –

+0

Предположим, что выражение класса ObjectIntersectionOf (ObjectHasValue (: prop1: instance1) ObjectHasValue (: prop2: instance2a)) означает маленьких кошек и ObjectIntersectionOf (ObjectHasValue (: prop1: instance1) ObjectHasValue (: prop2: instance2b)) означает маленьких собак. Мне нужно знать, когда что-то маленькая собака или маленькая кошка, однако мне не нужен класс - я просто попрошу о мелочах или для всех размеров кошки. Поскольку у меня будет много размеров и множество животных, я хотел бы сохранить классы, чтобы получить лучшую производительность. –

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