2013-05-24 4 views
1

Я сейчас возился с Йеной, пытаясь создать правила, чтобы добавить к моему универсальному аргументу. Я создал следующее простое правило:Jena Custom Rules with Built-ins

[rule1: (?x ?rdf:type ?y),(?y rdfs:subClassOf ?z)-> (?x rdfs:type ?z)] 

Это прекрасно работает и срабатывает правильно, давая мне все, что я ожидаю. После этого я хотел назначить временную метку ?x, чтобы я знал, когда пришел вывод, я хотел использовать встроенную команду Now следующим образом.

[rule1: (?x ?rdf:type ?y),(?y rdfs:subClassOf ?z),now(?x)-> (?x rdfs:type ?z)] 

К сожалению, это не работает, он и не выдаст ошибку, она просто не кажется, чтобы связать любое значение времени для ?x, а также, кажется, чтобы предотвратить правило от увольнения правильно, так как в первом случае. Онтология, которую я использую, приведена ниже. Есть идеи?

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
     xmlns:owl="http://www.w3.org/2002/07/owl#"> 
    <owl:Class rdf:about="livingthing"></owl:Class> 
    <owl:Class rdf:about="Human"> 
    <rdfs:subClassOf rdf:resource="livingthing"/> 
    </owl:Class> 
    <rdf:Description rdf:about="john"> 
    <rdf:type rdf:resource="Human"/> 
    </rdf:Description> 
</rdf:RDF> 

ответ

1

Согласно javadoc, Now будет «Свяжите первый ARG к текущему времени даты в текущей локали и часового пояса.» Я не пробовал использовать Now, но я бы ожидать, что «текущая дата время в текущем локали и часовом поясе "- это своего рода литерал RDF (возможно, дата или дата-время)? Литералы не могут быть субъектами троек в RDF. Для правила

[rule1: (?x ?rdf:type ?y),(?y rdfs:subClassOf ?z),now(?x) -> (?x rdfs:type ?z)] 

в соответствии с графиком, переменная ?x будет привязана к дате буквального, скажем, "2013-05-24" (но, как я уже говорил, я не знаю точно, что Now будет производить), но не может любые совпадения для (?x rdf:type ?y), потому что они имели бы форму "2013-05-24" rdf:type ?y, и троек этой формы не может быть. Это означает, что правило не может срабатывать.

Если вы хотите добавить метку к чему-то, вы, вероятно, хотите n-ary relation, так что вы на самом деле представляющие (или представляющие, в дополнение к ?x rdf:type ?z) с соотношением inferredSubclassRule (? Супер,? К югу,? Время), который может быть представлен в RDF пустым узлом:

[] a :inferredSubclassRule ; 
    :hasSuperClass ?super ; 
    :hasSubClass ?sub ; 
    :hasTimestamp ?time . 
+0

Спасибо, имеет смысл. Мне кажется, что я считаю, что отношения с n-ary я ищу. – Colin

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

  • Нет связанных вопросов^_^