2

何かのタイトルが rdfs:Literal であるべきだと言いたい場合は、次のようにします。

example:title a owl:DatatypeProperty ;
    rdfs:range rdfs:Literal .

ここで、何かがタイトルの順序付けられたリストを持っていることを表現したいと思います:

example:titles a rdf:List .

リストのメンバーを指定するにはどうすればよいですか? rdf:List をサブクラス化する必要がありますか?

更新: Joshua の回答に基づいて、可能であれば rdf:List を使い続けたいと思います。以下は、rdfs:Literal 値のみを持つ rdf:List は例であると言っていると思います:ListOfLiterals で、それを範囲。

@prefix entity: <http://example.com/stuff/> .
@prefix example: <http://example.com/my/term/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

example:ListOfLiterals a owl:Class ;
    owl:equivalentClass [
        a owl:Class ;
        owl:intersectionOf (
            rdf:List
            [
                a owl:Restriction ;
                owl:allValuesFrom rdfs:Literal ;
                owl:onProperty rdf:first
            ]
            [
                a owl:Restriction ;
                owl:allValuesFrom example:ListOfLiterals ;
                owl:onProperty rdf:rest
            ] )
    ] .

example:Book a owl:Class .

example:titles a owl:DatatypeProperty ;
    rdfs:domain example:Book ;
    rdfs:range example:ListOfLiterals .

entity:somebook a example:Book ;
    example:titles ( "Book Title"@en "Second Book Title"@en ) .

それは意味がありますか、それとも私は何かを誤解しましたか?

4

1 に答える 1