Семантическая паутина: Учебное руководство на RDF dev

Существует только один способ стереть универсальную оболочку, создать поле, в котором точно указано, какой тип должен быть внутри, очевидно, это подразумевает небольшое снижение производительности, но гарантирует безопасность типов. Стоит ли оно того? Вероятно, нет.

class AWrapper<T extends A> {
    T a;
    Class<? super T> tClass; //new
    //Class<T> tClass; //or like this if exact match is needed

    AWrapper(T a, Class<? super T> tClass) { //edited
    //AWrapper(T a, Class<T> tClass) { //or like this if exact match is needed
        if (a.getClass().isInstance(tClass)) { //new
        //if (a.getClass().equals(tClass)){ //or like this if exact match is needed
            throw new ClassCastException("Object being wrapped is not of good type, the cause and solution is simply a programmer declared this generic type of an uncompatible type, this exception is designed to reduce runtime ClassCastExceptions by throwing them not at compiletime(impossible) but as soon as possible"); //new
        }
        this.a = a;
        this.tClass = tClass; //new
    }

    AWrapper(boolean b, Class<T> tClass) { //edited
        this((T) findObjectStupid(b), tClass); //edited
    }

    public T getA() {
        return a;
    }
}

<T extends A> T findObjectStupid(boolean b) {
    if (b) {
        return (T) new B1();
    } else {
        return (T) new B2();
    }
}

void main() {
    AWrapper<B1> rightWrapper = new AWrapper<>(true, B1.class); //edited
    AWrapper<B1> wrongWrapper = new AWrapper<>(false, B1.class);  //edited, now this throws exception just like we hoped

    B1 rightObject = rightWrapper.getA();
    B1 wrongObject = wrongWrapper.getA(); //never gets here
}

В приведенном выше коде класс сохраняется, так что позже объект T можно переназначить, но если присвоение выполняется только один раз в конструкторе, тогда строка Class<? super T> tClass; может быть полностью удалена. Удаляя эту строку, очевидно, все типы безопасности без снижения производительности (кроме фактического оператора if).

6
задан Kapil 22 April 2009 в 09:39
поделиться

4 ответа

Поначалу это действительно легко спутать, но в конечном итоге достаточно просто. Мне понравилось это видеоурок UMBC equity по RDFa, который начинается с объяснения RDF, дает вам удобную для восприятия нотацию для справки (N3), а затем показывает, как поместить RDF в обычные веб-страницы с помощью атрибутов RDFa.

Я также начал публиковать свой собственный RDFa о музыкальных событиях и нашел дистиллятор RDFa удобным для перевода моего RDFa в альтернативные синтаксисы (их много), чтобы я мог проверьте мою работу.

Если RDFa подходит для вашего варианта использования, то посмотрите вики-сайт RDFa.info для и обзора распространенных ошибок . Даже в MySpace некоторые из них были неверными.

Следует отметить, что RDFa - не единственный способ опубликовать RDF, но он самый потрясающий: -)

4
ответ дан 17 December 2019 в 02:33
поделиться

The most known API for handling a set of semantic triples (subject,predicate, value) is called Jena: see http://jena.sourceforge.net/. There is a simple tutorial where you'll leran to manipulate a simple triple (RDF) store.

Start with this you'll then, later, learn RDFS/OWL (the ontology stuff)

1
ответ дан 17 December 2019 в 02:33
поделиться

I recommend reading an introduction about semantic web technologies such as link text. Then, you could get down to examining semantic web tools out there. A comprehensive list of these tools could be found at link text.

1
ответ дан 17 December 2019 в 02:33
поделиться

API RDF для .NET см. В http://razor.occams.info/code/semweb/

0
ответ дан 17 December 2019 в 02:33
поделиться