2016-04-23 3 views
0

Guten Abend alle Ich habe eine einfache Ontologie mit nur einer Klasse (Methoden) erstellt und haben DataProperty action_nb (ganze Zahl) und Typ Hexe ist (String) und kann nur sein (Wahl, Rang, Art), dann eine Abfrage zum Beispiel searche verwenden: die Methode, bei der Aktionsnummer type = "Wahl"Erstellen Sie einzelne in Protege mit DataProperties Einschränkung

  1. wählen, wie Sie die action_nb in einem intervale ex zu erklären: methode1 => action_nb zwischen [10 , 30].

  2. Wie deklariert man den Typ mit den drei Werten ex: methode1 => type: "choice";

dies der Code ist, dass ich jetzt haben:

SELECT ?inst 
WHERE { 
    ?inst ex:action_nb ?value . 
    ?inst es:type ?typ. 

    FILTER (?value < 80) 
    FILTER (?typ = " tri ") 
} 
+0

1) Die Einschränkung des Datentyps wird in [dieser Antwort] erläutert (http://stackoverflow.com/questions/36245420/protege-datatype-restriction/36296355#36296355). 2) Ich würde vorschlagen, dies als Objekt-Eigenschaft und nicht als Datentyp-Eigenschaft zu deklarieren, mit einem Bereich eine aufgezählte Klasse, die nur die drei Individuen erlaubt, die "Wahl", "Rang" und "Sortieren" repräsentieren. –

+0

danke sir ... 2) ich denke, das ist alles was ich brauche, um eine der drei Arten zu wählen, ich erklärte es in der Datenproperty als falow {"choix", "rank", "tri"} ich habe ein Problem Jetzt mit der Verwendung in der FILTER – zaky2016

+0

Ich habe ein bisschen mehr in einer Antwort ausgearbeitet. Lassen Sie mich wissen, wenn das hilft. –

Antwort

1

Für 1), können Sie Datentypeigenschaft Einschränkungen verwenden können, erklärt here

für 2), sollten Sie owl:oneOf verwenden. Dies können Sie entweder mit aufgelisteten Klassen oder aufgelisteten Datentypen tun:

Aufzählung Klassen können nur Mitglieder innerhalb einer deklarierten Liste von RDF-Ressourcen (Einzelpersonen) haben. Sie können für jede Auswahl eine andere Person erstellen und dann eine Klasse MethodType mit äquivalenter Klasse die Liste {choice, rank, sort}. Bitte beachten Sie, dass die geschweiften Klammern in Protégé so aussehen. In Turtle wird es wie folgt aussehen:

:MethodType 
    rdf:type owl:Class ; 
    owl:equivalentClass [ 
     rdf:type owl:Class ; 
     owl:oneOf (
      :choice 
      :rank 
      :sort 
     ) ; 
    ] ; 
. 

Aufzählungsdatentypen sind Bereichseinschränkungen aus Listen von RDF-Literale, in Ihrem Fall die rdfs:rangeowl:oneOf {"choice", "rank", "sort"} sein wird. (Anmerkungen: 1. Der Kommentar zu den geschweiften Klammern hält hier gut war; 2.Dieser kann auch mit Eule erreicht werden. AllValuesFrom Einschränkungen)

Wenn die typeOP und typeDP sind espectively die Objekteigenschaft für den ersten Ansatz, und die Daten-Eigenschaft für das zweite könnte die Abfragen sein:

SELECT * 
WHERE { 
?m a :Method; 
:typeOP ?t . 

FILTER EXISTS {?m :typeOP :choice} 
} 

und

SELECT * 
WHERE { 
?m a :Method; 
:typeDP ?t . 

FILTER EXISTS {?m :typeDP "choice"} 
} 

sind.

+0

Ich verwendete Aufzählungs Datatypes Ich erklärte die Datenproperty von (Typ) in den Datenbereich Ausdruck wie diese {"Wahl", "rank", "sort"}. wenn ich jetzt frage, benutzte ich FILTER (? typ = "tri") ist das wahr? – zaky2016

+0

Sie können entweder 'FILTER {? inst es: type 'tri"} 'verwenden, was ich' Ich empfehle in Ihrem Fall, oder 'FILTER regex (? inst," tri ")'. –

+0

Ich habe diese Abfrage verwendet, wie Sie gesagt haben: SELECT?inst WHERE { ? inst ex: action_nb? -Wert. FILTER (? Wert <80) FILTER {? Inst es: Typ "Tri"} } aber es sagt mir, dass es missgebildete Abfrage ist – zaky2016

Verwandte Themen